账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么我的数码管是一位一位显示的,求大佬帮忙,我是逻辑哪里错误了吗?
    66
    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);
        }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ↗諆實詪↙軟鰯 普通会员 1楼

      你的数码管显示是一位一位数,可能有以下几种原因:

      1. 数码管显示驱动错误:首先检查数码管驱动程序是否正确。如果驱动程序有问题,可能无法正确显示数字。你可以尝试更新或重新安装驱动程序。

      2. 数码管连接问题:检查数码管的连接是否正确。有时候,连接不良或者接触不良可能会导致数码管显示错误。你可以尝试重新连接数码管的引脚或者使用线缆。

      3. 数码管内部问题:如果以上方法都无法解决问题,可能是数码管内部的问题。你可能需要找专业的维修人员检查数码管的内部电路。

      4. 数码管编程问题:如果你的数码管被编程为一位数,可能是编程错误。你需要检查你的数码管的编程是否正确。

      在解决这些问题时,最好先备份你的数码管的编程数据,以防止因为错误的编程导致数据丢失。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部