利用純軟件實(shí)現(xiàn)單片機(jī)遠(yuǎn)程通信的設(shè)計(jì)
出處:武漢華中理大學(xué)波士電子公司 周定波 發(fā)布于:2011-08-29 20:40:03
GMS972051是韓國LG公司生產(chǎn)的MW內(nèi)部帶2K E2PROM的與MCS-51兼容的單片機(jī)。GMS97C2051省去了MCS-51的P0和P3口,但是多了一個(gè)內(nèi)部硬件比較器。由于單片機(jī)的通信信號(hào)為TTL電平,如果不采取其它的措施,其在通信速率為9600bps時(shí)通信距離不超過5米。一般為了延長單片機(jī)的通信距離,采用RS-232/RS-485轉(zhuǎn)換器、RS-232/RS-422轉(zhuǎn)換器或光隔遠(yuǎn)程收發(fā)器。
要用純軟件方法實(shí)現(xiàn)GMS97C2051單片機(jī)之間的遠(yuǎn)程通信,首先必須將單片機(jī)的TTL電平的軟件方法轉(zhuǎn)換為差分電平,其次要用普通I/O口線來構(gòu)成軟件串行口,并且在軟件上進(jìn)行正確的配合。
TTL電平轉(zhuǎn)換成差分電平的純軟件方法
TTL是IP協(xié)議包中的一個(gè)值,它告訴網(wǎng)絡(luò),數(shù)據(jù)包在網(wǎng)絡(luò)中的時(shí)間是否太長而應(yīng)被丟棄。有很多原因使包在一定時(shí)間內(nèi)不能被傳遞到目的地。解決方法就是在一段時(shí)間后丟棄這個(gè)包,然后給發(fā)送者一個(gè)報(bào)文,由發(fā)送者決定是否要重發(fā)。TTL的初值通常是系統(tǒng)缺省值,是包頭中的8位的域。TTL的初設(shè)想是確定一個(gè)時(shí)間范圍,超過此時(shí)間就把包丟棄。由于每個(gè)路由器都至少要把TTL域減一,TTL通常表示包在被丟棄前多能經(jīng)過的路由器個(gè)數(shù)。當(dāng)記數(shù)到0時(shí),路由器決定丟棄該包,并發(fā)送一個(gè)ICMP報(bào)文給初的發(fā)送者。
GMS97C2051單片機(jī)的信號(hào)均為TTL電平。TTL電平信號(hào)傳輸距離非常有限,一般在9600bps傳輸率時(shí)傳輸距離不超過5米。而差分電平信號(hào)則是取決于兩種信號(hào)線之間的電平差值,如果某條信號(hào)線的電平高于另一條,則信號(hào)為1,否則為0.由于差分電平信號(hào)可以避免長距離傳輸導(dǎo)線上的電荷積累,并且具有更寬的電平范圍,所以傳輸距離遠(yuǎn)得多。RS485差分電平信號(hào)在9600bps傳輸率時(shí)傳輸距離可達(dá)1200米。為了用純軟件實(shí)現(xiàn)差分電平傳輸就不能使用GMS97C2051本身的硬件串行口,而是用普通I/O線來實(shí)現(xiàn)串行通信。差分電平要用兩條I/O口線來實(shí)現(xiàn),比如P1.2和P1.3兩條線(見圖1)。當(dāng)傳輸信號(hào)為1時(shí),P1.2為+5V,而P1.3為0V.當(dāng)傳輸信號(hào)為0時(shí),P1.2為0V為0V,而P1.3為+5V.注意P1.2和P1.3不得同時(shí)置+5V或同時(shí)置0V.

為了用純軟件實(shí)現(xiàn)差分電平傳輸就不能使用GMS97C2051本身的硬件串行口,而是用普通I/O線來實(shí)現(xiàn)串行通信。差分電平要用兩條I/O口線來實(shí)現(xiàn),比如P1.2和P1.3兩條線(見圖1)。當(dāng)傳輸信號(hào)為1時(shí),P1.2為+5V,而P1.3為0V.當(dāng)傳輸信號(hào)為0時(shí),P1.2為0V為0V,而P1.3為+5V.注意P1.2和P1.3不得同時(shí)置+5V或同時(shí)置0V.
GMS97C2051單片機(jī)的P1.0和P1.1可以分別作為片內(nèi)精密模擬電壓比較器的正輸入端(AIN0)和負(fù)輸入端(AINI),所以正好可以用于接收差分電平信號(hào)。內(nèi)部電平比較器的輸出已經(jīng)在芯片內(nèi)部連到P3.6口,所以可以通過讀取P3.6口的值來得到差分電平信號(hào)。
軟件串行口的實(shí)現(xiàn)方法
串口叫做串行接口,現(xiàn)在的PC 機(jī)一般有兩個(gè)串行口COM 1 和COM 2 .串行口不同于并行口之處在于它的數(shù)據(jù)和控制信息是一位接一位地傳送出去的。雖然這樣速度會(huì)慢一些,但傳送距離較并行口更長,因此若要進(jìn)行較長距離的通信時(shí),應(yīng)使用串行口。通常COM 1 使用的是9 針D 形連接器,也稱之為RS-232接口,而COM 2 有的使用的是老式的DB25 針連接器,也稱之為RS-422接口,不過目前已經(jīng)很少使用。
串行端口(Serial port),或稱串列埠、序列埠、串口,主要用于串列式逐位元數(shù)據(jù)傳輸。常見的為一般電腦應(yīng)用的RS-232(使用 25 針或 9 針連接器),工業(yè)電腦應(yīng)用的半雙工RS-485與全雙工RS-422.串口叫做串行接口,也稱串行通信接口,按電氣標(biāo)準(zhǔn)及協(xié)議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標(biāo)準(zhǔn)只對(duì)接口的電氣特性做出規(guī)定,不涉及接外掛程式、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標(biāo)準(zhǔn),主要應(yīng)用于高速數(shù)據(jù)傳輸領(lǐng)域。
采用差分電平通信的軟件串行口的硬件接線圖如圖2.A、B兩機(jī)均為GMS97C2051單片機(jī)。P1.2和P1.3用于發(fā)送,P1.0和P1.1口用于接收,P1.0同時(shí)接本機(jī)中INI0.軟件串行口一般全用標(biāo)準(zhǔn)的10位異步通信格式:1位起始位(信號(hào)0),8位數(shù)據(jù)位,1位停止位(信號(hào)1)。接收時(shí)均是低位數(shù)據(jù)在前,高位數(shù)據(jù)在后。

軟件串行口接收和發(fā)關(guān)的工作原理和過程如下:?jiǎn)纹瑱C(jī)復(fù)位后,執(zhí)行初始化程序時(shí),定義P1口為位控方式,其中P1.0和P1.1定義為輸入,P1.2和P1.3定義為輸出。P1.2初始化為"1",P1.3初始化為"0",這樣發(fā)送信號(hào)處于停止位(差分電平"1")。定義INT0為負(fù)沿觸發(fā)。允許中斷且定義成高優(yōu)先級(jí),然后開中斷,兩機(jī)進(jìn)入隨時(shí)可開始串行通信的等待狀態(tài)。A、B不通信時(shí),兩機(jī)的收發(fā)均為"1",一旦某機(jī)(假設(shè)為A)需要與對(duì)方通信,A機(jī)以約定的波特率(假定為9600bps),通過P1.2和P1.3發(fā)送。發(fā)關(guān)和接收一個(gè)字節(jié)的過程如下:
A機(jī)發(fā)送端首先發(fā)送起始位("0"電平),B機(jī)INT0引腳產(chǎn)生下跳沿后,產(chǎn)生中斷申請(qǐng)。B機(jī)CPU響應(yīng)此中斷后,執(zhí)行INT0中斷服務(wù)子程序。在中斷服務(wù)子程序開始,用位輸入指令讀入P3.6狀態(tài),如果是"1"電平,則表明此次中斷是受干擾所致,因而取消此次接收過程,中斷返回;如果P3.6狀態(tài)讀入電產(chǎn)是"0",則表明本次中斷確系A(chǔ)機(jī)發(fā)送超始位所引起,經(jīng)延時(shí),在A機(jī)發(fā)送各數(shù)據(jù)位中間處進(jìn)行采樣,獲得各數(shù)據(jù)位的狀態(tài),生成一個(gè)字節(jié),送有關(guān)單元之后中斷返回。雖然送往INT0的信號(hào)為TTL電平,但是由于它的傳輸速率非常之低,加上軟件抗干擾措施,所以仍然可以有效地傳輸1200米。
軟件串行通信的編程
在通信領(lǐng)域內(nèi),有兩種數(shù)據(jù)通信方式:并行通信和串行通信。隨著計(jì)算機(jī)網(wǎng)絡(luò)化和微機(jī)分級(jí)分布式應(yīng)用系統(tǒng)的發(fā)展,通信的功能越來越重要。通信是指計(jì)算機(jī)與外界的信息傳輸,既包括計(jì)算機(jī)與計(jì)算機(jī)之間的傳輸,也包括計(jì)算機(jī)與外部設(shè)備,如終端、打印機(jī)和磁盤等設(shè)備之間的傳輸。串行通信是指 使用一條數(shù)據(jù)線,將數(shù)據(jù)一位一位地依次傳輸,每一位數(shù)據(jù)占據(jù)一個(gè)固定的時(shí)間長度。其只需要少數(shù)幾條線就可以在系統(tǒng)間交換信息,特別使用于計(jì)算機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間的遠(yuǎn)距離通信。串行通信是指計(jì)算機(jī)主機(jī)與外設(shè)之間以及主機(jī)系統(tǒng)與主機(jī)系統(tǒng)之間數(shù)據(jù)的串行傳送。使用串口通信時(shí),發(fā)送和接收到的每一個(gè)字符實(shí)際上都是一位的傳送的,每一位為1或者為0.
我們針對(duì)性地采取以下措施:用定義成中斷的外中斷引腳下接收線相連,來及時(shí)捕捉起始位信息,并在確定采樣時(shí)刻的計(jì)算中扣除中斷響應(yīng)滯后的延時(shí)時(shí)間;精心設(shè)計(jì)、編寫程序,逐條計(jì)算指令實(shí)際執(zhí)行時(shí)間,排除其他中斷干擾(關(guān)中斷),從而保證在每個(gè)數(shù)據(jù)位中間處進(jìn)行采樣;每位重復(fù)采樣多次,確定各數(shù)據(jù)位的狀態(tài),從而可大大減少遠(yuǎn)程通信常見的瞬態(tài)干擾(其特點(diǎn)是幅度大、作用時(shí)間短、隨機(jī)性強(qiáng))對(duì)通信的不良影響。綜合采用上述技術(shù)措施以中斷方式工作的接收(1幀)的中斷服務(wù)源程序見程序清單):

以上指令共46個(gè)機(jī)器周期(T),加上中斷響應(yīng)平均延時(shí)5個(gè)機(jī)器周期,所以程序執(zhí)行到此,即A機(jī)發(fā)送起始位(開始變低)到此已經(jīng)歷51T.由于MCS-51指令的1個(gè)機(jī)器周期(T)相當(dāng)于12個(gè)時(shí)鐘周期,所以當(dāng)用12MHz的晶振時(shí),1個(gè)機(jī)器周期(1T)相當(dāng)于是1μs.51T相當(dāng)于51μs.
從A機(jī)發(fā)出超始位到此共延時(shí)51T+4T+88T=143T,相當(dāng)于143μs.
傳輸率為9600bps時(shí),每位費(fèi)時(shí)104μs(即1s/9600)。從起始位開始到D0位中間1.5位,費(fèi)時(shí)1.5×104μs=156μs.下面程序在156μs及其前后各11μs處對(duì)D0位進(jìn)行共3次采樣,記錄D0采樣結(jié)果為0次數(shù)。如果3次采樣結(jié)果為0的次數(shù)小于等于1,則判斷D0=1.如果3次采樣結(jié)果為0的次數(shù)大于等于2,則判斷D0=0.這樣極大地增強(qiáng)了串行通信的可靠性。然后再經(jīng)過延時(shí)后對(duì)其他各位數(shù)據(jù)進(jìn)行同樣的三次采樣,直到D0~D7共8位數(shù)據(jù)全部采樣結(jié)束。
以上程序執(zhí)行用去40T,加上前面的143T,共花去183μs.每次返回NEXT3循環(huán),讀入一位數(shù)據(jù)。在程序輸入NEXT3前,給R0賦值02H,就能保證以后各位數(shù)據(jù)位3次采樣的準(zhǔn)確時(shí)刻。此中斷服務(wù)子程序段不僅能實(shí)現(xiàn)在每位數(shù)據(jù)采樣,而且還在中間時(shí)刻前后11μs各采樣1次。以3次數(shù)據(jù)的多數(shù)結(jié)果確定該位的值,可大大降低因干擾出錯(cuò)的概率,因此在干擾嚴(yán)重的遠(yuǎn)程通信中有很強(qiáng)的適應(yīng)性。
結(jié)語
本文介紹的GMS97C2051單片機(jī)遠(yuǎn)程通信的純軟件方法和程序也適合于ATMEL公司的AT89C2051單片機(jī),對(duì)其他單片機(jī)的遠(yuǎn)程通信也具有一定的參考價(jià)值。文中提供的軟件接口方法和源程序經(jīng)實(shí)際應(yīng)用表明,該方法可延長通信距離至1200米(9600bps時(shí))。本方法的不足之處在于軟件編程要求比較高,如果要實(shí)現(xiàn)即軟件編程簡(jiǎn)單、又通用性好的單片機(jī)遠(yuǎn)程通信,還是要使用RS-232/RS-485/RS-422轉(zhuǎn)換器或光隔遠(yuǎn)程收發(fā)器。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 工業(yè)5G技術(shù)在智能制造中的應(yīng)用與實(shí)踐解析2025/12/31 10:57:21
- 工業(yè)以太網(wǎng)交換機(jī)選型與現(xiàn)場(chǎng)應(yīng)用技術(shù)指南2025/12/18 10:48:14
- 無線傳輸電路基礎(chǔ),射頻前端設(shè)計(jì)、天線匹配與鏈路預(yù)算計(jì)算2025/10/27 13:55:50
- ASK 解調(diào)的核心要點(diǎn)與實(shí)現(xiàn)方式2025/9/5 16:46:17
- 雙偶極子天線:結(jié)構(gòu)、特性與應(yīng)用全解析2025/9/3 10:29:21
- PCB焊盤與過孔設(shè)計(jì)核心實(shí)操規(guī)范(含可焊性與可靠性保障)
- 汽車電子常用電子元器件選型指南
- MOSFET驅(qū)動(dòng)與隔離方案設(shè)計(jì)
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法









