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

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

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

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

仿真电路图如下:

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2542540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存