找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机定时器中断计时器程序(精确到00.01的秒表)

[复制链接]
跳转到指定楼层
楼主
ID:277731 发表于 2018-1-19 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
四位数码管原理图:


单片机源程序如下:
  1. /*************************************************************
  2. 标题:              定时器中断 精确到00.01的秒表
  3. 效果:              能清零重新开始,暂停,继续计时,能精确到0.01秒
  4. 作者:  皖绩小挺
  5. 说明:              使用12M晶振,四位数码管,3个按键
  6. ****************************************************************/
  7. #include<reg52.h>
  8. #define uint unsigned int
  9. #define uchar unsigned char

  10. uint temp,tt,qian,bai,shi,ge;

  11. sbit smg_q=P3^4;
  12. sbit smg_b=P3^5;
  13. sbit smg_s=P3^6;
  14. sbit smg_g=P3^7;
  15. sbit key1 = P3^2;            
  16. sbit key2 = P3^3;
  17. sbit key3 = P2^3;            


  18. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
  19.                                 0x92,0x82,0xf8,0x80,0x90};
  20. uchar code table1[]={0x40,0x79,0x24,0x30,0x19,
  21.                                 0x12,0x02,0x78,0x00,0x10};              //带小数点

  22. void keyscan();
  23. void display(uint shi,uint ge);
  24. void delay(uint z);
  25. void init();
  26. /**************************************************************
  27.                             主函数
  28. ******************************************************************/
  29. void main()
  30. {            
  31.               init();//初始化子程序
  32.               while(1)
  33.               {
  34.                            
  35.                             if(tt==1)
  36.                               {
  37.                                           tt=0;
  38.                                           temp++;
  39.                                           if(temp==10000)
  40.                                              {
  41.                                                                       temp=0;
  42.                                              }
  43.                                           qian=temp/1000;
  44.                                           bai=temp%1000/100;
  45.                                           shi=temp%100/10;
  46.                                           ge=temp%10;
  47.                               }
  48.                             keyscan();
  49.                             display(shi,ge);
  50.                            
  51.               }
  52. }
  53. /*********************************************************************
  54.                                                         延时
  55. ***********************************************************************/
  56. void delay(uint z)
  57. {
  58.               uint x,y;
  59.               for(x=z;x>0;x--)
  60.                             for(y=110;y>0;y--);
  61. }
  62. /*********************************************************************
  63.                                                         按键控制
  64. ***********************************************************************/
  65. void keyscan()
  66. {
  67.               if(key1==0)                //清零并重新开始计时
  68.               {
  69.                             temp=0;
  70.                             TR0=1;
  71.               }
  72.               if(key2==0)               //暂停计时
  73.               {
  74.                             TR0=0;
  75.               }
  76.               if(key3==0)              //继续计时
  77.               {
  78.                             TR0=1;
  79.               }
  80. }
  81. /*********************************************************************
  82.                                                         显示
  83. ***********************************************************************/
  84. void display(uint shi,uint ge)
  85. {
  86.         smg_q=0;
  87.                             P0=table[qian];
  88.                             delay(1);
  89.                             smg_q=1;
  90.                             P0=0xff;
  91.                            

  92.                             smg_b=0;
  93.                             P0=table1[bai];
  94.                             delay(1);
  95.                             smg_b=1;
  96.                             P0=0xff;
  97.                            
  98.                             smg_s=0;
  99.                             P0=table[shi];
  100.                             delay(1);
  101.                             smg_s=1;
  102.                             P0=0xff;

  103.                             smg_g=0;
  104.                             P0=table[ge];
  105.                             delay(1);
  106.                             smg_g=1;
  107.                             P0=0xff;
  108. }
  109. /*********************************************************************
  110.                                           初始化
  111. ***********************************************************************/
  112. void init()
  113. {            
  114.               smg_q=1;
  115.               smg_b=1;
  116.               smg_s=1;
  117.               smg_g=1;
  118.               temp=0;
  119.               TMOD=0x01;
  120.               TH0=(65536-10000)/256;
  121.               TL0=(65536-10000)%256;
  122.               EA=1;
  123.               ET0=1;
  124.               TR0=1;            
  125. }
  126. /*********************************************************************
  127.                                           中断
  128. ***********************************************************************/
  129. void t0() interrupt 1
  130. {
  131.               TH0=(65536-10000)/256;
  132.               TL0=(65536-10000)%256;
  133.               tt++;            
  134. }
复制代码

所有资料51hei提供下载:
基于51单片机的4位数码管秒表.docx (97.25 KB, 下载次数: 47)


评分

参与人数 1黑币 +5 收起 理由
18845988464 + 5

查看全部评分

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

使用道具 举报

沙发
ID:97811 发表于 2018-6-2 15:33 | 只看该作者
谢谢分享!
回复

使用道具 举报

板凳
ID:359349 发表于 2018-6-28 13:54 | 只看该作者
我想问一下你的4个8550基级接哪里
回复

使用道具 举报

地板
ID:360972 发表于 2018-6-28 15:09 | 只看该作者
不错。谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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