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