为什么我写的电子时钟程序烧进去后就只是很快的乱码显示一下就不显示了呢

2019-03-24 17:43发布



本人菜鸟一只,前一段时间突然想起用6位数码管做一个显示秒、分、钟的一个简单的电子时钟,结果弄了很久也没弄出来。现在是程序烧进去后就只是很快的乱码显示一下就不显示了。查了很久也没查出原因。
麻烦各位大侠帮我看看我的是程序哪里出了问题:

#include<reg52.h>
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;

uchar miao, feng, zhong, i ,zg,zs,fg,fs,mg,ms;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

void delay(uchar j,uchar k)
{
for(j=100;j>0;j--)
        for(k=125;k>0;k--);
}
        
void display(uchar zg,uchar zs,uchar fg,uchar fs,uchar mg,uchar ms)         

        {
   duan=1;
         P0=table[zg];   //钟个位显示
         duan=0;
         
         wei=1;
         P0=0xfd;       //第一个数码管亮
         wei=0;
         delay();
               
         duan=1;
         P0=table[zs];  //钟十位显示
         duan=0;
         
         wei=1;
         P0=0xfe;   //第二个数码管亮
         wei=0;
         delay();
        
        //
         duan=1;
         P0=table[fg];   //分个位显示
         duan=0;
         
         wei=1;
         P0=0xf7;      //第三个数码管亮
         wei=0;
         delay();
               
         duan=1;
         P0=table[fs];  //分十位显示
         duan=0;
         
         wei=1;
         P0=0xfb;      //第四个数码管亮
         wei=0;
         delay();
               
        
        //
         duan=1;
         P0=table[mg];   //秒个位显示
         duan=0;
         
         wei=1;
         P0=0xdf;     //第五个数码管亮
         wei=0;
         delay();


         duan=1;
         P0=table[ms];  //秒十位显示
         duan=0;
         
         wei=1;
         P0=0xef;   //第六个数码管亮
         wei=0;
         delay();
}

        void zhongduan()interrupt 1
{
  TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        i++;
        if(i==20)
{miao++;
        i=0;
        }
}


void mian()

{
  miao=6;
        feng=7;
        zhong=12;

        TMOD=0x01;
        TH0=(65536-46080)/256;//设50毫秒一次
        TL0=(65536-46080)%256;
        
        EA=1;
        ET0=1;
        TR0=1;
               
                while(1)
        {        
        if(miao==60)   //秒逢60进1
        {miao=0;        feng++;
        if(feng==60)
                {feng=0; zhong++;
        if(zhong==24)
        {zhong=0;}
}
                }
        
        mg=miao%10;   //秒个位
        ms=miao/10;   //秒十位
        fg=feng%10;   //分个位
        fs=feng/10;   //分十位
        zg=zhong%10;  //钟个位
        zs=zhong/10;  //钟十位
        display(zg,zs,fg,fs,mg,ms);
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
suoma
1楼-- · 2019-03-24 23:49
           供电原因?
16816
2楼-- · 2019-03-25 02:36
不明白,为什么会是供电原因呢?我开发板上直接连的电脑USB接口啊
ienglgge
3楼-- · 2019-03-25 07:57
 精彩回答 2  元偷偷看……
16816
4楼-- · 2019-03-25 08:36
ienglgge 发表于 2016-3-31 20:39
程序比较奇怪。比如,void delay(uchar j,uchar k)
{
for(j=100;j>0;j--)
        for(k=125;k>0;k--);
...

听你这么一说,感觉是说得对,我再查查,谢谢啦
未来就在脚下
5楼-- · 2019-03-25 14:12
你的那好像没有消影的那段程序
未来就在脚下
6楼-- · 2019-03-25 19:16
 精彩回答 2  元偷偷看……

一周热门 更多>