秒表计时器

此生再无相见时 提交于 2019-12-04 04:13:12

秒表计时器

 

制作一个秒表计时器,记录0-15秒时间。要求精准,可控。

1.能够用按键控制秒表开始

2.能够用按键控制秒表停止

3.能够用按键控制秒表清零

4.使用定时器控制时间,要求精确。

5.使用1个数码管和多个按键实现功能。

 

 

 

 先根据需求判断所需的功能,再改变电路图

然后根据要求开始写代码

复制代码
 1 #include<reg52.h>
 2 sbit an = P1^0;
 3 sbit qing = P1^1;
 4 unsigned int i = 0;
 5 unsigned int s = 0;
 6 code unsigned char LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
 7 void INT_T0(void)
 8 {
 9     TMOD = 0X01; //打开定时器0 ,使用模式1定时
10     TH0 = 0XFC;
11     TL0    = 0X18; //初始值
12     EA = 1;//打开总开关
13     ET0 = 1;//打开中断T0开关
14 }
15 void main(void)
16 {    
17     INT_T0();
18     TR0 = 0; //定时功能关闭
19     while(1)
20     {
21         if(an == 0)          
22             TR0 = 1;       //判断按键按下  ,是则打开定时功能
23         else
24             TR0 = 0;       //  关闭定时功能
25         if(qing == 0)
26             break;            //跳出循环,关闭程序,重新启动            
27     }
28 }
29 void time0(void) interrupt 1 
30 {
31     TH0 = 0XFC;
32     TL0    = 0X18; //初始值
33     if(i < 1000)
34     {
35         i++;
36     }
37     else
38     {
39         P0 = LED_CODE[s];
40         i = 0;
41         if(s<15)
42             s++;
43         else
44             s = 0;        
45     }
46 }

制作一个秒表计时器,记录0-15秒时间。要求精准,可控。

1.能够用按键控制秒表开始

2.能够用按键控制秒表停止

3.能够用按键控制秒表清零

4.使用定时器控制时间,要求精确。

5.使用1个数码管和多个按键实现功能。

 

 

 

 先根据需求判断所需的功能,再改变电路图

然后根据要求开始写代码

复制代码
 1 #include<reg52.h>
 2 sbit an = P1^0;
 3 sbit qing = P1^1;
 4 unsigned int i = 0;
 5 unsigned int s = 0;
 6 code unsigned char LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
 7 void INT_T0(void)
 8 {
 9     TMOD = 0X01; //打开定时器0 ,使用模式1定时
10     TH0 = 0XFC;
11     TL0    = 0X18; //初始值
12     EA = 1;//打开总开关
13     ET0 = 1;//打开中断T0开关
14 }
15 void main(void)
16 {    
17     INT_T0();
18     TR0 = 0; //定时功能关闭
19     while(1)
20     {
21         if(an == 0)          
22             TR0 = 1;       //判断按键按下  ,是则打开定时功能
23         else
24             TR0 = 0;       //  关闭定时功能
25         if(qing == 0)
26             break;            //跳出循环,关闭程序,重新启动            
27     }
28 }
29 void time0(void) interrupt 1 
30 {
31     TH0 = 0XFC;
32     TL0    = 0X18; //初始值
33     if(i < 1000)
34     {
35         i++;
36     }
37     else
38     {
39         P0 = LED_CODE[s];
40         i = 0;
41         if(s<15)
42             s++;
43         else
44             s = 0;        
45     }
46 }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!