3位共阳数码管显示。。。不知道哪里出错了。。。主要目...5
时间:10-02
整理:3721RD
点击:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1=P2^0;
sbit D2=P2^1;
sbit D3=P2^2;
uchar code designP1[]={
0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8, // 4, 5, 6, 7
0x80,0x90}; // 8, 9
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i <200; i++);
}
}
main()//主函数
{
unsigned char i;
unsigned int m,n,x,ii;
i=23.5;
ii=i*10;
while(1)
if(ii>10 && ii<100) //如果温度在0到10度之间直接给七段数码管赋值
{
x=ii%10;//给第一个数码管赋值
D1=1;
D2=0;
D3=0;
P0=designP1[x+1];
m=ii/10; //再给第二个数码管赋值
D1=0;
D2=1;
D3=0;
P0=designP1[m+1];
delayms(1);
}
else//如果温度大于10度
{
x=(ii%100)%10;//先给第一个七段数码管赋值
D1=1;
D2=0;
D3=0;
P0=designP1[x+1];
m=(ii%100)/10;//再给第二个七段数码管赋值
D1=0;
D2=1;
D3=0;
P0=designP1[m+1]|0x80;
n=ii/100;//然后给第三个七段数码管赋值
D1=0;
D2=0;
D3=1;
P0=designP1[n+1];
delayms(1);
}
}
这个程序中的23.5显示不出来。是乱码。
还没学到单片机驱动数码管
1,七段数码管显示每选择一位显示以后都必须加延时,而你只是在最后一位显示送完后加延时,2,你如果想点亮小数点,因为你是用的共阳极数码管,这个”P0=designP1[m+1]|0x80“不应该用或而应该用与;3,还有你上传的程序,while(1)后面没有{},这个不知道会出现什么问题呢?
楼上说了我想说的