AT89S52單片機(jī)與PC機(jī)串行通信設(shè)計
時間:2009-10-29 08:47:29來源:limin
導(dǎo)語:?單片機(jī)與PC機(jī)串行通信,又稱為下位機(jī)與上位機(jī)的串行通信。采用這種通信方式,可以解決工況條件差對工作人員帶來的危害,又可以實現(xiàn)實時在線遠(yuǎn)距離集中監(jiān)控。
引言
單片機(jī)與PC機(jī)串行通信,又稱為下位機(jī)與上位機(jī)的串行通信。采用這種通信方式,可以解決工況條件差對工作人員帶來的危害,又可以實現(xiàn)實時在線遠(yuǎn)距離集中監(jiān)控,對工作現(xiàn)場分散的單片機(jī)采用控制平臺管理,既可以改善工作條件,又可以提高工作效率。本文針對串行通信的電路設(shè)計和程序設(shè)計做出了具體的闡述。
1 電路設(shè)計
通信接口標(biāo)準(zhǔn)有RS232、RS423A、RS422A、RS485等,常用的接口標(biāo)準(zhǔn)有RS232和RS485。RS232在微機(jī)串行通信接口中廣泛采用,在加裝了調(diào)制解調(diào)器(modem)的情況下,這種通信可以通過電話線傳輸數(shù)據(jù),并且可以傳輸幾千公里遠(yuǎn)的距離,如果沒有modem可以傳輸十幾米遠(yuǎn)。本課題采用的是RS-232直連無modem方式和DB-9連接器,單片機(jī)采用 AT89S52,使單片機(jī)的串行輸入端(RXD)和串行輸出端(TXD)與PC機(jī)的COM口相連接。
RS232是用正負(fù)電壓來表示邏輯狀態(tài),與TTL高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計算機(jī)接口相連或TTL器件相連,必須在RS232與 TTL之間進(jìn)行電平和邏輯關(guān)系的變換。實現(xiàn)這種變換的方法可以用單立元件,也可以用集成芯片,本文采用MAX232來完成TTL-EIA(美國電子工業(yè)聯(lián)合會)雙向電平轉(zhuǎn)換。MAX232內(nèi)部有電壓倍增電路和轉(zhuǎn)換電路,僅需+5 V電源便可工作,使用十分方便,其與AT89S52連接時可以采用最簡單的方式連接(見圖1),MAX232的T1 IN引腳與89S52的串行輸入口線P3.1TXD相連,R1 OUT引腳與89S52的串行輸入口線P3.0RXD相連,MAX232的T1 OUT、R1 IN分別于與RS232的2、3引腳相連。MAX232泵電源引腳必須接0.1μf電容,如圖中的C26、C27、C28、C29。
因為電路中采用了電平轉(zhuǎn)換芯片,只需把單片機(jī)所用到的連接器和PC機(jī)串口所用的連接器的2、3、5管腳對應(yīng)連接起來,2、3管腳不需交叉連接(如圖2所示);如果是PC機(jī)之間或同一個PC機(jī)的兩個COM口相連,則兩個連接器的2、3管腳需交叉相連。
2 程序設(shè)計
主程序的設(shè)計是:AT89S52單片機(jī)采用定時器1,工作于方式2,11.059 MHz的晶振,波特率為9 600 Hz,時間常數(shù)是FDH,由單片機(jī)先向PC機(jī)發(fā)送十六進(jìn)制的聯(lián)絡(luò)信號“aaH”,PC機(jī)接收正確時回答B(yǎng)BH,以數(shù)組adr[]的和作為校驗和,測試正常時發(fā)送數(shù)組tri[]。完整程序代碼如下:
上下位機(jī)間通信是否正??梢酝ㄟ^上位機(jī)安裝的串口調(diào)試軟件實現(xiàn),上述程序經(jīng)過調(diào)試軟件調(diào)試后運(yùn)行正常。