找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3021|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

89C51聲光報(bào)警系統(tǒng)(轉(zhuǎn)載)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:918585 發(fā)表于 2021-5-10 13:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
聲光報(bào)警器仿真原理圖(文件下載請轉(zhuǎn)http://www.torrancerestoration.com/bbs/dpj-115948-1.html


單片機(jī)源程序如下:
  • /* 本程序是一個(gè)以89C51為核心的聲光報(bào)警器控制程序
  • 系統(tǒng)的晶振頻率12MHz,外界報(bào)警觸發(fā)脈沖接至INT0,報(bào)警復(fù)位按鈕接P1.2,喇叭接P1.1
  • 當(dāng)外界報(bào)警脈沖觸發(fā)報(bào)警后,LED(接P1.0)以1Hz的頻率閃動(dòng),同時(shí)喇叭種發(fā)出"Wu,Wa......"的警笛聲
  • 該聲音由1kHz和500Hz方波以0.5秒為間隔交替發(fā)聲
  • 值班人員按動(dòng)報(bào)警復(fù)位鈕后聲光報(bào)警停止。*/
  • #include "AT89X51.h"
  • bit hisound;     /* 高音標(biāo)志 */
  • sbit led=P1^0;         /* 報(bào)警燈接口 */
  • sbit speak=P1^1; /* 喇叭接口 */
  • sbit stop=P1^2;         /* 復(fù)位按鈕 */
  • unsigned char data i; /* 50ms中斷次數(shù)計(jì)數(shù)單元 */
  • void delayms(unsigned int x);  /* 延時(shí)1ms倍數(shù)的延時(shí)子程序 */
  • void main(void)
  • {
  • IT0=1; /* 設(shè)置INT0為邊沿中斷 */
  • ET0=1; /* 允許T0中斷 */
  • ET1=1; /* 允許T1中斷 */
  • EX0=1; /* 允許INT0中斷 */
  • PT0=1; /* T0設(shè)為高級(jí)中斷 */
  • EA=1;  /* 開中斷 */
  • hisound=1; /* 高音標(biāo)志置1,先發(fā)高音 */
  • led=1;  /* 熄滅報(bào)警燈 */
  • speak=0; /* 喇叭斷電 */
  • TMOD=0x11; /* 設(shè)T0、T1為定時(shí)器,方式1 */
  • TH0=0xfe; /* 0.5ms定時(shí)初值 */
  • TL0=0x0c;
  • TH1=0x3c;  /* 50ms定時(shí)初值 */
  • TL1=0xb0;
  • i=10;   /* 50ms中斷10次為0.5秒 */
  • stop=1; /* 允許報(bào)警復(fù)位按鈕輸入 */
  • while (1)
  • {
  •    if (stop==0) /* 如果按下停止報(bào)警按鈕 */
  •     {
  •      delayms(20);  /* 延時(shí)20ms消除開關(guān)抖動(dòng) */
  •       }
  •    if (stop==0)
  •     {
  •       TR0=0;  /* 停止T0定時(shí) */
  •       TR1=0;  /* 停止T1定時(shí) */
  •       led=1;  /* 熄滅報(bào)警燈 */
  •       speak=0; /* 關(guān)閉喇叭 */
  •       }
  •    }
  • }
  • /* INT0 中斷服務(wù)程序 */
  • void int0(void) interrupt 0
  • {
  • TR0=1; /* 啟動(dòng)T0定時(shí) */
  • TR1=1; /* 啟動(dòng)T1定時(shí) */
  • }
  • /* T0中斷服務(wù)程序 */
  • /* 用來產(chǎn)生救護(hù)車的警笛聲 */
  • void timer0(void) interrupt 1
  • {
  •   if (hisound==1)  /* 如果產(chǎn)生高音 */
  •     {
  •      TH0=0xfe;   /* 0.5ms定時(shí)初值 */
  •      TL0=0x0c;
  •       }
  •    else
  •     {
  •      TH0=0xfc;   /* 1ms定時(shí)初值 */
  •      TL0=0x18;
  •       }
  •    speak=!speak; /* 驅(qū)動(dòng)喇叭的輸出取反 */
  • }
  • /* T1中斷服務(wù)程序 */
  • /* 用來產(chǎn)生0.5秒的定時(shí) */
  • void timer1(void) interrupt 3
  • {
  •   TH1=0x3c; /* 50ms定時(shí)初值 */
  •   TL1=0xb0;
  •   i=i-1;
  •   if (i==0) /* 如果到0.5秒 */
  •     {
  •       i=10;
  •       hisound=!hisound;  /* 高音標(biāo)志取反,變音 */
  •       led=!led;   /* 報(bào)警燈改變亮滅 */
  •       }
  • }
  • /* 延時(shí)子程序,延時(shí)1ms的倍數(shù) */
  • void delayms(unsigned int x)
  • {
  •   unsigned char j;
  •   while(x--)
  •     {
  •       for(j=0;j<123;j++){;}
  •     }
  • }



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表