1

在我的电路中,7 个段引脚位于不同的端口中,例如:Seg A 到 SegD(在 RA0 到 RA4)SegE(在 RF1 中)SegF(RG4)SegG(RG3)。我可以通过一一设置位来数 0 到 9。我需要计算 0-9999 但我无法存储值。我怎么能为我的规格做到这一点?

#include "mcc_generated_files/mcc.h"
#define DISP1 RD7
#define DISP2 RD6
#define DISP3 RD5
#define DISP4 RD4
#define SEGA  RA0
#define SEGB  RA1
#define SEGC  RA2
#define SEGD  RA3
#define SEGE  RF1
#define SEGF  RG4
#define SEGG  RG3
void main(void)
{
    // initialize the device
    SYSTEM_Initialize();



  TRISD = 0x00; // Set All Pins To Be Output Pins
  PORTD = 0x00; // Initially Clear All The 8-Pins
  while(1)
  {
       SEGA=1;SEGB=1;SEGC=1;SEGD=1;SEGE=1;SEGF=1;SEGG=0;DISP4=1;//0
      __delay_ms(500);

          SEGA=0;SEGB=1;SEGC=1;SEGD=0;SEGE=0;SEGF=0;SEGG=0;DISP4=1;//1
      __delay_ms(500);

          SEGA=1;SEGB=1;SEGC=0;SEGD=1;SEGE=1;SEGF=0;SEGG=1;DISP4=1;//2
      __delay_ms(500);

      SEGA=1;SEGB=1;SEGC=1;SEGD=1;SEGE=0;SEGF=0;SEGG=1;DISP4=1;//3
      __delay_ms(500);

      SEGA=0;SEGB=1;SEGC=1;SEGD=0;SEGE=0;SEGF=1;SEGG=1;DISP4=1;//4
      __delay_ms(500);

      SEGA=1;SEGB=0;SEGC=1;SEGD=1;SEGE=0;SEGF=1;SEGG=1;DISP4=1;//5
      __delay_ms(500);

      SEGA=1;SEGB=0;SEGC=1;SEGD=1;SEGE=1;SEGF=1;SEGG=1;DISP4=1;//6
      __delay_ms(500);

      SEGA=1;SEGB=1;SEGC=1;SEGD=0;SEGE=0;SEGF=0;SEGG=0;DISP4=1;//7
      __delay_ms(500);
     SEGA=1;SEGB=1;SEGC=1;SEGD=1;SEGE=1;SEGF=1;SEGG=1;DISP4=1;//8
      __delay_ms(500);

      SEGA=1;SEGB=1;SEGC=1;SEGD=1;SEGE=0;SEGF=1;SEGG=1;DISP4=1;//9
      __delay_ms(500);


  }
4

1 回答 1

0

一些提示:

如果您想要 4 位数字,则必须多路复用您的显示器。

写一个表格,在其中定义每个数字:

const uint8_t LEDTable[10] = {0b00111111,   //led drive for 0
                              0b00000110,   //led drive for 1
                              ....
                              0b01101101};   //led drive for 9

在中断程序中进行多路复用。在中断中,您必须为每个数字进行输出: 几十
个 ...

每个数字的输出可能如下所示:

SEGA = (value & 0x01) ? 1:0;
SEGB = (value & 0x02) ? 1:0;
SEGC = (value & 0x04) ? 1:0;
SEGD = ...
于 2019-07-02T05:33:34.233 回答