期中考试“秒表计时器”

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

要求:

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

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

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

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

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

第一步:先给电路图加两个按钮,如下图。

第二步:根据需求编写代码,并且运行。

 1 #include<reg52.h>
 2 #define LED P0
 3 sbit key1 = P1^0;       //开始,暂停按钮
 4 sbit key2 = P1^1;      //复位按钮
 5 unsigned int i = 0;    
 6 unsigned char n = 0;
 7 unsigned char NUM[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,\
 8                     0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
 9 void INT_T0(void)
10 {
11     TMOD = 0X01; //打开定时器0,使用模式1定时
12     TH0 = 0XFC;
13     TL0    = 0X18; //初始值
14     EA = 1;//打开总开关
15     ET0 = 1;//打开中断T0开关
16 }
17 void main(void)
18 {    
19     INT_T0();
20     TR0 = 0; //定时功能打开
21     LED = NUM[0];
22     while(1)
23     {
24         if(key1 ==0)
25         {
26             TR0 = 1;      //判断按键按下  ,则打开定时计时功能
27         }
28         else
29         {
30             TR0 = 0;      //判断按键松开,则断开计时功能
31         }
32         if(key2 == 0)
33             break;      //跳出循环,计时归零            
34     }
35 }
36 void time0(void) interrupt 1 
37 {
38     TH0 = 0XFC;
39     TL0    = 0X18; //初始值
40     if(i < 1000)
41     {
42         i++;
43     }
44     else
45     {
46         P0 = ~NUM[n];
47         if(n<16)
48         {
49             n++;
50         }
51         else
52         {
53             n=0;
54         }    
55         i = 0;
56     }
57 }

第三步:烧入电路图

注意事项(按着按键1不放才会计时,松开则不会计时,按一下按键2则是复位)

猜你喜欢

转载自www.cnblogs.com/guo-cong/p/11813858.html