哎!自己学真累。简单程序害我调了一个下午。
终于完成了。程序后面写写出的错误
#include
#define uchar unsigned char
uchar wan,qian,bai,shi,ge,yu,pan,p;
long zhi;
uchar code led[]=
{0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09,0xfe};
void xian();
void init();
void delay(uchar z);
void main()
{
init();//初始化子程序
while(1)
{
wan=zhi/100000;
qian=zhi%100000/10000;
bai=zhi%100000%10000/1000;
shi=zhi%100000%10000%1000/100;
ge=zhi%100000%10000%1000%100/10;
yu=zhi%100000%10000%1000%100%10;
pan=6;//判断位赋初值
if(wan==0)
{ pan–;
if(qian==0)
{ pan–;
if(bai==0)
{ pan–;
if(shi==0)
{ pan–;
if(ge==0)
{
pan–;
}
}
}
}
}
xian(); //显示子程序
zhi++;
if(zhi>999999)
{
zhi=0;
};
}
}
void xian()
{
if(pan==6) //模式6:有6位数需要显示,省略最后2位
{
P2=0X08;
P0=led[wan];
delay(p);
P2=0X04;
P0=led[qian];
delay(20);
P2=0X02;
P0=led[bai];
delay(20);
P0=led[10]; //LED表格里定义的小数点显示在个位的数码管上(真正的个位给我写成余了)
delay(20);
P2=0X01;
P0=led[shi];
}
if(pan==5) //模式5,以下类推
{
P2=0X08;
P0=led[qian];
delay(p);
P2=0X04;
P0=led[bai];
delay(20);
P0=led[10]; //LED表格里定义的小数点显示在个位的数码管上(真正的个位给我写成余了)
delay(20);
P2=0X02;
P0=led[shi];
delay(20);
P2=0X01;
P0=led[ge];
}
if(pan==4)
{
P2=0X08;
P0=led[bai];
delay(p);
P0=led[10]; //LED表格里定义的小数点显示在个位的数码管上(真正的个位给我写成余了)
delay(p);
P2=0X04;
P0=led[shi];
delay(20);
P2=0X02;
P0=led[ge];
delay(20);
P2=0X01;
P0=led[yu];
}
if(pan==3)
{
P2=0X04;
P0=led[shi];
delay(20);
P2=0X02;
P0=led[ge];
delay(20);
P2=0X01;
P0=led[10];
delay(20);
P0=led[yu];
}
if(pan==2)
{
P2=0X02;
P0=led[ge];
delay(20);
P2=0X01;
P0=led[10];
delay(20);
P0=led[yu];
}
if(pan<=1)
{
P2=0X01;
P0=led[10];
delay(20);
P0=led[yu];
}
}
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}
void init()
{
P0=0xff; //关闭段码
P2=0x00; //关闭位选码
zhi=0;
p=10; //赋初值
}
以下是调试过程
1。数码管一定要延时。不然看不见
2。P0-P4口使用时P一定要大写。(原本不知道郭老师的视频教材没把这个当回事来讲)
3。if语句和它的大括号不能隔行,估计别的语句也不允许
4。if语句小括号后面打了分号则无效。该有的地方漏写分号也绝对不可以。
5。临时修改的参数一定要标记。正式用时改回来。
今天的文章单片机数码管小数点怎么显示_单片机数码管小数点怎么显示分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89164.html