51单片机-门铃

 1 /* 下载程序后按键K1按下就会触发蜂鸣器门铃“叮咚”响  */
 2 
 3 #include<reg52.h>
 4 typedef unsigned char u8;
 5 typedef unsigned int u16;
 6 sbit beep=P1^5;
 7 sbit k1=P3^1;
 8 u8 ding,dong,flag,stop;
 9 u16 n;
10 void delay(u16 i)
11 {
12     while(i--);
13 }
14 void time0init()      //定时器0初始化
15 {
16     TMOD=0X01;     //定时器0 方式1
17     TH0=0Xff;
18     TL0=0X06; //定时250us
19 //    TR0=1;
20     EA=1;
21     ET0=1;
22 }
23 void biaohaoinit()       //各个标号初始化
24 {
25     ding=0;        //叮声音  计数标志
26     dong=0;        //咚声音  计数标志
27     n=0;        //定时0.5s标志
28     flag=0;
29     stop=0;       //结束标志
30 }
31 void main()
32 {
33     time0init();
34     biaohaoinit();
35     while(1)
36     {
37         if(k1==0)       //判断按键是否按下
38         {
39             delay(1000);  //消抖
40             if(k1==0)
41             {
42                 TR0=1;    //打开定时器0
43                 while(!stop);
44             }
45         }    
46     }    
47 }
48 void time0() interrupt 1
49 {
50     n++;
51     TH0=0Xff;
52     TL0=0X06; //250us
53     if(n==2000)        //定时0.5s  叮响0.5秒,咚响0.5秒
54     {
55         n=0;
56         if(flag==0)
57         {
58             flag=~flag;
59         }
60         else
61         {
62             flag=0;
63             stop=1;
64             TR0=0;      //关闭定时器0
65         }
66     }
67     if(flag==0)
68     {                       //通过改变定时计数时间可以改变门铃的声音
69         ding++;              //
70         if(ding==1)
71         {
72             ding=0;
73             beep=~beep;
74         }
75     }
76     else
77     {
78         dong++;
79         if(dong==2)          //
80         {
81             dong=0;
82             beep=~beep;
83         }    
84     }
85 }

猜你喜欢

转载自www.cnblogs.com/clam-hao/p/10079946.html