主頁(http://www.by236.com):基于熱釋電紅外傳感器的無線監控報警(2) MT8880的D0~D3口分別接8255的PA0~PA3口,CLK2接PA4口,R/W接PA5口,RSO接PA6口,CS接PA7口,IRQ接主控電路處理器89C51的T0口,用來記錄各種脈沖的個數。來自語音電路的信號經過R44送到電話線上去。繼電器K用來控制摘掛機,晶體管的B極接主控電路處理器89C51的P1.2口,當P1.2為“1”時,V2導通,繼電器K閉合,電話接通,當P1.2為“0”時,V2截止,電話掛機。 主控電路處理器89C51的P0口分別接8255的D0~D7口和74HC373的D0~D7口,74HC373的Q0和Q1分別接8255的A0和A1,89C51的P2.5、P2.6、P2.7分別接74HC138的A、B、C口,74HC138的YO接8255的CS端。 軟件設計 ●撥號音:450±25Hz連續蜂音。 這些電話信號均是模擬信號,然而單片機是無法識別模擬信號的,故必須先將模擬信號轉換為脈沖信號,然后再根據脈沖信號的脈沖個數進行識別。這些電話音頻信號的脈沖個數計算公式為N=tm/T。其中,N為每音段周期的脈沖個數;T為電話音頻信號的音頻周期,單位為s;tm為信號音段周期的導通時間,單位為s。 在實際使用中,主要需要識別撥號音、忙音和回鈴音。分析這3種信號的特性可以看出,在一定的計數時間內,其脈沖個數是不一樣的。在本設計中采用2s計數判斷撥號音,采用2.8s(即4個忙音周期)判斷是否為忙音。隨后采用ls為一個計數單元,采用計五次后的累加脈沖數來判斷對方是否接聽電話。若有,則放相應的報警提示語音;否則再計ls,然后計算最后5s內的脈沖數,再次判斷對方是否摘機。如此反復。直到超過等待時間仍沒有人接聽電話就掛機。由于干擾和一些其他因素的存在,難免會有誤判的現象而導致漏報警情。因此采取在所有預先設定的電話至少有一個撥通就只撥一遍。如果全部投撥通或者沒人接聽則把所有預存電話重撥一遍,這樣漏報報警的概率就非常低以致可忽略不計。 2、軟件流程圖及撥號程序
圖4:自動撥號程序流程圖 3、編程過程中應注意的幾點 其次,在摘機后應延時一段時間再去判斷摘機音,因為本系統采用機械繼電器實現自動摘機,故應考慮繼電器的響應時間。 最后,一個電話號碼撥完后不能立即撥下一個電話號碼,應保證掛機的最短有效時間以確保前一電話號碼確實已掛機,否則撥下一個電話號碼時會沒有撥號音。 結論 (中國集群通信網 | 責任編輯:陳曉亮) |





