数码管0~99999999计数
#include<reg52.h>#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar codeledchar[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
uchar ledbuff= {0xff,0xff,0xff,0xff,0xff,0xff} ;
uchar i=0;
unsigned int cnt=0;
void main()
{
unsigned long sec=0;
EA=1;
TMOD=0x01;
TH1=0xfc;
TL1=0x67;
ET1=1;
TR1=1;
while(1)
{
if(cnt>=1000)
{
cnt=0;
sec++;
}
ledbuff=ledchar;
ledbuff=ledchar;
ledbuff=ledchar;
ledbuff=ledchar;
ledbuff=ledchar;
ledbuff=ledchar;
}
}
void interruptTimer() interrupt 1
{
TH1=0xfc;
TL1=0x67;
cnt++;
P0=0xff;
switch(i)
{
case 0:duan=1;i++;P0=ledbuff=ledchar;duan=0;wei=1;P0=0x7f;wei=0;break;
case 1:duan=1;i++;P0=ledbuff=ledchar;duan=0;wei=1;P0=0xbf;wei=0;break;
case 2:duan=1;i++;P0=ledbuff=ledchar;duan=0;wei=1;P0=0xdf;wei=0;break;
case 3:duan=1;i++;P0=ledbuff=ledchar;duan=0;wei=1;P0=0xef;wei=0;break;
case 4:duan=1;i++;P0=ledbuff=ledchar;duan=0;wei=1;P0=0xf7;wei=0;break;
case 5:duan=1;i=0;P0=ledbuff=ledchar;duan=0;wei=1;P0=0xfb;wei=0;break;
default:break;
}
}
动态扫描部分不对 没有实现功能
对不起。这类问题我也不懂。你再自己仔细想想办法。 伸手党 没有延时,数码管是不是一片都亮呀 你用的时T1中断,并且是方式0,你看看高低位值是多少。还有就是case后面的语句书写可对。case 0:
P0=0xff;duan=1;duan=0;P0=0x7f;wei=1;wei=0;P0= ledchar];duan=1;duan=0;break;
页:
[1]