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

发布者:SereneSunset最新更新时间:2017-01-10 来源: eefocus关键字:7段数码管  显示小数 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

 

仿真电路图如下:

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);
  
  }


 }


关键字:7段数码管  显示小数 引用地址:51proteus仿真:7段数码管显示小数

上一篇:51proteus仿真:adc0804实现模数转换
下一篇:51proteus仿真:生成方波、正弦波、锯齿波和三角波

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved