功能是當(dāng)家中有人,來訪客人按下門鈴按鍵K2,此時(shí)液晶顯示屏?xí)崾究腿思抑杏腥说男畔?/font>,與此同時(shí),蜂鳴器播放音樂,客人進(jìn)入等待過程;若家中無人,客人按下門鈴后,此時(shí)液晶屏將提示客人家中無人的信息。在此過程中,主人可在家中用K3隨時(shí)停止客人等待過程,即停止音樂播放及液晶顯示。 四個(gè)按鍵標(biāo)識在圖上了,K 1是主人選擇他是否在家的按鈕,現(xiàn)在無法利用K3關(guān)閉
單片機(jī)程序在下邊 - #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();
- }
- }
復(fù)制代碼
|