找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3206|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+7219数码管模块显示正负浮点数 源程序

[复制链接]
跳转到指定楼层
楼主
7219数码管模实现显示正负浮点数字的程序。自动选择位数,末尾0不显示

下面是模块的电路图:
  1. void Show_num(double Num)
  2. {
  3.         unsigned char point = 0;
  4.         unsigned char negative = 0;//负数标记
  5.         unsigned char i = 0;
  6.         unsigned char n;
  7.         unsigned char tab[8]={0,0,0,0,0,0,0,0};
  8.         Write_Max7219(0x0f, 0x00);       //显示测试:1;测试结束,正常显示:0
  9.         if(Num < 0){
  10.                 Num = -Num;
  11.                 negative = 1; //负数
  12.         }
  13.         if(Num>=0 && Num<10){
  14.                 Num = Num * 10000000;
  15.                 point = 8;               
  16.         }else if(Num>=10 && Num<100){               
  17.                 Num = Num * 1000000;
  18.                 point = 7;
  19.         }else if(Num>=100 && Num<1000){
  20.                 Num = Num * 100000;
  21.                 point = 6;
  22.         }else if(Num>=1000 && Num<10000){
  23.                 Num = Num * 10000;
  24.                 point = 5;
  25.         }else if(Num>=10000 && Num<100000){
  26.                 Num = Num * 1000;
  27.                 point = 4;
  28.         }else if(Num>=100000 && Num<1000000){
  29.                 Num = Num * 100;
  30.                 point = 3;
  31.         }else if(Num>=1000000 && Num<10000000){
  32.                 Num = Num * 10;
  33.                 point = 2;
  34.         }else if(Num>=10000000 && Num<100000000){
  35.                 Num = Num * 1;
  36.                 point = 1;
  37.         }
  38.         
  39.         if(negative == 1){
  40.                 tab[7] = 10;
  41.                 for(i=7;i>0;i--){        
  42.                         n = Num/10000000;
  43.                         if(i == point-1){
  44.                                 tab[i-1] = n+0x80;                                
  45.                         }else
  46.                                 tab[i-1] = n;
  47.                         Num = (Num-(n*10000000))*10;                        
  48.                 }
  49.         }else{
  50.                 for(i=8;i>0;i--){        
  51.                         n = Num/10000000;
  52.                         if(i == point){
  53.                                 tab[i-1] = n+0x80;        
  54.                         }else
  55.                                 tab[i-1] = n;        
  56.                         Num = (Num-(n*10000000))*10;
  57.                 }
  58.         }
  59.         i=0;
  60.         while(1){               
  61.                 if(tab[i] == 0){
  62.                         tab[i] = 15;
  63.                         i++;
  64.                 }else{
  65.                         break;
  66.                 }        
  67.         }
  68.         for(i=8;i>0;i--){
  69.                 Write_Max7219(i,tab[i-1]);
  70.         }
  71. }
复制代码



main.rar

1.09 KB, 下载次数: 24, 下载积分: 黑币 -5

源代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表