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