基于51单片机实现数码管显示的proteus仿真设计

控制/MCU

1799人已加入

描述

这个51单片机的proteus仿真实现无符号浮点数的显示。

具体说,显示个位和小数点后三位数码管的显示一定要注意消隐的问题,每次显示数字之前要先关一次数码管。否则会出现显示混乱。

仿真电路图如下:

51单片机

C程序如下:

#include

#include

sbit duan=P3^0;

sbit wei=P3^1;

unsigned char code table[] = {

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(void)

{

unsigned char i,j;

for(i=0;i《10;i++)

for(j=0;j《110;j++);

}

void show6led(float num)

{

unsigned char i;

i=num;

duan=1;

P2=table[i]+0x80; //显示个位和小数点

duan=0;

P2=0xff; //先关闭led

wei=1;

P2=0xfb; //段选3

wei=0;

delay();

P2=0xff;

P3=0xff;//这两句非常重要,主要是清屏消隐

num=num-i;

num=num*10;

i=num;

duan=1;

P2=table[i];

duan=0;

P2=0xff;

wei=1;

P2=0xf7; //段选4,十分位

wei=0;

delay();

P2=0xff;

P3=0xff;

num=num-i;

num=num*10;

i=num;

duan=1;

P2=table[i];

duan=0;

P2=0xff;

wei=1;

P2=0xef; //段选5,百分位

wei=0;

delay();

P2=0xff;

P3=0xff;

num=num-i;

num=num*10;

i=num;

duan=1;

P2=table[i];

duan=0;

P2=0xff;

wei=1;

P2=0xdf; //段选6,千分位

wei=0;

delay();

P2=0xff;

P3=0xff;

}

main()

{

float number;

number=3.718;

while(1)

{

show6led(number);

}

}
来源;21ic

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分