純軟件實(shí)現(xiàn)單片機(jī)遠(yuǎn)程通信
GMS972051是韓國LG公司生產(chǎn)的MW內(nèi)部帶2K E2PROM的與MCS-51兼容的單片機(jī)。
本文引用地址:http://cafeforensic.com/article/171866.htmGMS97C2051省去了MCS-51的P0和P3口,但是多了一個(gè)內(nèi)部硬件比較器。由于單片機(jī)的通信信號(hào)為TTL電平,如果不采取其它的措施,其在通信速率為9600bps時(shí)通信距離不超過5米。一般為了延長(zhǎng)單片機(jī)的通信距離,采用RS-232/RS- 485轉(zhuǎn)換器、RS-232/RS-422轉(zhuǎn)換器或光隔遠(yuǎn)程收發(fā)器。本文介紹的方法可將GMS97C2051單片機(jī)之間通信距離延長(zhǎng)到1200米以上,而且不需要添加任何硬件措施,完全用軟件來實(shí)現(xiàn)。
要用純軟件方法實(shí)現(xiàn)GMS97C2051單片機(jī)之間的遠(yuǎn)程通信,首先必須將單片機(jī)的TTL電平的軟件方法轉(zhuǎn)換為差分電平,其次要用普通I/O口線來構(gòu)成軟件串行口,并且在軟件上進(jìn)行正確的配合。
TTL電平轉(zhuǎn)換成差分電平的純軟件方法
GMS97C2051 單片機(jī)的信號(hào)均為TTL電平。TTL電平信號(hào)傳輸距離非常有限,一般在9600bps傳輸率時(shí)傳輸距離不超過5米。而差分電平信號(hào)則是取決于兩種信號(hào)線之間的電平差值,如果某條信號(hào)線的電平高于另一條,則信號(hào)為1,否則為0。由于差分電平信號(hào)可以避免長(zhǎng)距離傳輸導(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。
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)方法
由普通I/O口線來實(shí)現(xiàn)串行通信,習(xí)慣上稱為軟件串行口。采用差分電平通信的軟件串行口的硬件接線圖如圖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ù)在后。
評(píng)論