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