找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1051|回复: 0
收起左侧

单片机动态数码管显示_KeyInterrupt_模块

[复制链接]
ID:413798 发表于 2018-10-23 00:31 | 显示全部楼层 |阅读模式
51单片机,动态数码管的程序

单片机源程序如下:
  1.         #include <at89x52.h>
  2.         #include "DongTaiXianShi.h"
  3.         #include "KeyInterrupt.h"
  4.         unsigned char data display_buffer[8];
  5.         unsigned char KeyValue;

  6. void DisplayData(unsigned int d)
  7. {
  8.         unsigned char ge,shi,bai,qian,wang;
  9.         display_buffer[7]=16;                                //显示寄存器器中置显示内容
  10.         display_buffer[6]=16;
  11.         display_buffer[5]=16;
  12.         wang=d/10000;
  13.         qian=(d%10000)/1000;
  14.         bai=(d%1000)/100;
  15.         shi=(d%100)/10;
  16.         ge=d%10;       
  17.         if(wang!=0)
  18.         {
  19.                 display_buffer[4]=wang;
  20.                 display_buffer[3]=qian;
  21.                 display_buffer[2]=bai;
  22.                 display_buffer[1]=shi;
  23.                 display_buffer[0]=ge;
  24.         }
  25.         else
  26.         {
  27.                 display_buffer[4]=16;
  28.                 if(qian!=0)
  29.                 {               
  30.                         display_buffer[3]=qian;
  31.                         display_buffer[2]=bai;
  32.                         display_buffer[1]=shi;
  33.                         display_buffer[0]=ge;               
  34.                 }
  35.                 else
  36.                 {
  37.                         display_buffer[3]=16;
  38.                         if(bai!=0)
  39.                         {
  40.                                 display_buffer[2]=bai;
  41.                                 display_buffer[1]=shi;
  42.                                 display_buffer[0]=ge;
  43.                         }
  44.                         else
  45.                         {
  46.                                 display_buffer[2]=16;
  47.                                 if(shi!=0)
  48.                                 {
  49.                                         display_buffer[1]=shi;
  50.                                         display_buffer[0]=ge;
  51.                                 }
  52.                                 else
  53.                                 {
  54.                                         display_buffer[1]=16;
  55.                                         display_buffer[0]=ge;
  56.                                 }
  57.                         }
  58.                 }
  59.         }
  60. }       

  61. void main(void)     
  62. {              
  63.         unsigned char x=0xED,y=0x5A,OldKeyValue;
  64.         unsigned int z;
  65.         OldKeyValue=KeyValue;
  66.         DongTaiXianShi_init();
  67.         KeyInterrupt_init();
  68.         while(1)
  69.                 {
  70.                         PCON=0x01;                                                                //待机,定时到,在TC0中断服务程序中完成动态数码管显示
  71.                         if(KeyValue!=OldKeyValue)        //如果有键按下,则执行按键值处理程序
  72.                         {
  73.                                 switch(KeyValue)
  74.                                 {
  75.                                         case 0:{z=x+y; break;}
  76.                                         case 1:{z=x-y; break;}
  77.                                         case 2:{z=x*y; break;}
  78.                                         case 3:{z=x/y; break;}
  79.                                         default: break;
  80.                                 }
  81.                                 DisplayData(z);
  82.                                 OldKeyValue=KeyValue;
  83.                         }
  84.                 }
  85. }
复制代码

所有资料51hei提供下载:
动态数码管显示_KeyInterrupt_模块.zip (71.77 KB, 下载次数: 6)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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