标题: 我的单片机秒表倒数99秒的程序 [打印本页]

作者: galaxy@    时间: 2018-10-11 08:25
标题: 我的单片机秒表倒数99秒的程序
这是我上个月做的秒表课题
用了一天的时间
附件里面包含了秒表的单片机源代码
和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)



作者: admin    时间: 2018-10-11 16:23
补全原理图或者详细说明一下电路连接即可获得100+黑币




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1