當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

  摘要:介紹了一種以W78E52單片機(jī)為控制核心和調(diào)制解調(diào)器 (MODEM )接口進(jìn)行遠(yuǎn)程數(shù)據(jù)采集與傳送的實(shí)用電路。該電路結(jié)構(gòu)簡(jiǎn)單 ,可靠性高 ,控制方便。文中講述了MODEM的AT指令描述以及用單片機(jī)控制MODEM的方法,并結(jié)合系統(tǒng)功能及原理給出了主程序流程圖。

  隨著自動(dòng)化程度的不斷提高,對(duì)現(xiàn)場(chǎng)數(shù)據(jù)遠(yuǎn)程采集與傳輸?shù)囊笠踩找嫣岣撸陔娫捦ㄓ嵕W(wǎng)絡(luò)相當(dāng)普及的今天,最方便最靈活的方法就是采用MODEM(調(diào)制解調(diào)器)并借助于現(xiàn)有的模擬公用電話交換網(wǎng)進(jìn)行數(shù)據(jù)傳輸,經(jīng)過幾年的研究,筆者開發(fā)了一種在單片機(jī)控制下通過公用電話交換機(jī)網(wǎng)絡(luò)做載體的數(shù)據(jù)傳輸系統(tǒng),這種數(shù)據(jù)傳輸系統(tǒng)不受時(shí)間與地域的限制,并可隨時(shí)實(shí)時(shí)追蹤現(xiàn)場(chǎng)資料的變化情況,從而為遠(yuǎn)程故障的診斷和排除提供了便利。

  由于目前國(guó)內(nèi)有關(guān)單片機(jī)和MODEM的接口資料很少,所以,本文主要就單片機(jī)和MODEM接口及如何利用AT命令來(lái)控制MODEM 做些介紹。

  1 系統(tǒng)組成

  圖1 所示為該遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的系統(tǒng)組成圖,整個(gè)系統(tǒng)主要由現(xiàn)場(chǎng)數(shù)據(jù)采集器和監(jiān)控中心兩部分組成,現(xiàn)場(chǎng)數(shù)據(jù)采集器負(fù)責(zé)將所采集到的數(shù)據(jù)進(jìn)行預(yù)處理后打包, 并通過現(xiàn)場(chǎng)調(diào)制解調(diào)器MODEM、公用電話網(wǎng)和監(jiān)控中心的MODEM 將數(shù)據(jù)發(fā)送到監(jiān)控中心。然后監(jiān)控中心將接收到的數(shù)據(jù)進(jìn)行處理、顯示、存儲(chǔ)和分析,并根據(jù)需要向現(xiàn)場(chǎng)發(fā)送控制指令,由于監(jiān)控中心采用計(jì)算機(jī)與MODEM 直接相連的方式, 因此硬件接口比較簡(jiǎn)單, 而軟件編寫不是本文討論的重點(diǎn),不再贅述。系統(tǒng)有兩種工作方式:即監(jiān)控中心呼叫現(xiàn)場(chǎng)請(qǐng)求發(fā)送數(shù)據(jù)和現(xiàn)場(chǎng)呼叫監(jiān)控中心主動(dòng)發(fā)送數(shù)據(jù)。

  

  圖1 系統(tǒng)組成圖

  2 MODEM 命令

  由于MODEM 是將數(shù)據(jù)通過公用電話網(wǎng)進(jìn)行遠(yuǎn)程發(fā)送和傳輸?shù)臉蛄?,這里先將MODEM 的功能及用法做一介紹“MODEM 是“調(diào)制解調(diào)器”的英文縮寫,所謂調(diào)制,就是將“0”和“1”的數(shù)字信號(hào)變成不同的頻率信號(hào),調(diào)制到載波頻率上,并利用電話線進(jìn)行模擬信號(hào)的傳送, 解調(diào)是調(diào)制的反過程, 即將載波頻率上的頻率信號(hào)解調(diào)成與其對(duì)應(yīng)的數(shù)字信號(hào),傳送至終端控制器。

  目前,我們?cè)谑袌?chǎng)上所見到的MODEM 都用賀氏兼容的指令集來(lái)管理和設(shè)定MODEM 的各項(xiàng)操作和通訊功能,而一般這些指令皆以AT為前置碼,所以稱這些指令為“AT指令”。下面介紹幾個(gè)常見的MODEM 指令,這些指令都以回車(RETURN)結(jié)尾。

  ATA:手動(dòng)應(yīng)答指令,強(qiáng)迫MODEM 摘機(jī)并檢測(cè)載波;

  ATE0: 指令不回應(yīng),即向MODEM 發(fā)送的指令不在終端回顯;

  ATV0: MODEM 以數(shù)字形式回應(yīng)信息,即MODEM 收到指令后,以數(shù)字形式返回結(jié)果碼;

  AT&F:參數(shù)恢復(fù)為出廠值;

  AT&D0:忽略DTR信號(hào);

  AT&S0:將DSR信號(hào)設(shè)定為ON;

  ATD:發(fā)出撥號(hào)指令;

  AT&W0:將MODEM 目前的參數(shù)狀態(tài)存儲(chǔ)在參數(shù)表0 中;

  AT&Y0:當(dāng)MODEM 初始上電時(shí),調(diào)用存儲(chǔ)的參數(shù)表0;

  ATZ0: 復(fù)位MODEM 并啟用存儲(chǔ)的第0組參數(shù)表;

  AT&Z=X:將電話號(hào)碼X存儲(chǔ)在MODEM 的內(nèi)部存儲(chǔ)器中;

  ATDS:撥出MODEM 預(yù)存儲(chǔ)的電話號(hào)碼。

  那么,單片機(jī)如何利用這些指令來(lái)操作MODEM呢?下面以發(fā)送指令A(yù)TA為例來(lái)加以說(shuō)明,程序采用C51編寫,該程序只給出了相關(guān)的部分,

  #include < P>

  #include < P>

  #define U8251_C XBYTE[0xfd00]

  /* 定義8251 控制/狀態(tài)字地址*/

  #define U8251_D XBYTE[0xfc00]

  /*定義8251 數(shù)據(jù)緩沖區(qū)地址*/

  unsigned char code ATA[4]={‘A’,‘T’,‘A’,0x0d};

  /*0x0d為回車(return)控制符*/

  void send-code (unsigned char code *send_addr,

  unsigned char send_sum);

  /*發(fā)送函數(shù)聲明,形式參數(shù)為發(fā)送

  首地址和發(fā)送字符個(gè)數(shù)*/

  void main()

  {

  ……

  send_code(ATA,4); /*發(fā)送ATA應(yīng)答命令*/

  ……

  }

  void send_code(unsigned char code *send_addr,

  unsigned char send_sum)

  {

  do{

  while((U8251_c&0x05)!=0x05);

  U8251_D=*send_addr;

  send_addr++;

  }while(--send_sum);

  }

  為了單片機(jī)對(duì)MODEM 的控制和操作,對(duì)本系統(tǒng)設(shè)計(jì)中的MODEM 做了如下初始化:

  AT&FE0V0&D0&S0&Y0&W0

  3 接口電路

  圖2 為該現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)中單片機(jī)和MODEM的接口電路圖, 單片機(jī)選用Winbord(華幫)公司生產(chǎn)的高性能低功耗單片機(jī)W78E52B,它采用80C31內(nèi)核,在指令上與MCS-51完全兼容,內(nèi)含8k的電可擦除MTP ROM(Multiple-Time Programmable ROM)。其內(nèi)部串口能和其它有串口的通訊設(shè)備一起進(jìn)行數(shù)據(jù)采集(這部分在圖2中沒畫出);

  

  圖2 單片機(jī)和MODEM 的接口電路

  考慮到所采集的數(shù)據(jù)較多,故擴(kuò)展了一片8155 作為外部數(shù)據(jù)存儲(chǔ)器,并兼做并行數(shù)據(jù)采集接口,其內(nèi)部14 位定時(shí)器作為分頻器使用;另擴(kuò)展的一片8251 用來(lái)和MODEM 接口,8251的內(nèi)部工作時(shí)序,發(fā)送器時(shí)鐘和接收器時(shí)鐘需要外部輸入,在設(shè)計(jì)中,單片機(jī)提供的ALE信號(hào)作為其外部輸入,因而無(wú)需單獨(dú)設(shè)計(jì)分頻器,由于在單片機(jī)訪問外部存貯器時(shí), ALE要丟失一個(gè)周期,因而采用圖2所示的方法,可充分利用系統(tǒng)資源,根據(jù)接收時(shí)鐘輸入RXCLK和發(fā)送時(shí)鐘輸入TXCLK的不同,8251 的發(fā)送波特率和接收波特率可以不同,在本系統(tǒng)中,發(fā)送波特率和接收波特率相同,都由8155定時(shí)器分頻輸出TMROUT供給。發(fā)送數(shù)據(jù)可根據(jù)系統(tǒng)要求在主程序中完成,接收數(shù)據(jù)緩沖區(qū)請(qǐng)求輸出RXRDY經(jīng)74LS02反向后接78E52B的中斷輸入INT0,接收數(shù)據(jù)采用中斷方式控制,系統(tǒng)設(shè)計(jì)時(shí)忽略了DSR信號(hào), 因而在圖2 中將其直接接地;

  RS232 接口電平轉(zhuǎn)換電路采用一片具有五對(duì)輸入和輸出的MSX238,它自帶電荷泵,采用單5伏電源,只用一片便可提供本系統(tǒng)所有RS232電平的驅(qū)動(dòng)與轉(zhuǎn)換。

  4 現(xiàn)場(chǎng)數(shù)據(jù)采集器的功能及原理

  現(xiàn)場(chǎng)數(shù)據(jù)采集器有兩種工作方式, 即主叫方式和被叫應(yīng)答方式。主叫方式就是現(xiàn)場(chǎng)數(shù)據(jù)采集器主動(dòng)呼叫監(jiān)控中心;被叫應(yīng)答方式是在現(xiàn)場(chǎng)數(shù)據(jù)采集器收到監(jiān)控中心的呼叫振鈴后響應(yīng)應(yīng)答指令。另外,現(xiàn)場(chǎng)數(shù)據(jù)采集器具有遠(yuǎn)程設(shè)置主叫呼叫號(hào)碼的功能,其軟件編制流程圖如圖3 所示。

  

  圖3 現(xiàn)場(chǎng)數(shù)據(jù)采集器的程序流程圖

  4.1 通訊波特率

  8251 的通訊波特率取決于RXCLK和TXCLK的時(shí)鐘輸入,在異步方式中,RXCLK,TXCLK可以是波特率,也可以是波特率的16 或64倍。這由8251控制字中的波特率因子來(lái)決定,在本系統(tǒng)設(shè)計(jì)中,設(shè)波特率因子為異步X16,即RXCLK,TXCLK是傳輸波特率的16倍。從圖2可以看出,RXCLK,TXCLK由8155 的TMROUT給出, 而8155 的TMRIN為系統(tǒng)時(shí)鐘fosc的1/6,因此選擇波特率的關(guān)鍵就是確定8155定時(shí)器的時(shí)間常數(shù)。如果將8155 的定時(shí)器設(shè)為連續(xù)方波輸出,那么8155 定時(shí)器的時(shí)間常數(shù)N和定時(shí)器輸入頻率fTMRIN,輸出頻率fTMROUT的關(guān)系為:fTMROUT=fTMRIN/N,設(shè)8251的分頻系數(shù)為16,則傳輸波特率可有下式計(jì)算:

  波特率=fTMROUT/16=fTMRIN/16N=fosc/(6X16N)

  本系統(tǒng)選用頻率為11.0592MHz 的晶振,fosc為1.0592MHz, 若8251 采用2400Hz的波特率來(lái)傳輸數(shù)據(jù),則8155的定時(shí)器常數(shù)N為:

  N=11.0592X106/(2400X16X6)=48=30H

  按照以上分析,則8155,8251 初始化編程如下:

  void initialize rs(void)

  {

  U8155_IO=0xc0; /*8155命令字初始化*/

  U8155_TO=0x30;/*送8155定時(shí)器常數(shù)低字節(jié)*/

  U8155_TH=0x40; /*送8155定時(shí)器常數(shù)高字節(jié)*/

  U8251_C=0x4e; /* 方式控制字初始化*/

  U8251_C=0x37;

  }

  4.2 遠(yuǎn)程設(shè)置主叫呼叫號(hào)碼

  在本系統(tǒng)中,當(dāng)關(guān)鍵數(shù)據(jù)發(fā)生越限變化時(shí),現(xiàn)場(chǎng)數(shù)據(jù)采集器能夠自動(dòng)呼叫監(jiān)控中心,而被呼叫的電話號(hào)碼卻不能夠存儲(chǔ)在程序的ROM中, 原因有兩條:第一:監(jiān)控中心的電話號(hào)碼可能會(huì)變更;第二:不同的用戶被呼叫的電話號(hào)碼不一樣; 而在現(xiàn)場(chǎng)數(shù)據(jù)采集器上設(shè)計(jì)一片EEPROM 也不是最好的方案;解決這一問題的最佳方法是將此電話號(hào)碼存儲(chǔ)在MODEM 中, 那么如何實(shí)現(xiàn)呢?可用前面提到的AT&Z=X(X為電話號(hào)碼) 命令進(jìn)行遠(yuǎn)程設(shè)置,當(dāng)監(jiān)控中心需要修改這個(gè)電話號(hào)碼時(shí), 就呼叫現(xiàn)場(chǎng)數(shù)據(jù)采集器,并將此電話號(hào)碼傳輸給數(shù)據(jù)采集器,然后由數(shù)據(jù)采集器自動(dòng)用AT&Z=X(X為電話號(hào)碼)命令將此號(hào)碼存儲(chǔ)在MODEM 中。

  4.3 主叫方式

  當(dāng)現(xiàn)場(chǎng)數(shù)據(jù)采集器采集到的關(guān)鍵數(shù)據(jù)發(fā)生越限變化時(shí),現(xiàn)場(chǎng)數(shù)據(jù)采集器便利用AT指令A(yù)TDS主動(dòng)撥打存儲(chǔ)在MODEM 中的電話號(hào)碼來(lái)呼叫監(jiān)控中心,并將關(guān)鍵數(shù)據(jù)打包傳送給監(jiān)控中心,在監(jiān)控中心收到信息包后,系統(tǒng)便可進(jìn)行存儲(chǔ)和分析,以供值班人員判斷并做出處理。

  4.4 被叫方式

  當(dāng)監(jiān)控中心需要獲得現(xiàn)場(chǎng)數(shù)據(jù)時(shí), 可以主動(dòng)撥號(hào)呼叫現(xiàn)場(chǎng)數(shù)據(jù)采集器, 在圖2中,W78E52 的P1.1在檢測(cè)到預(yù)定次數(shù)的振鈴信號(hào)時(shí)發(fā)出MODEM應(yīng)答指令A(yù)TA,并在延時(shí)等待MODEM 連通以及雙方握手成功后, 由監(jiān)控中心向現(xiàn)場(chǎng)數(shù)據(jù)采集器發(fā)出請(qǐng)求發(fā)送數(shù)據(jù)指令。現(xiàn)場(chǎng)數(shù)據(jù)采集器收到指令后將實(shí)時(shí)變化的動(dòng)態(tài)數(shù)據(jù)傳送給監(jiān)控中心, 以使監(jiān)控中心隨時(shí)中斷對(duì)數(shù)據(jù)接收, 并向現(xiàn)場(chǎng)數(shù)據(jù)采集器發(fā)出掛機(jī)指令?,F(xiàn)場(chǎng)數(shù)據(jù)采集器在收到掛機(jī)指令后停止發(fā)送數(shù)據(jù)并掛機(jī)。

  4.5 存在問題及解決方法

  本系統(tǒng)剛開始設(shè)計(jì)時(shí),8251 的復(fù)位輸入端和CPU的復(fù)位輸入端是連接在一起,這樣設(shè)計(jì)曾出現(xiàn)過8251不能可靠復(fù)位的問題。 后改為靠W78E52的P1.0 給8251發(fā)復(fù)位脈沖,圖2 所示,這樣,就可根據(jù)軟件抗干擾的需要隨時(shí)復(fù)位8251,用C51編寫的復(fù)位程序如下:

  void reset_8251(void)

  {

  P1^0=1;

  ACC=0;

  while(--ACC);

  P1^0=0;

  }

  5 結(jié)論

  實(shí)踐證明,該系統(tǒng)和MODEM 接口具有電路簡(jiǎn)單,成本低,可靠性高的特點(diǎn)。在實(shí)際應(yīng)用中取得了良好效果.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉