|
模擬門鈴.jpg (135.86 KB, 下載次數(shù): 49)
下載附件
2015-12-24 14:04 上傳
- /********************************************************************
- *
- * 程序功能 : “叮咚”門鈴
- *
- * 應(yīng)用軟件 : KEIL C
- *
- * 硬 件 : W2041
- *
- * 創(chuàng)建時(shí)間 : 2015-12-16
- *
-
- ********************************************************************/
- /* 程序詳細(xì)功能介紹:
- *當(dāng)按下按鍵P3.3 ,AT89S51單片機(jī)產(chǎn)生“叮咚”聲從P3.2端口輸出
- *程序設(shè)計(jì)方法
- * 1. 我們用單片機(jī)實(shí)定時(shí)/計(jì)數(shù)器T0來產(chǎn)生700HZ和500HZ的頻率,根據(jù)定時(shí)/計(jì)數(shù)器T0,我們?nèi)《〞r(shí)250us,
- * 因此,700HZ的頻率要經(jīng)過3次250us的定時(shí),而500HZ的頻率要經(jīng)過4次250us的定時(shí)。
- * 2. 在設(shè)計(jì)過程,只有當(dāng)按下SP1之后,才啟動T0開始工作,當(dāng)T0工作完畢,回到最初狀態(tài)。
- * 3. “!焙汀斑恕甭曇舾髡加0.5秒,因此定時(shí)/計(jì)數(shù)器T0要完成0.5秒的定時(shí),對于以250us為基準(zhǔn)定時(shí)2000次才可以。
- */
- #include <AT89X51.H>
- unsigned char t5hz;
- unsigned char t7hz;
- unsigned int tcnt;
- bit stop;
- bit flag;
- void main(void)
- {
- unsigned char i,j;
-
- TMOD=0x02;
- TH0=0x06;
- TL0=0x06;
- ET0=1;
- EA=1;
-
- while(1)
- {
- if(P3_3==0)
- {
- for(i=10;i>0;i--)
- for(j=248;j>0;j--);
- if(P3_3==0)
- {
- t5hz=0;
- t7hz=0;
- tcnt=0;
- flag=0;
- stop=0;
- TR0=1;
- while(stop==0);
- }
- }
- }//...while(1)
- }//...main
- void t0(void) interrupt 1 using 0
- {
- tcnt++;
- if(tcnt==2000)
- {
- tcnt=0;
- if(flag==0)
- {
- flag=~flag;
- }
- else
- {
- stop=1;
- TR0=0;
- }
- }
-
- if(flag==0)
- {
- t7hz++;
- if(t7hz==3)
- {
- t7hz=0;
- P3_2=~P3_2;
- }
- }
- else
- {
- t5hz++;
- if(t5hz==4)
- {
- t5hz=0;
- P3_2=~P3_2;
- }
- }
- }
復(fù)制代碼 |
-
-
7-“叮咚”門鈴.zip
2015-12-24 14:05 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
82.5 KB, 下載次數(shù): 69, 下載積分: 黑幣 -5
DIY制作
評分
-
查看全部評分
|