單片機和MODEM接口及利用AT命令來(lái)控制MODEM方案
隨著(zhù)自動(dòng)化程度的不斷提高,對現場(chǎng)數據遠程采集與傳輸的要求也日益提高,在電話(huà)通訊網(wǎng)絡(luò )相當普及的今天,最方便最靈活的方法就是采用MODEM(調制解調器)并借助于現有的模擬公用電話(huà)交換網(wǎng)進(jìn)行數據傳輸,經(jīng)過(guò)幾年的研究,筆者開(kāi)發(fā)了一種在單片機控制下通過(guò)公用電話(huà)交換機網(wǎng)絡(luò )做載體的數據傳輸系統,這種數據傳輸系統不受時(shí)間與地域的限制,并可隨時(shí)實(shí)時(shí)追蹤現場(chǎng)資料的變化情況,從而為遠程故障的診斷和排除提供了便利。
本文引用地址:http://dyxdggzs.com/article/171207.htm由于目前國內有關(guān)單片機和MODEM的接口資料很少,所以,本文主要就單片機和MODEM接口及如何利用AT命令來(lái)控制MODEM 做些介紹。
1 系統組成
圖1 所示為該遠程數據采集系統的系統組成圖,整個(gè)系統主要由現場(chǎng)數據采集器和監控中心兩部分組成,現場(chǎng)數據采集器負責將所采集到的數據進(jìn)行預處理后打包, 并通過(guò)現場(chǎng)調制解調器MODEM、公用電話(huà)網(wǎng)和監控中心的MODEM 將數據發(fā)送到監控中心。然后監控中心將接收到的數據進(jìn)行處理、顯示、存儲和分析,并根據需要向現場(chǎng)發(fā)送控制指令,由于監控中心采用計算機與MODEM 直接相連的方式, 因此硬件接口比較簡(jiǎn)單, 而軟件編寫(xiě)不是本文討論的重點(diǎn),不再贅述。系統有兩種工作方式:即監控中心呼叫現場(chǎng)請求發(fā)送數據和現場(chǎng)呼叫監控中心主動(dòng)發(fā)送數據。
圖1 系統組成圖
2 MODEM 命令
由于MODEM 是將數據通過(guò)公用電話(huà)網(wǎng)進(jìn)行遠程發(fā)送和傳輸的橋梁,這里先將MODEM 的功能及用法做一介紹“MODEM 是“調制解調器”的英文縮寫(xiě),所謂調制,就是將“0”和“1”的數字信號變成不同的頻率信號,調制到載波頻率上,并利用電話(huà)線(xiàn)進(jìn)行模擬信號的傳送, 解調是調制的反過(guò)程, 即將載波頻率上的頻率信號解調成與其對應的數字信號,傳送至終端控制器。
目前,我們在市場(chǎng)上所見(jiàn)到的MODEM 都用賀氏兼容的指令集來(lái)管理和設定MODEM 的各項操作和通訊功能,而一般這些指令皆以AT為前置碼,所以稱(chēng)這些指令為“AT指令”。下面介紹幾個(gè)常見(jiàn)的MODEM 指令,這些指令都以回車(chē)(RETURN)結尾。
ATA:手動(dòng)應答指令,強迫MODEM 摘機并檢測載波;
ATE0: 指令不回應,即向MODEM 發(fā)送的指令不在終端回顯;
ATV0: MODEM 以數字形式回應信息,即MODEM 收到指令后,以數字形式返回結果碼;
ATF:參數恢復為出廠(chǎng)值;
ATD0:忽略DTR信號;
ATS0:將DSR信號設定為ON;
ATD:發(fā)出撥號指令;
ATW0:將MODEM 目前的參數狀態(tài)存儲在參數表0 中;
ATY0:當MODEM 初始上電時(shí),調用存儲的參數表0;
ATZ0: 復位MODEM 并啟用存儲的第0組參數表;
ATZ=X:將電話(huà)號碼X存儲在MODEM 的內部存儲器中;
ATDS:撥出MODEM 預存儲的電話(huà)號碼。
那么,單片機如何利用這些指令來(lái)操作MODEM呢?下面以發(fā)送指令ATA為例來(lái)加以說(shuō)明,程序采用C51編寫(xiě),該程序只給出了相關(guān)的部分,
#include P>
#include P>
#define U8251_C XBYTE[0xfd00]
/* 定義8251 控制/狀態(tài)字地址*/
#define U8251_D XBYTE[0xfc00]
/*定義8251 數據緩沖區地址*/
unsigned char code ATA[4]={‘A’,‘T’,‘A’,0x0d};
/*0x0d為回車(chē)(return)控制符*/
void send-code (unsigned char code *send_addr,
unsigned char send_sum);
/*發(fā)送函數聲明,形式參數為發(fā)送
首地址和發(fā)送字符個(gè)數*/
評論