独闷闷网
标题:
数码管0~99999999计数
[打印本页]
作者:
sxz330967303
时间:
2014-9-15 22:18
标题:
数码管0~99999999计数
#include<reg52.h>
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
uchar code ledchar[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
uchar ledbuff[6]= {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[0]=ledchar[sec%10];
ledbuff[1]=ledchar[sec/10%10];
ledbuff[2]=ledchar[sec/100%10];
ledbuff[3]=ledchar[sec/1000%10];
ledbuff[4]=ledchar[sec/10000%10];
ledbuff[5]=ledchar[sec/100000%10];
}
}
void interruptTimer() interrupt 1
{
TH1=0xfc;
TL1=0x67;
cnt++;
P0=0xff;
switch(i)
{
case 0:duan=1;i++
0=ledbuff[0]=ledchar[0];duan=0;wei=1
0=0x7f;wei=0;break;
case 1:duan=1;i++
0=ledbuff[1]=ledchar[1];duan=0;wei=1
0=0xbf;wei=0;break;
case 2:duan=1;i++
0=ledbuff[2]=ledchar[2];duan=0;wei=1
0=0xdf;wei=0;break;
case 3:duan=1;i++
0=ledbuff[3]=ledchar[3];duan=0;wei=1
0=0xef;wei=0;break;
case 4:duan=1;i++
0=ledbuff[4]=ledchar[4];duan=0;wei=1
0=0xf7;wei=0;break;
case 5:duan=1;i=0;P0=ledbuff[5]=ledchar[5];duan=0;wei=1;P0=0xfb;wei=0;break;
default:break;
}
}
动态扫描部分不对 没有实现功能
QQ图片20140915221825.png
(40.07 KB, 下载次数: 262)
下载附件
保存到相册
2014-9-15 22:18 上传
作者:
jianhong_wu
时间:
2014-9-15 22:41
对不起。这类问题我也不懂。你再自己仔细想想办法。
作者:
黑夜之狼
时间:
2014-9-16 20:01
伸手党
作者:
trm999
时间:
2014-9-26 00:07
没有延时,数码管是不是一片都亮呀
作者:
hftsls
时间:
2014-9-29 16:36
你用的时T1中断,并且是方式0,你看看高低位值是多少。还有就是case后面的语句书写可对。case 0:
P0=0xff;duan=1;duan=0
0=0x7f;wei=1;wei=0
0= ledchar[ledbuff[0]];duan=1;duan=0;break;
欢迎光临 独闷闷网 (http://dumenmen.com/)
Powered by Discuz! X3.2