51proteus仿真:7段数码管显示小数

mac2022-06-30  93

51proteus仿真:7段数码管显示小数

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

具体说,显示个位和小数点后三位

数码管的显示一定要注意消隐的问题,每次显示数字之前要先关一次数码管。否则会出现显示混乱。

 

仿真电路图如下:

C程序如下:

 

#include<reg52.h>#include<intrins.h>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);    }

 }

 

 

转载于:https://www.cnblogs.com/proteus/archive/2011/10/27/2227075.html

相关资源:单片机怎么显示小数点?数码管小数点显示程序
最新回复(0)