赞助论坛
  • 2773阅读
  • 0回复

本人单片机新手,求解用单片机制作数码时钟的程序问题,望不吝赐教 [复制链接]

楼层直达
a88mm  
发帖
3
精华
0
金币
23
威望
0
贡献
0
好评
0
注册
2012-06-27
楼主    a88mm 发表于: 2012-09-25 15:54:01 
[font=黑体]请输入要设置字体的文字[/font][size=3]请输入要设置字号的文字[/size][color=orange]请输入要设置色彩的文字[/color]
本人一直想制作个数码发光管的数字时钟,我试过四段数码管都点亮,但是一旦加上计时和各位的控制程序,数码管就只有一个亮,而且,数值显示也不对,不知道是驱动问题,还是软件问题,求解,如有正确代码给我,本人不胜感激,最好c语言版,谢谢!!!
代码如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,hh;
uint min,tt,a;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main()
{
   num=0;
   hh=0;
   min=0;
   tt=0;
   a=0;
   TMOD=0x11;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
  EA=1;
   ET0=1;
   TR0=1;
   while(1)
   {
      P2=0x02;
       P1=table[hh/10];
       for(a=50000;a<0;a--);
       P2=0x04;
       P1=table[hh%10];
       for(a=50000;a<0;a--);
       P2=0x08;
       P1=table[(min%60)/10];
       for(a=50000;a<0;a--);
       P2=0x10;
       P1=table[(min%60)%10];
       for(a=50000;a<0;a--);
       min=tt/60;
       hh=tt/3600;
       if(num==20)
       { num=0;
        tt++;
       }
       if(min==720){
        min=0;
       }
       if(tt==42300){
        tt=0;
       }
       if(hh==12){
        hh=0;
       }
   }
}
void time() interrupt 1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   num++;
}