離線電話自動(dòng)通知系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
眾所周知,各個(gè)部門經(jīng)常有重要事情需要進(jìn)行通知。開會(huì)固然好,但比較耗時(shí);如果發(fā)信息,有時(shí)候表達(dá)得不夠清楚。最好的方法就是打電話通知,既節(jié)省被通知人的時(shí)間,又能夠把信息表達(dá)清楚,可是要工作人員一個(gè)個(gè)打電話來通知所有人也是一件麻煩事情。在這種情況下,就有必要研制一種無需人控制即能實(shí)現(xiàn)自動(dòng)通知的電話通知系統(tǒng)。
目前,多數(shù)類似的通知系統(tǒng)都是基于CTI卡實(shí)現(xiàn)的。這種系統(tǒng)需要由計(jì)算機(jī)進(jìn)行實(shí)時(shí)控制才能夠?qū)崿F(xiàn)撥打電話和播放通知語音,因此在實(shí)現(xiàn)通知任務(wù)時(shí)計(jì)算機(jī)需要開機(jī),這樣就不利于在下班時(shí)間或假期無人職守時(shí)進(jìn)行通知。本文設(shè)計(jì)了一個(gè)主要由離線電話自動(dòng)通知裝置構(gòu)成的電話自動(dòng)通知系統(tǒng),其通知過程不需要PC機(jī)實(shí)時(shí)管理。
1 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)由上位機(jī)自動(dòng)通知控制軟件和下位機(jī)離線電話自動(dòng)通知裝置構(gòu)成。其中,上位機(jī)自動(dòng)通知控制軟件主要完成電話號碼和通知信息的管理,它只是一個(gè)信息管理系統(tǒng),而具體電話通知的工作是由離線電話自動(dòng)通知裝置獨(dú)立自動(dòng)完成的。
如圖1所示,離線電話自動(dòng)通知裝置主要由通知信息存儲(chǔ)模塊、語音數(shù)據(jù)存儲(chǔ)與播放電路、電話呼叫及狀態(tài)檢測模塊、DTMF信號檢測模塊、串口通信及系統(tǒng)控制模塊等組成。其中,通知信息存儲(chǔ)模塊用來完成通知信息(包括被通知的電話號碼、通知語音和提示音的存儲(chǔ)以及本次通知狀態(tài)信息)的存儲(chǔ),硬件上主要使用串口閃存芯片實(shí)現(xiàn);語音數(shù)據(jù)存儲(chǔ)與播放電路用來完成語音信息的D/A轉(zhuǎn)換,再通過語音信號耦合電路將音頻信號與電話線路進(jìn)行信號耦合輸出;電話呼叫及狀態(tài)檢測模塊用來完成電話號碼的撥叫和呼叫狀態(tài)的檢測,用于判斷接聽狀態(tài),其中包括DTMF信號生成與呼叫及狀態(tài)檢測電路(使用DTMF編解碼芯片完成)、模擬摘掛機(jī)電路及摘掛機(jī)檢測電路;DTMF信號檢測模塊用來檢測電話撥通之后,播放通知語音過程中接昕方是否按下確認(rèn)鍵(使用另外一片DTMF編解碼芯片完成);串口通信及系統(tǒng)控制模塊,由串口電平轉(zhuǎn)換電路和由MCS51系列MCU(AT89S52)構(gòu)成的控制單元組成,用來完成通知過程的控制和數(shù)據(jù)通信。
2 語音數(shù)據(jù)存儲(chǔ)與播放電路
電話通知信息主要由電話號碼數(shù)據(jù)和語音信息編碼數(shù)據(jù)構(gòu)成。其中,電話號碼數(shù)據(jù)為ASCII碼,信息量不多;語音信息編碼數(shù)據(jù)則使用PCM編碼格式,也可以使用其他的壓縮編碼形式。如果使用壓縮編碼,單片機(jī)程序還要設(shè)計(jì)相應(yīng)的解碼程序,會(huì)加重單片機(jī)的執(zhí)行負(fù)擔(dān),因此建議使用PCM編碼格式。
語音數(shù)據(jù)存儲(chǔ)與播放電路如圖2所示。針對電話系統(tǒng)的語音質(zhì)量要求不高的特點(diǎn),本文使用了8位的量化位數(shù)和8 kHz的采樣頻率,因此其數(shù)據(jù)量不大,2分鐘的語音數(shù)據(jù)量為1×8 000×120=960000 B,再加上電話號碼信息所用的1 MB閃存,系統(tǒng)使用16 Mb(2 MB)的閃存就能夠很好地滿足電話通知的要求。這里采用SPI接口的閃存芯片W25X16,由于AT89S52沒有SPI接口,所以使用P1口,通過軟件方式來模擬SPI口實(shí)現(xiàn)與W25x16的通信。
MCU將閃存W25X16中的語音數(shù)據(jù)通過P1口線讀出后,以8000 Hz的頻率通過PO口發(fā)送給D/A轉(zhuǎn)換器DAC0832,進(jìn)行語音還原輸出;模擬語音經(jīng)過放大器LM393AH進(jìn)行電流電壓轉(zhuǎn)換后,送至語音信號耦合電路輸入線TONE,將語音信號耦合到電話線路上,從而實(shí)現(xiàn)電話通知的語音播放。
3 DTMF信號生成與呼叫及狀態(tài)檢測電路
DTMF信號生成與呼叫及狀態(tài)檢測電路如圖3所示。上位機(jī)將要撥打的電話號碼和需要播報(bào)的電話語音通過串口發(fā)送給MCU,并存儲(chǔ)到Flash芯片 W25X16中后,MCU將啟動(dòng)電話自動(dòng)通知過程。從W25X16中讀取要撥打的電話號碼,系統(tǒng)置P3.4為高電平,進(jìn)行模擬摘機(jī)。當(dāng)系統(tǒng)通過P3.7檢測到摘機(jī)狀態(tài)有效后,將每位電話號碼數(shù)據(jù)的BCD碼送至MT8888的D0~D3數(shù)據(jù)線,同時(shí)使信號有效,即可寫入MT8888的DTMF編碼電路。MT8888根據(jù)MCU連續(xù)寫入的BCD碼,通過TONE引腳連續(xù)發(fā)出相應(yīng)的DTMF信號,再經(jīng)由Q1、Q2構(gòu)成的語音信號耦合電路將音頻信號耦合到電話線上,從而發(fā)送給程控交換機(jī)實(shí)現(xiàn)軟件撥號。
撥號完成后,MCU設(shè)置MT8888工作在呼叫監(jiān)聽模式,進(jìn)行呼叫狀態(tài)監(jiān)聽。MT8888通過2引腳檢測電話線上傳輸信號,MCU通過讀取MT8888的引腳輸出的脈沖頻率和脈沖個(gè)數(shù)即可分析出呼叫狀態(tài)。若線路上傳輸?shù)氖?50 Hz的音頻信號,而且是持續(xù)1 s后4 s無的循環(huán)信號,則為回鈴音信號,即處于振鈴狀態(tài);如果線路上傳輸?shù)氖?50 Hz的音頻信號,而且O.35 s通O.35 s斷的循環(huán)信號,則為忙音信號,即處于線路忙或掛機(jī)狀態(tài)。
在語音播報(bào)過程中,系統(tǒng)同樣使用另一塊MT8888芯片構(gòu)成的DTMF檢測電路,檢測當(dāng)前電話接聽者的按鍵動(dòng)作,以判斷其是否按下確認(rèn)按鍵。系統(tǒng)根據(jù)按鍵狀態(tài)保存本次通話或通知的狀態(tài)。
4 上位機(jī)控制軟件設(shè)計(jì)
上位機(jī)控制軟件中主要包括:電子名片管理模塊,可以完成聯(lián)系人基本信息和電話號碼的管理(包括增刪改查等功能);名片分組管理模塊;電話通知信息管理模塊,具有通知語音的錄制、被通知對象(即電話號碼)的選取以及將數(shù)據(jù)下載到離線通知裝置等功能;通知信息查詢模塊,可以完成通知狀態(tài)的查詢和補(bǔ)通知控制,也可以對當(dāng)前或歷史通知內(nèi)容和狀態(tài)進(jìn)行查詢。
電話通知信息和通知指令來自上位機(jī)控制軟件,上位機(jī)在將預(yù)通知的電話號碼和語音數(shù)據(jù)打成通知命令數(shù)據(jù)包后,通過串口發(fā)送給下位機(jī),使下位機(jī)啟動(dòng)脫離計(jì)算機(jī)管理的離線自動(dòng)通知過程。另外,上位機(jī)還可以發(fā)送獲取通知狀態(tài)命令包,由串口通信中斷服務(wù)程序完成當(dāng)前通知狀態(tài)的上傳任務(wù)。
圖4為離線電話自動(dòng)通知裝置的處理流程。離線自動(dòng)通知裝置上電運(yùn)行,進(jìn)行必要的初始化后,通過通知狀態(tài)標(biāo)志來判斷是否啟動(dòng)自動(dòng)通知過程。通知標(biāo)志由中斷服務(wù)程序根據(jù)接收到的命令包設(shè)置,如果為“真”則裝置轉(zhuǎn)入通知過程執(zhí)行,否則繼續(xù)查詢狀態(tài)標(biāo)志。在進(jìn)入通知過程后,首先讀取預(yù)通知的第一個(gè)電話號碼,再進(jìn)行模擬摘機(jī)準(zhǔn)備撥號。為了可靠地實(shí)現(xiàn)模擬摘機(jī),要求在摘機(jī)前后都要先判斷摘機(jī)狀態(tài),只有在掛機(jī)狀態(tài)下才能摘機(jī),摘機(jī)有效后才能撥號。MCU控制撥號完畢后,從閃存中讀取語音數(shù)據(jù)以8000Hz的頻率發(fā)送給D/A轉(zhuǎn)換器,進(jìn)行播放通知語音。在播放通知語音的過程中,通過DTMF信號檢測模塊監(jiān)測線路上的 DTMF信號,以判斷接聽通知者是否按下確認(rèn)鍵進(jìn)行接聽確認(rèn)。如確認(rèn),系統(tǒng)將保存通知狀態(tài),否則通知一個(gè)循環(huán)后進(jìn)行重復(fù)通知。當(dāng)一個(gè)電話通知完畢后,系統(tǒng)繼續(xù)讀取下一個(gè)預(yù)通知電話號碼,進(jìn)行下一個(gè)電話的通知,直到所有通知被確認(rèn)或超出重復(fù)通知次數(shù)為止。
結(jié)語
本文根據(jù)電話通知系統(tǒng)的特點(diǎn),設(shè)計(jì)了無需PC機(jī)實(shí)時(shí)控制的電話自動(dòng)通知系統(tǒng)。系統(tǒng)中的PC機(jī)只是起到一個(gè)信息管理作用,具體的電話通知由離線電話自動(dòng)通知裝置自動(dòng)完成,其工作不需要PC機(jī)的實(shí)時(shí)管理或控制,是一個(gè)離線通知裝置,可以實(shí)現(xiàn)在下班且PC機(jī)關(guān)機(jī)的狀態(tài)下進(jìn)行電話通知,能夠提高電話的使用效率和節(jié)省能源消耗。