慕滄sir 2022-12-30 21:17 采纳率: 66.7%
浏览 36
已结题

如何使数码管从0.0显示到1,再从1显示到9999

51单片机的板子,段端是p0,位端是p2,一开始用的这个代码但是没反应


#include<REGX52.H>

#define uint unsigned int
#define uchar unsigned char
uchar a[]={0x05,0x7d,0x46,0x54,0x3c,0x94,0x84,0x5d,0x04,0x14};//0-9段端口P0
uchar b[]={0xf7,0xef,0xdf,0xbf};//1-4位端口P2
uchar c[]={0x01,0x79,0x42,0x50,0x38,0x90,0x80,0x59,0x00,0x10};//小数点

uint i,w,a1,a2,a3,a4,a5;
void delayms(uint xms);
void display();//显示
void math(uint w);

void delayms(uint xms)
{
    uint i,j;
    for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}
void math(uint w)
{
    if(w>1)
    {
        a1=w/1000;//千位
        a2=w%1000/100;//百位
        a3=w%100/10;//十位
        a4=w%10;//个位
    }
  else
    {
        a5= (uint)w%10;
    }
}
void display()
{
    
    if(a1>0)
    {
        
        P2=b[0];
        P0=a[a1];
        delayms(50);
        P0=0xff;
        
        P2=b[1];
        P0=a[a2];
        delayms(50);
        P0=0xff;
        
        P2=b[2];
        P0=a[a3];
        delayms(50);
        P0=0xff;
        
        P2=b[3];
        P0=a[a4];
        delayms(50);
        P0=0xff;
        
    }
    else 
    {
        if(a2>0)
        {
            P2=b[1];
        P0=a[a2];
        delayms(50);
        P0=0xff;
            
            P2=b[2];
        P0=a[a3];
        delayms(50);
        P0=0xff;
            
        }
        else
        {
            if(a3>0)
            {
                P2=b[2];
        P0=a[a3];
        delayms(50);
        P0=0xff;
            
        }
        else
        {
            if(a5>0)
            {
                  P2=b[0];
              P0=c[0];
              delayms(50);
              P0=0xff;
                
                  P2=b[1];
              P0=a[a5];
              delayms(50);
              P0=0xff;
            }
            else
            {
            P2=b[3];
         P0=a[a4];
         delayms(50);
         P0=0xff;
        }
    }
}
    }
}
  • 写回答

2条回答 默认 最新

  • Flashang_sg 2023-01-01 23:41
    关注

    單片機其他人比較難幫你除錯。
    可以考慮
    1。先做簡單的 void display( int number ) 顯示固定數字,例如 0
    2。逐漸重複(1)做好 0.0,1,0--9,10-99, 100-199, 1000, 9999 各種固定的數字。
    3。已經確定顯示沒問題之後,再用 迴路 loop / while 做其他效果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染