为什么我的数码管是一位一位显示的,求大佬帮忙,我是逻辑哪里错误了吗?

发布于 2022-09-11 23:22:54 字数 2119 浏览 23 评论 0

#include<reg52.h>
#define uint  unsigned int
#define uchar unsigned char
char code map[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};
//共阴数码管段位显示
sbit duan=P0^0;           //段显示寄存器位
sbit wei=P0^1;             //选择数码管位
sbit shiwei=P1^0;         //时位调整
sbit fenwei=P1^1;           //分位调整
sbit miaowei=P1^2;             //秒位调整



unsigned int t;
uchar shige,shi,fenge,fen,miaoge,miao;

void delay(uint t)
{
    int i,j;
    for(i=t;i>0;i++)
    {
        for(j=30;j>0;j--);
        }    
}


void main()
{
    P1=0x00;       
    duan=1;
    duan=0;
    P1=0xff;
    wei=1;
    wei=0;
    //数码管初始化
    TH0=(65536-50000)/256;
    TH1=(65536-50000)%256;
    TMOD=0x01;
    TR0=1;
    ET0=1;
    EA=1;
    //计时中断设置,选择定时模式0,TR0置1,开中断
    while(1)//扫描按键
    {
    display(shige,shi,fenge,fen,miaoge,miao);    
    };
    shige=shi/10;
    fenge=fen/10;
    miaoge=miao/10;
    display(shige,shi,fenge,fen,miaoge,miao);

}
void time interrupt 1  //中断正常计时
{
    int num;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    num++;
    if(num==20)
    {
        miao++;
        num=0;
        if(miao==60)
        {
            fen++;
            miao=0;
            if(fen==60)
            {
                shi++;
                fen=0;
                if(shi==0)
                {s=0;}
                }
            }
        }
}
 void display(uchar a0,uchar a1,uchar a2,uchar a3,uchar a4,uchar a5)
 {
     P1=map[a0];
    duan=1;
    duan=0;
    P1=0x01;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
    P1=map[a1];
    duan=1;
    duan=0;
    P1=0x02;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
     P1=map[a2];
    duan=1;
    duan=0;
    P1=0x04;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
     P1=map[a3];
    duan=1;
    duan=0;
    P1=0x08;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
     P1=map[a4];
    duan=1;
    duan=0;
    P1=0x10;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
     P1=map[a5];
    duan=1;
    duan=0;
    P1=0x20;
    wei=1;
    wei=0;
    delay(10);
    delay(5);
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文