独闷闷网

标题: 数码管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=10=0x7f;wei=0;break;
case 1:duan=1;i++0=ledbuff[1]=ledchar[1];duan=0;wei=10=0xbf;wei=0;break;
case 2:duan=1;i++0=ledbuff[2]=ledchar[2];duan=0;wei=10=0xdf;wei=0;break;
case 3:duan=1;i++0=ledbuff[3]=ledchar[3];duan=0;wei=10=0xef;wei=0;break;
case 4:duan=1;i++0=ledbuff[4]=ledchar[4];duan=0;wei=10=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)

QQ图片20140915221825.png

作者: 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=00=0x7f;wei=1;wei=00= ledchar[ledbuff[0]];duan=1;duan=0;break;




欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2