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 }
51单片机-门铃
猜你喜欢
转载自www.cnblogs.com/clam-hao/p/10079946.html
今日推荐
周排行