慕滄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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)