找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机+74HC138 74HC245 9999倒数程序与Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg52.h>

  2. sbit ADDR0 =P1^0;
  3. sbit ADDR1 =P1^1;
  4. sbit ADDR2 =P1^2;
  5. sbit ADDR3 =P1^3;
  6. sbit ENLED =P1^4;

  7.   unsigned char code LedChar[] = {
  8.         0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
  9.         0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
  10.   };

  11.   unsigned char LedBuff[6] = {
  12.         
  13.         0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
  14.         };
  15.          unsigned char i = 0;
  16.          unsigned int cnt = 0;
  17.          unsigned char flagls = 0;
  18.         void main ()
  19.         {
  20.         
  21.          unsigned long sec = 999999;
  22.                 EA = 1;
  23.                 ENLED =0;
  24.                 ADDR3 =1;
  25.                 TMOD = 0x10;
  26.                 TH1 = 0xFC;
  27.                 TL1 = 0x67;
  28.                 TR1 = 1;
  29.                 ET1 = 1;
  30.                 while (1)
  31.                 {
  32.                  if (flagls == 1)
  33.                  {
  34.                    flagls = 0;
  35.                                 sec--;
  36.                                  LedBuff[0] = LedChar[sec%10];
  37.                         
  38.                                  LedBuff[1] = LedChar[sec/10%10];
  39.                           
  40.                                  LedBuff[2] = LedChar[sec/100%10];
  41.                           
  42.                                  LedBuff[3] = LedChar[sec/1000%10];
  43.                         
  44.                                  LedBuff[4] = LedChar[sec/10000%10];
  45.                         
  46.                                  LedBuff[5] = LedChar[sec/100000%10];
  47.                            if(sec <= 9)
  48.                 {
  49.                         LedBuff[1] = 0xff;LedBuff[2] = 0xff;LedBuff[3] = 0xff;LedBuff[4] = 0xff;LedBuff[5] = 0xff;
  50.                 }
  51.                 else if(sec <= 99)
  52.                 {
  53.                         LedBuff[2] = 0xff;LedBuff[3] = 0xff;LedBuff[4] = 0xff;LedBuff[5] = 0xff;
  54.                 }
  55.                 else if(sec <= 999)
  56.                 {
  57.                         LedBuff[3] = 0xff;LedBuff[4] = 0xff;LedBuff[5] = 0xff;
  58.                 }
  59.                 else if(sec <= 9999)
  60.                 {
  61.                         LedBuff[4] = 0xff;LedBuff[5] = 0xff;
  62.                 }
  63.                 else if(sec <= 99999)
  64.                 {
  65.                         LedBuff[5] = 0xff;
  66.                 }
  67.         }}}
  68.         void InterruptTimer1( )interrupt 3
  69.                          {
  70.                    TH1=0xFC;
  71.                          TL1=0x67;
  72.                          cnt++;
  73.                          if (cnt >= 1000)
  74.                          {
  75.                           cnt = 0;
  76.                                  flagls =1;
  77.                          }
  78.                          P0 = 0xFF;
  79.                          switch (i)
  80.                          {
  81.                            case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i++; P0 = LedBuff[0]; break;
  82.                                  case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i++; P0 = LedBuff[1]; break;
  83.                                  case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; i++; P0 = LedBuff[2]; break;
  84.                                  case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i++; P0 = LedBuff[3]; break;
  85.                                  case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i++; P0 = LedBuff[4]; break;
  86.                                  case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i = 0; P0 = LedBuff[5]; break;
  87.                                  default: break;
  88.                          }
  89.                  }
  90.                
  91.         
复制代码

Keil5代码与Proteus8.8仿真下载:
NEW7.zip (83.51 KB, 下载次数: 12)


评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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