利用純軟件實現(xiàn)單片機遠程通信的設計
要用純軟件方法實現(xiàn)GMS97C2051單片機之間的遠程通信,首先必須將單片機的TTL電平的軟件方法轉換為差分電平,其次要用普通I/O口線來構成軟件串行口,并且在軟件上進行正確的配合。
TTL電平轉換成差分電平的純軟件方法
TTL是IP協(xié)議包中的一個值,它告訴網(wǎng)絡,數(shù)據(jù)包在網(wǎng)絡中的時間是否太長而應被丟棄。有很多原因使包在一定時間內(nèi)不能被傳遞到目的地。解決方法就是在一段時間后丟棄這個包,然后給發(fā)送者一個報文,由發(fā)送者決定是否要重發(fā)。TTL的初值通常是系統(tǒng)缺省值,是包頭中的8位的域。TTL的最初設想是確定一個時間范圍,超過此時間就把包丟棄。由于每個路由器都至少要把TTL域減一,TTL通常表示包在被丟棄前最多能經(jīng)過的路由器個數(shù)。當記數(shù)到0時,路由器決定丟棄該包,并發(fā)送一個ICMP報文給最初的發(fā)送者。
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.
為了用純軟件實現(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)方法
串口叫做串行接口,現(xiàn)在的PC 機一般有兩個串行口COM 1 和COM 2 .串行口不同于并行口之處在于它的數(shù)據(jù)和控制信息是一位接一位地傳送出去的。雖然這樣速度會慢一些,但傳送距離較并行口更長,因此若要進行較長距離的通信時,應使用串行口。通常COM 1 使用的是9 針D 形連接器,也稱之為RS-232接口,而COM 2 有的使用的是老式的DB25 針連接器,也稱之為RS-422接口,不過目前已經(jīng)很少使用。
串行端口(Serial port),或稱串列埠、序列埠、串口,主要用于串列式逐位元數(shù)據(jù)傳輸。常見的為一般電腦應用的RS-232(使用 25 針或 9 針連接器),工業(yè)電腦應用的半雙工RS-485與全雙工RS-422.串口叫做串行接口,也稱串行通信接口,按電氣標準及協(xié)議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標準只對接口的電氣特性做出規(guī)定,不涉及接外掛程式、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標準,主要應用于高速數(shù)據(jù)傳輸領域。
采用差分電平通信的軟件串行口的硬件接線圖如圖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ù)在后。
評論