摘 要: 介紹了以AT89S52單片機為控制核心,利用DTMF發(fā)送/接收一體芯片MT8880和公共電話網(wǎng)以及全球移動通信網(wǎng)(GSM),并加上ASK方式的無線射頻收發(fā)技術實現(xiàn)遠程控制。
關鍵詞: 單片機; DTMF; 遠程控制; 無線; ASK
公共電話網(wǎng)和全球移動通信網(wǎng)(GSM)的語音和數(shù)據(jù)量的傳輸主要通過DTMF技術實現(xiàn)。本文介紹了一種基于DTMF收發(fā)技術和無線射頻技術相結合實現(xiàn)遠程控制的方法。例如在辦公室打電話回家遠程查詢、開啟或關閉家里的各種電器設備,使生活變得更加舒適安全便捷;也可以應用于對人有毒害的工作場合,工人可以通過遠程操作相關的設備完成特定的工作內(nèi)容。
1 DTMF技術及其硬件電路設計
1.1 DTMF電話原理介紹[1]
雙音多頻DTMF(Double Tone MultiFrequency)作為實現(xiàn)電話號碼快速可靠傳輸?shù)囊环N技術,具有很強的抗干擾能力和較高的傳輸速度,可用作電話的音頻撥號,也可以在數(shù)據(jù)通信系統(tǒng)中用來實現(xiàn)各種數(shù)據(jù)流和語音等信息的遠程傳輸。
DTMF是用兩個特定的單音頻組合信號來代表數(shù)字信號以實現(xiàn)其功能的一種編碼技術。國際上采用的頻率有:697 Hz、770 Hz、852 Hz、941 Hz、1 209 Hz、1 336 Hz、1 477 Hz 和1 633 Hz 等8種。用這8種頻率可形成16種不同的組合,從而代表16種不同的數(shù)字或功能鍵,具體組合如表1所示。
DTMF信號的產(chǎn)生原理:雙音頻信號是兩個正弦波信號的疊加,選定兩個頻率f1和f2后很容易地得到這種信號的數(shù)學表達式:Asin(2×π×f1×t)+Asin(2×π×f2×t)。
1.2 電話通信的實現(xiàn)
1.2.1 振鈴音的檢測
當用戶被呼叫時,電話交換機發(fā)來鈴流信號,振鈴為(25±3) Hz的正弦波,諧鈴失真不大于10%,電壓有效值為(90±15) V。振鈴以5 s為周期,即1 s送、4 s斷。根據(jù)振鈴信號電壓比較高的特點,可以先使用高壓穩(wěn)壓二極管進行降壓,然后輸入至光電耦合器。經(jīng)過光耦的隔離轉(zhuǎn)換,從光電耦合器輸出的波形是時通時斷的正弦波,經(jīng)過RC回路進行濾波輸出標準的方波。方波信號就可以直接輸出至單片機的中斷計數(shù)器輸入口,完成整個振鈴音檢測和計數(shù)的過程,如圖1所示。
1.2.2 自動摘掛機
程控電話交換機對電話摘機的響應是電話線回路電流突然變大至約30 mA,即當程控交換機檢測到電話線回路中的電流變大時,則認為電話機已經(jīng)摘機。
自動摘掛機電路可以通過單片機控制一個繼電器的開關,繼電器的控制端將一個約300 Ω的電阻接入電話線兩端,從而完成模擬摘掛機,如圖1所示。
1.2.3 雙音頻解碼
本文使用電話專用的雙音頻編解碼芯片MT8880進行輸入雙音頻信號的解碼。經(jīng)過專用集成電路的解碼,信號轉(zhuǎn)換成為不同的碼制信號,可以直接被單片機讀取。
1.3 DTMF信號收、發(fā)芯片MT8880簡介[2]
MT8880是加拿大MITEL公司生產(chǎn)的DTMF收發(fā)一體的集成電路,該芯片集成度高,內(nèi)部含有一個帶增益可調(diào)放大器的DTMF接收器和一個DTMF發(fā)送器。接收器采用集頻帶分離濾波器和數(shù)字解碼為一體的結構形式。其中濾波電路采取高頻群和低頻群兩個六階開關電容濾波器,解碼采用數(shù)字計數(shù)器技術來確定輸入DTMF信號的頻率,并譯成4位二進制碼。發(fā)送器采用開關電容D/A變換器,可發(fā)出16種雙音多頻DTMF信號。接收部分用于完成DTMF信號的接收、分離和譯碼,并以4位并行二進制碼的方式輸出。
1.4 MT8880與單片機控制接口
MT8880使用標準的單片機控制接口,單片機可以精確地完成接收和發(fā)送功能,允許單片機訪問其內(nèi)部一個狀態(tài)寄存器、2個控制寄存器和2個數(shù)據(jù)寄存器。
MT8880內(nèi)部有2個數(shù)據(jù)寄存器,一個是只執(zhí)行讀操作的接收數(shù)據(jù)寄存器RDR;另一個是只執(zhí)行寫操作的發(fā)送數(shù)據(jù)寄存器TDR。另外,MT8880中還有2個4位的收、發(fā)控制寄存器CRA和CRB(這2個寄存器位于同一地址空間)。對CRB的操作通過CRA中的一個特定位b3來實現(xiàn),在寫CRA后,接著對同樣地址進行特定操作以 把數(shù)據(jù)寫入CRB,再次寫時又指向CRA。在上電時,內(nèi)部設置電路先要清除控制寄存器,因此作為防范措施,軟件應設置清除寄存器的初始化程序;而MT8880中的4位狀態(tài)寄存器SR則用來反映收、發(fā)信號的工作狀態(tài)。寄存器的選擇與操作由RS0和R/W口線來控制,當需要接收DTMF信號時,首先往控制寄存器CRA和CRB寫入相應的控制字,把MT8880芯片設置為DTMF模式,通過讀取狀態(tài)寄存器中的D2位,可以判斷是否收到一個有效的DTMF信號并已譯碼。若已收到則讀取內(nèi)部“接收數(shù)據(jù)寄存器”的內(nèi)容(從MT8880芯片的D0~D3腳讀出)。當需要發(fā)送DTMF信號時,同樣應先往控制寄存器CRA和CRB寫入相應的控制字,把MT8880芯片設置為DTMF模式,通過讀取狀態(tài)寄存器中的D1位,可以判斷是否發(fā)送完一個 DTMF信號。若已發(fā)送完,則把下一個要發(fā)送的數(shù)字由D1~D3腳寫入到內(nèi)部“發(fā)送數(shù)據(jù)寄存器”。如果MT8880芯片同時又被設置為中斷模式,則通過檢測IRQ端狀態(tài),也能判斷一個DTMF信號收到或發(fā)送完畢與否。其應用電路見圖1。
1.5 手機模塊與單片機控制接口
絕大多數(shù)的手機也與固定電話一樣有振鈴信號,也可以收發(fā)DTMF信號,只要對普通手機稍做改動即可,即把手機的鈴流信號接出來,同時把手機的耳機口分成兩路(一路為DTMF輸出即耳麥線,另一路為DTMF輸入即話筒線),手機模塊與單片機的接口電路如圖2所示。
2 射頻技術及其硬件電路設計
微功率無線射頻技術主要用于特定環(huán)境下的數(shù)據(jù)傳輸,常用于現(xiàn)代家庭多路電源的集中控制、智能小區(qū)物業(yè)管理、防盜報警、無線水塔控制、無線抄表、航空、航模和遙控遙測等場合。
本文采用的無線編解碼芯片是PT2262/2272,是臺灣普城公司生產(chǎn)的一種CMOS工藝制造的低功耗低價位通用編解碼電路,PT2262/2272最多可有12位(A0~A11)三態(tài)地址端管腳(懸空、接高/接低電平),任意組合可提供531 441個地址碼,PT2262最多可有6位(D0~D5)數(shù)據(jù)端管腳,設定的地址碼和數(shù)據(jù)碼從17腳串行輸出,可用于無線遙控發(fā)射電路。
本文使用的無線發(fā)射頭與無線接收頭是現(xiàn)成的模塊。單片機與無線發(fā)射頭的接口電路框圖如圖3所示。無線接收頭經(jīng)解碼輸出后驅(qū)動電路框圖如圖4所示。
3 遠程控制應用實現(xiàn)
為了實現(xiàn)對多點設備的控制,無線編碼芯片PT2262的地址線選用A0~A7地址腳和D0~D3數(shù)據(jù)腳,這12個口線均通過單片機AT89S52來控制。由于單片機很容易實現(xiàn)“0”和“1”控制,所以單片機對A0~A7這8個地址線的控制可實現(xiàn)256種狀態(tài),即最多可以控制256種設備(每一個PT2272解碼芯片輸出對應于一種受控設備);同樣地,單片機對D0~D3這4條數(shù)據(jù)線的控制可實現(xiàn)16種狀態(tài),即對同一設備可實現(xiàn)最多16種方式的操作。本文實現(xiàn)的是異地遠程呼叫處理工廠各個無人操作車間的測試儀器,并能遙控操作進行相關的測試任務。系統(tǒng)框圖如圖5所示。
系統(tǒng)的工作流程如下:單片機主板可以接入固定電話線也可以接入一個手機模塊(專為沒有預裝固定電話的區(qū)域使用),操作員在異地拔打本地電話號碼(或手機號碼),單片機主板會自動檢測振鈴信號,然后自動摘機,并提示操作員輸入密碼。當單片機主板驗證通過后,操作員就可輸入地址碼(對應于一臺測試儀器,如001號)和操作碼(當前測試機的測試任務,如A字符,代表打開測試機電源),單片機主板識別后,通過編碼芯片送給無線發(fā)射頭,無線發(fā)射頭按特定的規(guī)則送出地址碼和操作碼,每一臺測試機上的無線接收頭都能接收到該無線信號,但只有與編碼芯片的地址匹配的那臺測試機才會響應并執(zhí)行操作碼。
4 軟件實現(xiàn)
軟件部分主要分為三部分:(1)正確檢測到固定電話的振鈴音并自動摘機或手機模塊自動接通接聽中的鈴流信號;(2)對DTMF信號的接收和發(fā)送處理,實現(xiàn)身份認證、向用戶發(fā)送提示音、接收用戶輸入的控制指令等。(3)控制編碼芯片地址線和數(shù)據(jù)線,從而把控制指令無線傳輸出去。
4.1 固話振鈴音的檢測及處理
針對固定電話、結合圖1,單片機AT89S52的TEST腳檢測到固定電話振鈴檢測信號波形,AT89S52只要判斷TEST腳的電平變化即可以正確檢測外線是否有電話撥入,然后控制TRI腳吸合繼電器實現(xiàn)模擬摘機。
針對手機模塊、結合圖2,本文選用的是一款諾基亞手機(手機設為自動接聽模式),經(jīng)局部改造提到鈴流信號線送入單片機AT89S52的GSM-RING的IO腳上,常態(tài)下為高電平,當有電話打過來時,GSM-RING的IO腳上得到的波形如圖6所示。所以單片機只要AT89S52判斷GSM-RING的IO腳的電平變化情況就可以了。
4.2 DTMF信號的收發(fā)處理
當固定電話或手機模塊自動摘機后,則啟用DTMF收發(fā)處理程序(主要是對MT8880芯片的處理),關鍵的程序代碼如下[3]:
“讀MT8880狀態(tài)或數(shù)據(jù)寄存器”函數(shù):
//功能說明:讀取MT8880狀態(tài)寄存器
//輸出參數(shù):返回MT8880的狀態(tài)寄存器值
//DTMF_REG為與MCU的接口寄存器,在"DTMF.H"有定義
uchar DTMF_CPR(void)
{
uchar uc_data;
DTMF_Q2=1; //Q2=1產(chǎn)生Q2的上升沿
_nop_(); //Q2的高電平持續(xù)
_nop_();
uc_data=DTMF_REG; //讀MT8880狀態(tài)寄存器
uc_data=uc_data&0x0f; //屏蔽高四位,只取低4位
DTMF_Q2=0; //Q2=0完成一個Q2時鐘
return(uc_data);
}
“寫MT8880控制或數(shù)據(jù)寄存器時序”函數(shù):
//功能說明:MT8880的Q2時序控制
void DTMF_CPW(void)
{
DTMF_Q2=1; //Q2=1產(chǎn)生Q2的上升沿
_nop_();//Q2的高電平持續(xù)
_nop_();
DTMF_Q2=0; //Q2=0完成一個Q2時鐘
}
“MT8880發(fā)送前的初始化”函數(shù):
//功能說明:發(fā)送前的初始化(對MT8880控制寄存器的
//操作)
void DTMF_send_init(void)
{
DTMF_REG=0x49;
//寫1001到MT8880控制寄存器CRA(允許發(fā)送)
DTMF_CPW(); //寫入控制器寄存器
DTMF_REG=0x40;//寫0000到MT8880控制寄存器CRB
DTMF_CPW(); //寫入控制器寄存器
}
“MT8880接收前的初始化”函數(shù):
//功能說明:接收前的初始化(對MT8880控制寄存器
//的操作)
void DTMF_rec_init(void)
{
DTMF_REG=0x4C;
//寫1100到MT8880控制寄存器CRA(使能中斷模式,
//接著寫CRB)
DTMF_CPW(); //寫入控制器寄存器
DTMF_REG=0x40; //寫0000到MT8880控制寄存器
//CRB
DTMF_CPW(); //寫入控制器寄存器
}
“MT8880接收1位DTMF”函數(shù):
//功能說明:接收1位DTMF信號
//返回參數(shù):接收到數(shù)據(jù)存于A
//DTMF_REG為與MCU的接口寄存器,在"DTMF.H"有定義
//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
uchar DTMF_rec_1byte(void)
{
uchar uc_data;
DTMF_REG=0x6f;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF_CPR(); //讀狀態(tài)寄存器SR
while(SRB2!=1);
//判斷SR的b2=1嗎?=1說明收到有效數(shù)據(jù)
DTMF_REG=0x2f;
uc_data=DTMF_CPR(); //讀取數(shù)據(jù)
return(uc_data);
}
“MT8880發(fā)送1位DTMF”函數(shù):
//功能說明:發(fā)送1位DTMF信號
//輸入?yún)?shù):待發(fā)送數(shù)據(jù)給A
//DTMF_REG為與MCU的接口寄存器,在"DTMF.H"有定義
//READSR為讀狀態(tài)寄存器SR時臨時存儲器,在"DTMF.H"
//有定義
void DTMF_send_1byte(uchar uc_data)
{
DTMF_ON();
DTMF_Q2=0;
DTMF_RSO=0;
DTMF_RW=0;
DTMF_REG=uc_data;
DTMF_CPW();
delay_ms(130);
//突發(fā)模式,送出后延時的100 ms再讀狀態(tài)寄存器
DTMF_REG=0x6f;//CS=0 RS0=1 RW=1 Q2=0
READSR=DTMF_CPR();
}
4.3 對編碼芯片地址線和數(shù)據(jù)線的控制
已正確識別用戶通過DTMF技術輸入的控制指令后,單片機只要控制8位地址線和4位數(shù)據(jù)線這12個IO口的高低電平就可以啟動無線傳輸。而在無線接收端是由硬件電路自動完成的,不需要軟件控制。
本文介紹的技術已在實際項目中運用,系統(tǒng)運行穩(wěn)定。如果增加語音提示功能,則整個系統(tǒng)能做得更加完善和更加人性化。要實現(xiàn)語音提示功能,只要增加一塊語音錄放芯片就可以了。
參考文獻
[1] 王鈞銘,王錦.電話機原理與維修[M].北京:電子工業(yè)出版社,2005.
[2] 馬忠梅.單片機C語言應用程序設計[M].北京:北京航空航天大學出版社,2007.
[3] MITEL公司.MT8880英文數(shù)據(jù)手冊[M].2000.