找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机T0方式2实现简单时钟仿真,keil+protues实现

[复制链接]
跳转到指定楼层
楼主
T0方式2实现简单电子时钟仿真试验,keil+protues实现
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. //按4X4键盘的F键 进入设定状态
  2. //E D 键是前后移动键
  3. //C按键是调整数值按键
  4. #include "reg52.h"
  5. #define uchar unsigned char
  6. sbit key_h=P1^0;
  7. sbit key_m=P1^1;
  8. sbit key_s=P1^2;
  9. unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //段码表
  10. unsigned int h,m,s,counter;

  11. void delay1ms(unsigned int i)
  12. {
  13. unsigned char j;
  14. while(i--)
  15. {
  16.          for(j=0;j<125;j++)          //1ms基准延时程序
  17.          {
  18.           ;
  19.          }
  20. }  
  21. }
  22. void Display_h(unsigned char x)
  23. {           
  24.         P2=0xfb;        //P2.6引脚输出低电平,DS6点亮
  25.     P0=Tab[x/10];   //显示十位
  26.             delay1ms(5);
  27.          P2=0xff;

  28.     P2=0xf7;      //P2.7引脚输出低电平,DS7点亮
  29.     P0=Tab[x%10];  //显示个位
  30.     delay1ms(5);
  31.         P2=0xff;
  32. }
  33. void Display_m(unsigned char x)
  34. {           
  35.         P2=0xef;        //P2.6引脚输出低电平,DS6点亮
  36.     P0=Tab[x/10];   //显示十位
  37.             delay1ms(5);
  38.          P2=0xff;

  39.     P2=0xdf;      //P2.7引脚输出低电平,DS7点亮
  40.     P0=Tab[x%10];  //显示个位
  41.     delay1ms(5);
  42.         P2=0xff;
  43. }
  44.   void Display_s(unsigned char x)
  45. {           
  46.         P2=0xbf;        //P2.6引脚输出低电平,DS6点亮
  47.     P0=Tab[x/10];   //显示十位
  48.             delay1ms(5);
  49.          P2=0xff;

  50.     P2=0x7f;      //P2.7引脚输出低电平,DS7点亮
  51.     P0=Tab[x%10];  //显示个位
  52.     delay1ms(5);
  53.         P2=0xff;
  54. }

  55. /*********************初始化子程序**********************/
  56. void init()
  57. {
  58.   TMOD=0x01;
  59.   TH0=(65536-50000)/256;
  60.   TL0=(65536-50000)%256;
  61.   EA=1;
  62.   ET0=1;
  63.   TR0=1;
  64.   counter=0;
  65.   h=12;m=0;s=0;
  66. }

  67. /***************************按键调时间************************/
  68. void TZ_h()
  69. {
  70. h++;
  71. if(h>24)
  72. {
  73.          h=0;
  74. }
  75. while(key_h!=1);
  76. TR0=1;
  77. }
  78. void TZ_m()
  79. {
  80. m++;
  81. if(m>60)
  82. {
  83.          m=0;
  84. }
  85. while(key_m!=1);
  86. TR0=1;
  87. }
  88. void TZ_s()
  89. {
  90. s++;
  91. if(s>60)
  92. {
  93.          s=0;
  94. }
  95. while(key_s!=1);
  96. TR0=1;
  97. }

  98. /***************************主程序************************/

  99. void main(void)
  100. {
  101.   init();
  102.   while(1)
  103.   {
  104.            Display_h(h);
  105.         Display_m(m);
  106.         Display_s(s);

  107.         if(key_h==0)
  108.         delay1ms(20);
  109.         if(key_h==0)
  110.         {
  111.                 TR0=0;        
  112.                 TZ_h();
  113.         }
  114.         if(key_m==0)
  115.         delay1ms(20);
  116.         if(key_m==0)
  117.         {
  118.                 TR0=0;        
  119.                 TZ_m();
  120.         }
  121.         if(key_s==0)
  122.         delay1ms(20);
  123.         if(key_s==0)
  124.         {
  125.                 TR0=0;        
  126.                 TZ_s();
  127.         }
  128.    }
  129. }
  130. /*************************定时器0的中断**********************/
  131. void Time0() interrupt 1 using 2    //再次强调中断子程序执行时间越短越好
  132. {
  133.   TH0=(65536-50000)/256;
  134.   TL0=(65536-50000)%256;
  135.   counter++;
  136.   if(counter==20)
  137.   {
  138.     s++;
  139.     counter=0;
  140.           if(s==60)
  141.           {
  142.             m++;
  143.             s=0;
  144.               if(m==60)
  145.               {
  146.                h++;
  147.                m=0;
  148.                if(h==24)
  149.                 h=0;
  150.                }
  151.            }
  152.   }
  153. }
复制代码

所有资料51hei提供下载:
简单时钟显示实验.rar (51.09 KB, 下载次数: 40)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:704735 发表于 2020-4-25 21:56 | 只看该作者
很不错的程序和原理图。
回复

使用道具 举报

板凳
ID:856258 发表于 2020-12-7 20:14 | 只看该作者
很不错的原理图
回复

使用道具 举报

地板
ID:856258 发表于 2020-12-7 20:15 | 只看该作者
这个想法和创意不错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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