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