标题:
单片机数码管当百位小于3在数码管上显示正常,大于3就显示错误 急,明天考试了
[打印本页]
作者:
达人知命
时间:
2018-1-17 18:38
标题:
单片机数码管当百位小于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, 下载次数: 52)
下载附件
2018-1-17 18:37 上传
这个是X输入为345的情况
作者:
wulin
时间:
2018-1-18 06:43
变量x的数据类型错误:大于255要用uint x;
作者:
ahshmj
时间:
2018-1-18 18:22
当“uchar x”时,x只能小于或等于0xff,用10进制表示就是255 。十进制的345=0x156,由于“uchar”是8位,所以就变成0x56了,0x56转换成10进制就是89 。
按楼上的说的“uint x;”就没问题了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1