功能是当家中有人,来访客人按下门铃按键K2,此时液晶显示屏会提示客人家中有人的信息,与此同时,蜂鸣器播放音乐,客人进入等待过程;若家中无人,客人按下门铃后,此时液晶屏将提示客人家中无人的信息。在此过程中,主人可在家中用K3随时停止客人等待过程,即停止音乐播放及液晶显示。 四个按键标识在图上了,K 1是主人选择他是否在家的按钮,现在无法利用K3关闭
单片机程序在下边 - #include "reg52.h" //´
- #include "lcd1602.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit BEEP = P2^7;
- sbit k1=P3^0;
- sbit k2=P3^3;
- sbit k3=P3^6;
- uchar code SONG_TONE[]= { 212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,129,169,190,119,119,126,159,142,159,0 }; uchar code SONG_LONG[]= { 9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0 };
- uchar code tab1[]="Sorry"; //ÎÞÈË uchar code tab2[]="master is not";
- uchar code tab3[]="Yes"; //ÓÐÈË uchar code tab4[]="master at home";
- uchar feng; uchar k1_flg=1;
- void delayms(uint i) { uchar j; for(i;i>0;i--) for(j=125;j>0;j--); }
- void anjian()
- {
- if(k1==0)
- {
- delayms(5);
- if(k1==0)
- {
- k1_flg=0;//=0ʱÎÞÈË£¬Ä¬ÈÏÓÐÈË
- }
- while(!k1);
- }
- else if(k2==0)
- {
- delayms(5);
- if(k2==0)
- {
- if(k1_flg==1)
- {
- feng=1;
- lcd_str(3,0,tab3);
- lcd_str(0,1,tab4);
- }
- else if(k1_flg==0)
- {
- lcd_str(5,0,tab1);
- lcd_str(0,1,tab2);
-
- }
- }
- while(!k2);
- }
- else if(k3==0)
- {
- delayms(5);
- if(k3==0)
- {
- feng=0;
- lcd_wcom(0x01);
- }
- while(!k3);
- }
- }
- void PlayMusic()
- {
- uint i =0,j,k;
- while(SONG_LONG[ i]!=0||SONG_TONE[ i]!=0)
- {
- for(j=0;j<SONG_LONG[ i]*20;j++)
- {
- BEEP = ~BEEP;
- for(k=0;k<SONG_TONE[ i]/3;k++);
- }
- delayms(10);
- i++;
- }
- }
- void main()
- {
- lcd_init();
- lcd_wcom(0x01);
- while(1)
- {
- if(feng==1)
- {
- PlayMusic();
- }
-
-
-
- anjian();
- }
- }
复制代码
|