51系列單片機內(nèi)部的串行口具有通信的功能,該串口可以作為通信接口,利用該串行口與PC機的串行口COM1或COM2進行串行通信,將單片機采集的數(shù)據(jù)傳送到PC機中,由PC機的高級語言或數(shù)據(jù)庫語言對數(shù)據(jù)進行整理及統(tǒng)計等復(fù)雜處理,就能滿足實際的應(yīng)用需要。
PC機的COM口,輸入輸出為RS-232C電平,而51單片機串行口的輸入輸出均為TTL電平。由于TTL電平和RS-232C電平互不兼容,所以兩者接口時,必須進行電平轉(zhuǎn)換。(電平轉(zhuǎn)換最常用的芯片是傳送線驅(qū)動器MC1489,其作用除了電平轉(zhuǎn)換外,還實現(xiàn)正負(fù)邏輯電平轉(zhuǎn)換)
PC機和單片機在進行通信時,首先分別對各自的串行口進行初始化,確定串行口工作方式,設(shè)定波特率(兩者應(yīng)一致),傳輸數(shù)據(jù)長度等,然后才開始數(shù)據(jù)傳輸,這些工作是由軟件來完成的,因此對PC機和單片機均需設(shè)計相應(yīng)的通信軟件。
1. DOS環(huán)境下,串行通信一般用中斷方式來實現(xiàn),用戶對通信端口進行完全控制。而在Windows環(huán)境下,系統(tǒng)禁止應(yīng)用程序直接對硬件進行操作在Windows環(huán)境下提供了完備的API應(yīng)用程序接口函數(shù),程序員通過這些函數(shù)與通信硬件接口。
通信函數(shù)是中斷驅(qū)動的:發(fā)送數(shù)據(jù)時,先將數(shù)據(jù)存入緩存區(qū),串口準(zhǔn)備好后,就將其發(fā)送出去;傳來的數(shù)據(jù)迅速申請中斷,使Windows接收它并將其存入緩沖區(qū),以供讀取。
接收方式中以中斷方式效率高,接收準(zhǔn)確,編程簡單。它無需測試串口,一旦有數(shù)據(jù)傳至,CPU終止當(dāng)前任務(wù),由中斷服務(wù)完成操作。
2.單片機收發(fā)軟件設(shè)計
設(shè)計單片機的通信軟件,實際上是對單片機的串行口的設(shè)計,通常采用匯編語言來設(shè)計。