munuc_w 发表于 2021-11-5 12:31
位和段都是如何驱动的?没有硬件电路,看不出什么。
#define uchar unsigned char
#define FLASH_FREQ 100
sbit KEY1 = P1^4; //定义KEY1 分加1
sbit KEY2 = P1^5; //定义KEY2 秒加1
#define COM1_ON (P2=0x01)
#define COM2_ON (P2=0x02)
#define COM3_ON (P2=0x04)
#define COM4_ON (P2=0x08)
#define COMS_OFF (P2=0x00) /*数码管全灭宏定义*/
#define SEG_PORT (P0) /*段码数据输出端口*/
uchar code LED_Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳极,
#define DISPLAY_BIT 4 //数码管显示位数
uchar DisBuff[DISPLAY_BIT]; //显示缓冲区
bit DisDecemal=0;//是否显示小数点
uchar shi=11,fen=59,miao=49;
void delay(uchar ms)//1ms延时,12MHz
{
uchar i,j;
for(i=ms;i>0;i--)
for(j=122;j>0;j--);
}
void LED_DisplayTimer(uchar LED1,uchar LED2,uchar LED3,uchar LED4)
{
DisBuff[0]=LED_Tab[LED1];
DisBuff[1]=LED_Tab[LED2];
DisBuff[2]=LED_Tab[LED3];
DisBuff[3]=LED_Tab[LED4];
/**************小数点闪烁在这里控制*****/
if(DisDecemal==1)
DisBuff[1]&=0x7f; //点亮小数点
/**************************************/
}
void |