純軟件實現(xiàn)單片機遠程通信
GMS972051是韓國LG公司生產(chǎn)的MW內(nèi)部帶2K E2PROM的與MCS-51兼容的單片機。
本文引用地址:http://m.butianyuan.cn/article/171866.htmGMS97C2051省去了MCS-51的P0和P3口,但是多了一個內(nèi)部硬件比較器。由于單片機的通信信號為TTL電平,如果不采取其它的措施,其在通信速率為9600bps時通信距離不超過5米。一般為了延長單片機的通信距離,采用RS-232/RS- 485轉(zhuǎn)換器、RS-232/RS-422轉(zhuǎn)換器或光隔遠程收發(fā)器。本文介紹的方法可將GMS97C2051單片機之間通信距離延長到1200米以上,而且不需要添加任何硬件措施,完全用軟件來實現(xiàn)。
要用純軟件方法實現(xiàn)GMS97C2051單片機之間的遠程通信,首先必須將單片機的TTL電平的軟件方法轉(zhuǎn)換為差分電平,其次要用普通I/O口線來構成軟件串行口,并且在軟件上進行正確的配合。
TTL電平轉(zhuǎn)換成差分電平的純軟件方法
GMS97C2051 單片機的信號均為TTL電平。TTL電平信號傳輸距離非常有限,一般在9600bps傳輸率時傳輸距離不超過5米。而差分電平信號則是取決于兩種信號線之間的電平差值,如果某條信號線的電平高于另一條,則信號為1,否則為0。由于差分電平信號可以避免長距離傳輸導線上的電荷積累,并且具有更寬的電平范圍,所以傳輸距離遠得多。RS485差分電平信號在9600bps傳輸率時傳輸距離可達1200米。
為了用純軟件實現(xiàn)差分電平傳輸就不能使用GMS97C2051本身的硬件串行口,而是用普通I/O線來實現(xiàn)串行通信。差分電平要用兩條I/O口線來實現(xiàn),比如P1.2和P1.3兩條線(見圖1)。當傳輸信號為1時,P1.2為+5V,而 P1.3為0V。當傳輸信號為0時,P1.2為0V為0V,而P1.3為 +5V。注意P1.2和P1.3不得同時置+5V或同時置0V。
GMS97C2051 單片機的P1.0和P1.1可以分別作為片內(nèi)精密模擬電壓比較器的正輸入端(AIN0)和負輸入端(AINI),所以正好可以用于接收差分電平信號。內(nèi)部電平比較器的輸出已經(jīng)在芯片內(nèi)部連到P3.6口,所以可以通過讀取P3.6口的值來得到差分電平信號。
軟件串行口的實現(xiàn)方法
由普通I/O口線來實現(xiàn)串行通信,習慣上稱為軟件串行口。采用差分電平通信的軟件串行口的硬件接線圖如圖2.A、B兩機均為GMS97C2051單片機。 P1.2和P1.3用于發(fā)送,P1.0和P1.1口用于接收,P1.0同時接本機中INI0。軟件串行口一般全用標準的10位異步通信格式:1位起始位(信號0),8位數(shù)據(jù)位,1位停止位(信號1)。接收時均是低位數(shù)據(jù)在前,高位數(shù)據(jù)在后。
評論