找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于51单片机的数码管显示时钟程序+仿真

[复制链接]
跳转到指定楼层
楼主
基于51单片机的时钟程序和仿真图


单片机源程序如下:
  1. #include"reg51.h"

  2. #define  uint  unsigned int
  3. sbit    key=P1^0;

  4. unsigned int addNum;
  5. unsigned char Nums,Numm,Numh;  
  6. #define SEGNUM P0
  7. #define WEI P2            
  8. unsigned char code table[]={0x3f ,0x06 ,0x5b ,0x4f ,0x66 ,0x6d ,
  9.                             0x7d ,0x07 ,0x7f ,0x6f ,0x77 ,0x7c ,
  10.                                                         0x39 ,0x5e ,0x79 ,0x71 ,0x00};
  11. void delay(unsigned int num)
  12.   {
  13.     unsigned i,j;
  14.         for(i=num;i>0;i--)
  15.             for(j=120;j>0;j--);
  16.   }

  17. void main()
  18. {
  19.     TMOD=0X02;
  20.         TL0=TH0=6;
  21.         ET0=1;        //中断允许位
  22.         EA=1;
  23.         TR0=1;        //TR0置1,开启计时
  24.         IT0=1;  //中断0的中断方式
  25.         EX0=1;        //开通允许位
  26.         IT1=1;        //中断方式
  27.         EX1=1;
  28.         TR0=1;          //启动
  29.         while(1)
  30.     {
  31.                           
  32.                 if(!key)
  33.         {  
  34.               delay(10) ;
  35.               if(!key)
  36.               {
  37.             Numh++;  
  38.                         while(!key) ;
  39.               }
  40.             }

  41.         WEI=0Xef;
  42.                 SEGNUM=table[Nums/10];  //对10取整
  43.                 delay(5);
  44.              WEI=0Xdf;
  45.                 SEGNUM=table[Nums%10];
  46.                 delay(5);

  47.        WEI=0xfb;
  48.            SEGNUM=table[Numm/10];               
  49.        delay(5);
  50.        WEI=0xf7;
  51.        SEGNUM=table[Numm%10];
  52.            delay(5);
  53.            if(Numm==60)
  54.            {
  55.                    Numm=0;
  56.            }

  57.        WEI=0xfe;
  58.            SEGNUM=table[Numh/10];               
  59.        delay(5);
  60.        WEI=0xfd;
  61.        SEGNUM=table[Numh%10];
  62.            delay(5);
  63.                
  64.          }
  65. }
  66. void timer0() interrupt 1
  67. {
  68.     addNum++;
  69.         if(addNum==4000)
  70.         {
  71.         Nums++;
  72.         addNum=0;   
  73.         }
  74.         if(Nums==60)
  75.         {
  76.         Numm++;
  77.         Nums=0;   
  78.         }
  79.         
  80.         if(Numm==60)
  81.         {
  82.         Numh++;
  83.         Numm=0;
  84.          }
  85.                   
  86.                    if(Numh==24)
  87.             {
  88.             Numh=0;   
  89.             }
  90. }
  91. void ex0()  interrupt  0        //外部中断0

  92. {
  93.     Nums++;                                //表示外部中断来时的动作   (外部中断1)
  94. }         
  95. void ex1()  interrupt  2        
  96. {
  97.     Numm++;                                
  98. }
复制代码

所有资料51hei提供下载:
sz.zip (59.79 KB, 下载次数: 59)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:599466 发表于 2019-8-12 18:18 | 只看该作者
有错误啊
回复

使用道具 举报

板凳
ID:632960 发表于 2019-12-4 09:35 | 只看该作者
想要下载资料啊
回复

使用道具 举报

地板
ID:659786 发表于 2019-12-9 16:54 来自手机 | 只看该作者
有输液系统监控的嘛?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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