基于DTMF技術(shù)與射頻技術(shù)的遠程控制的實(shí)現
3、遠程控制應用實(shí)現
為了實(shí)現對多點(diǎn)設備的控制,無(wú)線(xiàn)編碼芯片PT2262的地址線(xiàn)選用A0~A7地址腳和DO~D3數據腳,這12個(gè)口線(xiàn)均通過(guò)單片機AT89S52來(lái)控制。由于單片機很容易實(shí)現“0”和“1”控制,所以單片機對A0~A7這8個(gè)地址線(xiàn)的控制可實(shí)現256種狀態(tài),即最多可以控fitJ 256種設備(每一個(gè)PT2272解碼芯片輸出對應于一種受控設各);同樣地,單片機對DO~D3這4條數據線(xiàn)的控制可實(shí)現16種狀態(tài),即對同一設各可實(shí)現最多16種方式的操作。本文實(shí)現的是異地遠程呼叫處理工廠(chǎng)各個(gè)無(wú)人操作車(chē)間的測試儀器,并能遙控操作進(jìn)行相關(guān)的測試任務(wù)。系統框圖如圖5所示。
圖5 遠程控制應用系統框圖
系統的工作流程如下:?jiǎn)纹瑱C主板可以接人固定電話(huà)線(xiàn)也可以接人一個(gè)手機模塊(專(zhuān)為沒(méi)有預裝固定電話(huà)的區域使用),操作員在異地拔打本地電話(huà)號碼(或手機號碼),單片機主板會(huì )自動(dòng)檢測振鈴信號,然后自動(dòng)摘機,并提示操作員輸人密碼。當單片機主板驗證通過(guò)后,操作員就可輸人地址碼(對應于一臺測試儀器,如001號)和操作碼(當前測試機的測試任務(wù),如A字符,代表打開(kāi)測試機電源),單片機主板識別后,通過(guò)編碼芯片送給無(wú)線(xiàn)發(fā)射頭,無(wú)線(xiàn)發(fā)射頭按特定的規則送出地址碼和操作碼,每一臺測試機上的無(wú)線(xiàn)接收頭都能接收到該無(wú)線(xiàn)信號,但只有與編碼芯片的地址匹配的那臺測試機才會(huì )響應并執行操作碼。
4、軟件實(shí)現
軟件部分主要分為三部分:(1)正確檢測到固定電話(huà)的振鈴音并自動(dòng)摘機或手機模塊自動(dòng)接通接聽(tīng)中的鈴流信號;(2)對DTMF信號的接收和發(fā)送處理,實(shí)現身份認證、向用戶(hù)發(fā)送提示音、接收用戶(hù)輸人的控制指令等。(3)控制編碼芯片地址線(xiàn)和數據線(xiàn),從而把控制指令無(wú)線(xiàn)傳輸出去。
4.1固話(huà)振鈴音的檢測及處理
針對固定電話(huà)、結合圖1,單片機AT89S52的TEST腳檢測到固定電話(huà)振鈴檢測信號波形,AT89S52只要判斷TEST腳的電平變化即可以正確檢測外線(xiàn)是否有電話(huà)撥人,然后控制TRI腳吸合繼電器實(shí)現模擬摘機。
針對手機模塊、結合圖2,本文選用的是一款諾基亞手機(手機設為自動(dòng)接聽(tīng)模式),經(jīng)局部改造提到鈴流信號線(xiàn)送人單片機AT89S52的GSM-RING的lO腳上,常態(tài)下為高電平,當有電話(huà)打過(guò)來(lái)時(shí),GSM-RING的lO腳上得到的波形如圖6所示。所以單片機只要AT89S52判斷GSM-RING的lO腳的電平變化情況就可以了。
圖6手機模塊鈴流信號波形
4.2 DTMF信號的收發(fā)處理
當固定電話(huà)或手機模塊自動(dòng)摘機后,則啟用DTMF收發(fā)處理程序(主要是對MT8880芯片的處理),關(guān)鍵的程序代碼如下[3]·
“讀MT8880狀態(tài)或數據寄存器”函數:
〃功能說(shuō)明:讀取MT8880狀態(tài)寄存器
〃輸出參數:返回MT8880的狀態(tài)寄存器值
//DTMF REG為與MCU的接口寄存器,在"DTMF H"有定義
uchar DTMF_CPR(void)
?。?p> uchar uc_data;
DTMF_Q2=1;
noD();
_nop_();
uc_data=DTMF_REG;IlC_data=uc_data&0x0f;pTMF_07v"=0;
return(uc_d·ata);
?。?p> “寫(xiě)MT8880控制或數據寄存器時(shí)序”函數:
//功能說(shuō)明:MT8880的Q2時(shí)序控制
void DTMF_CPW(void)
?。?p> DTMF_Q2=1; //Q2=1產(chǎn)生Q2的上升沿
non_();//Q2的高電平持續
_nop_();
uc_data=DTMF_REG;//讀MT8880狀態(tài)寄存器
uc_data=uc_data0x0f;//屏蔽高四位,只取低4位
DTMF_Q2=0;//Q2=0完成一個(gè)Q2時(shí)鐘
return(uc_data);
?。?/span>
評論