找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1573|回复: 2
打印 上一主题 下一主题
收起左侧

单片机数码管当百位小于3在数码管上显示正常,大于3就显示错误 急,明天考试了

[复制链接]
跳转到指定楼层
楼主
  求大神解释一下为什么我这个数码管程序,当百位小于3在数码管上显示正常,大于3就显示错误
#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char
uchar code   tab[]={  

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

void  delay(uint ms)        ;
uchar  x;
void main()
{
        uchar bwei,swei,gwei,m;
        x=345;
        
while(1)
     {
                 bwei=x/100;swei=x/10%10;gwei=x%10;
                for( m=0;m<20;m++)                                   
          P2=0X01; P0=tab[bwei];        delay(10);          P0=0xff;
          P2=0X02; P0=tab[swei];        delay(10);          P0=0xff;
          P2=0X04; P0=tab[gwei];        delay(10);          P0=0xff;        }
     }

void  delay(uint ms)
         {uchar i,j;
         for(i=0;i<ms;i++)
         {
         for(j=0;j<120;j++)
         {;}
         }
         
         }


20180117183730.png (13.7 KB, 下载次数: 50)

这个是X输入为345的情况

这个是X输入为345的情况
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2018-1-18 06:43 | 只看该作者
变量x的数据类型错误:大于255要用uint  x;
回复

使用道具 举报

板凳
ID:7485 发表于 2018-1-18 18:22 | 只看该作者
当“uchar  x”时,x只能小于或等于0xff,用10进制表示就是255 。十进制的345=0x156,由于“uchar”是8位,所以就变成0x56了,0x56转换成10进制就是89 。

按楼上的说的“uint  x;”就没问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表