标题: 单片机电子时钟,数码管显示不全 [打印本页]

作者: czd175711    时间: 2019-7-17 16:02
标题: 单片机电子时钟,数码管显示不全
不知道为什么数码管显示不完全。

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay_ms(unsigned int);
uchar code xianshi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code weixuan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
int num=0;
int sec=22,secg=0,secs=0;
int min=5,ming=0,mins=0;
int hour=15,hourg=0,hours=0;
int i;
void zd1(){
         TMOD=0X01;
         TH0=(65536-50000)/256;   //TH0=(65536-50000)/256;
     TL0=(65536-50000)%256;   //TL0=(65536-50000)%256;
     ET0=1;
     TR0=1;


}

void main(){
   IT0=1;
   EX0=1;
   EA=1;
   IT1=1;
   EX1=1;
            zd1();
         
     while(1){           
                      secg=sec%10;
         secs=sec/10;
         ming=min%10;
         mins=min/10;
         hourg=hour%10;
         hours=hour/10;
           

   P0= xianshi[hours];
   P2=weixuan[0];
   delay_ms(5);
         P0= xianshi[hourg];
   P2=weixuan[1];
   delay_ms(5);
         P0= xianshi[mins];
   P2=weixuan[2];
   delay_ms(5);
         P0= xianshi[ming];
   P2=weixuan[3];
            delay_ms(5);  
          P0= xianshi[secs];
   P2=weixuan[4];
            delay_ms(5);
          P0= xianshi[secg];
   P2=weixuan[5];
            delay_ms(5);  
             }
}

void time0() interrupt 1{
          num++;
         TH0=(65536-50000)/256;   
     TL0=(65536-50000)%256;  
         if(num==20){
          num=0;
          sec++;
         }
          if(sec==60){
          sec=0;
          min++;
         
         }
         if(min==60){
         min=0;
         hour++;
         }
         if(hour==24){
                         hour=0;
         }
        
}

              void delay_ms(unsigned int dt)//延时函数
{
register unsigned char bt,ct;
for (;dt;dt--)
   for (ct=2;ct;ct--)
       for (bt=250;--bt;);
}

作者: 1339337425    时间: 2019-7-17 18:36
有可能 你用的共阳数码管 但是xianshi【】 用的共阴的段码
作者: angmall    时间: 2019-7-17 18:46
你这个数码管需要 消隐

   P0= xianshi[hours];
   P2=weixuan[0];
   delay_ms(5);
P0=0x00;  //消隐
   P0= xianshi[hourg];
   P2=weixuan[1];
   delay_ms(5);
P0=0x00;  //消隐




作者: 47okey    时间: 2019-7-17 23:11
数码管共阳共阴弄反,数码管显示的是605261吧。
作者: 47okey    时间: 2019-7-17 23:20
不是数码管用反。是代码没消隐 问题,如板凳所说。
作者: czd175711    时间: 2019-7-18 07:16
1339337425 发表于 2019-7-17 18:36
有可能 你用的共阳数码管 但是xianshi【】 用的共阴的段码

我用的应该是共阴的数码管,之前我逐个显示是没问题的
作者: czd175711    时间: 2019-7-18 07:24
angmall 发表于 2019-7-17 18:46
你这个数码管需要 消隐

   P0= xianshi[hours];

哇,,解决了,谢谢,但这个消隐不怎么看得懂,我的是共阴数码管如果p0=0x00不就都不显示吗?
作者: aatcs    时间: 2019-9-7 18:48
试试看能不能用
作者: 2890    时间: 2019-11-26 16:34
为什么下载不了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1