找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我的单片机秒表倒数99秒的程序

[复制链接]
跳转到指定楼层
楼主
ID:407856 发表于 2018-10-11 08:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我上个月做的秒表课题
用了一天的时间
附件里面包含了秒表的单片机源代码
和proteus仿真工程文件
请大家多多采纳多多指教
本人还有其他代码,但是也不算太多
可以加qq1515422315获取
或者联系我发表

单片机源程序如下:
  1. /**************************************************************************************                                                                                                                                                                                                                                                                                                                           /**************************************************************************************
  2. *功能:秒表(99倒计时)                                                                                                               *
  3. *说明:数码管显示99秒的倒计时
  4. *硬件连接:在J4处插上跳线帽  第一位数码管 位引脚-->P2.0                                                                  *
  5. *                                                         第二位数码管 位引脚-->P2.1                                                                  *
  6. *                                                         第三位数码管 位引脚-->P2.2                                                                  *
  7. *                                                         第四位数码管 位引脚-->P2.3                                                                  *
  8. *                                                         所有的数码管 段引脚-->P0
  9. *作者:研发中心                                                                                                                                                  *
  10. *公司:科睿电子产品有限公司                                                                                                                   *
  11. *电话:0530-2897239   15192459227                                                                                                            *
  12. *地址:菏泽市开发区广州路与淮河路交叉口科睿电子产品有限公司                                                   *
  13. ***************************************************************************************/
  14. #include <reg52.h>

  15. typedef unsigned int uint;
  16. typedef unsigned char uchar;

  17. uint count,count_ms=100;
  18.                                 //         0           1        2         3          4           5   6        7         8          9           10
  19. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

  20. sbit P2_0 = P2^0;
  21. sbit P2_1 = P2^1;
  22. sbit P2_2 = P2^2;
  23. sbit P2_3 = P2^3;

  24. /*
  25. * 延时函数  毫秒级
  26. */
  27. void delay(uint z)
  28. {
  29.         uint x,y;
  30.         for(x=z;z>0;z--)
  31.                 for(y=110;y>0;y--)
  32.                 ;
  33. }                        
  34. /********************************************************************
  35. * 名称 : Timer1Init()
  36. * 功能 : 定时器1初始化
  37. * 输入 : 无
  38. * 输出 : 无
  39. ***********************************************************************/
  40. void Timer1Init(void)                //10毫秒@11.0592MHz
  41. {
  42. //        AUXR &= 0xBF;                //定时器时钟12T模式
  43.         TMOD &= 0x0F;                //设置定时器模式
  44.         TL1 = 0x00;                //设置定时初值
  45.         TH1 = 0xDC;                //设置定时初值
  46.         TF1 = 0;                //清除TF1标志
  47.         TR1 = 1;                //定时器1开始计时
  48.         ET1 = 1;        //enable timer1 interrupt
  49.     EA = 1;          //open global interrupt switch
  50. }

  51. /********************************************************************
  52. * 名称 : display()
  53. * 功能 : 数码管显示函数
  54. * 输入 : Dis_data1,Dis_data2,Dis_data3,Dis_data4
  55. * 输出 : 无
  56. ***********************************************************************/
  57. void display(uint Dis_data1,uint Dis_data2,uint Dis_data3,uint Dis_data4)
  58. {   
  59.    P0=table[Dis_data1];
  60.    P2_0 = 0;
  61.    delay(2);
  62.    P2_0 = 1;

  63.    P0=table[Dis_data2];
  64.    P2_1 = 0;
  65.    delay(2);
  66.    P2_1 = 1;

  67.    P0=table[Dis_data3];
  68.    P2_2 = 0;
  69.    delay(2);
  70.    P2_2 = 1;

  71.     P0=table[Dis_data4];
  72.    P2_3 = 0;
  73.    delay(2);
  74.    P2_3 = 1;
  75.    
  76. }

  77. /********************************************************************
  78. * 名称 : main()
  79. * 功能 : 主函数
  80. * 输入 : 无
  81. * 输出 : 无
  82. ***********************************************************************/
  83. void main()
  84. {
  85.         Timer1Init();
  86.         count=100;
  87.         count_ms=1000;
  88.         while(1)
  89.         {
  90.                 display(10,count%100/10,count%10,10);
  91.        
  92.         }       
  93. }

  94. /********************************************************************
  95. * 名称 : void tm1_isr() interrupt 3 using 1
  96. * 功能 : 定时器1中断服务函数
  97. * 输入 : 无
  98. * 输出 : 无
  99. ***********************************************************************/
  100. void tm1_isr() interrupt 3 using 1
  101. {
  102.         TL1 = 0x00;                //设置定时初值
  103.         TH1 = 0xDC;                //设置定时初值
  104.     if (count_ms-- == 0)               //1ms * 1000 -> 1s
  105.     {
  106.         count_ms=1000;
  107.                 if(count==0)
  108.                 {
  109.                         count=100;
  110.                 }
  111.                 count --;              //reset counter
  112.     }
  113. }
复制代码

所有资料51hei提供下载:
11.秒表(99倒计时).zip (21.25 KB, 下载次数: 24)


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

使用道具 举报

沙发
ID:1 发表于 2018-10-11 16:23 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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