RS232串口通信篇
大家是否覺得這樣一個(gè)單片機(jī)系統(tǒng)似乎缺少點(diǎn)什么呢?不錯(cuò),本期我們將介紹單片機(jī)與電腦通訊,使單片機(jī)與PC 機(jī)能夠聯(lián)機(jī)工作。
本文引用地址:http://m.butianyuan.cn/article/201612/330818.htm單片機(jī)除了需要控制外圍器件完成特定的功能外,在很多應(yīng)用中還要完成單片機(jī)和單片機(jī)之間、單片機(jī)和外圍器件之間,以及單片機(jī)和微機(jī)之間的數(shù)據(jù)交換和指令的傳輸,這就是單片機(jī)的通信。單片機(jī)的通信方式可以分為并行通信和串行通信。并行方式傳送一個(gè)字節(jié)的數(shù)據(jù)至少需要8 條數(shù)據(jù)線。
一般來講單片機(jī)與打印機(jī)等外圍設(shè)備連接時(shí),除8條數(shù)據(jù)線外,還要狀態(tài)、應(yīng)答等控制線,當(dāng)傳送距離過遠(yuǎn)時(shí)電線要求過多,成本會(huì)增加很多。單片機(jī)的串行通信方法較為多樣,傳統(tǒng)的串行通信方式是通過單片機(jī)自帶的串行口進(jìn)行RS232方式的通信。
串行通信是以一位數(shù)據(jù)線傳送數(shù)據(jù)的位信號(hào),即使加上幾條通信聯(lián)絡(luò)控制線,也比并行通信用的線少。
因此,串行通信適合遠(yuǎn)距離數(shù)據(jù)傳送,如大型主機(jī)與其遠(yuǎn)程終端之間,處于兩地的計(jì)算機(jī)之間,采用串行通信就非常經(jīng)濟(jì)。
串行通信又分為異步傳送和同步傳送兩種基本方式。
異步通訊:異步通信傳輸?shù)臄?shù)據(jù)格式一般由1個(gè)起始位、7 個(gè)或8 個(gè)數(shù)據(jù)位、1 到2 個(gè)停止位和一個(gè)校驗(yàn)位組成。它用一個(gè)起始位表示字符的開始,用停止位表示字符的結(jié)束。其每幀的格式如圖1 所示。
在一幀格式中,先是一個(gè)起始位0,然后是8個(gè)數(shù)據(jù)位,規(guī)定低位在前,高位在后,接下來是奇偶校驗(yàn)位(可以省略),最后是停止位1。用這種格式表示字符,則字符可以一個(gè)接一個(gè)地傳送。
在異步通訊中,通信雙方采用獨(dú)立的時(shí)鐘,起始位觸發(fā)雙方同步時(shí)鐘。在異步通信中CPU 與外設(shè)之間必須有幾項(xiàng)約定,即每一幀位數(shù),字符格式和波特率。字符格式的規(guī)定是雙方能夠在對(duì)同一種0 和1 的數(shù)據(jù)串理解成同一種意義。原則上字符格式可以由通訊的雙方自由制定,但從通用、方便的角度出發(fā),一般還是使用一些標(biāo)準(zhǔn)為好,如采用ASCII 標(biāo)準(zhǔn)。
同步通訊:在同步通訊中所傳輸?shù)臄?shù)據(jù)格式是由多個(gè)數(shù)據(jù)組成,每幀有一個(gè)或兩個(gè)同步字符作為起始位以觸發(fā)同步時(shí)鐘開始發(fā)送或接收。同步通訊數(shù)據(jù)幀格式如圖2 所示。在異步通信中,每個(gè)字符要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,占用了時(shí)間,所以在數(shù)據(jù)塊傳遞時(shí)。波特率指每秒送多少個(gè)0 或1,由于包含起始位,停止位等,實(shí)際傳送數(shù)據(jù)每秒多少字節(jié)總比波特率的1/8 少。為了提高速度,常去掉這些標(biāo)志,采用同步傳送。由于數(shù)據(jù)塊傳遞開始要用同步字符來指示,同時(shí)要求由時(shí)鐘來實(shí)現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復(fù)雜。同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。
現(xiàn)在我們將用一個(gè)實(shí)例來剖析一下它到底是如何控制數(shù)據(jù)收發(fā)的,單片機(jī)串口將接收PC 機(jī)發(fā)送的數(shù)據(jù),同時(shí)點(diǎn)亮相應(yīng)的發(fā)光管做指示。
首先,我們來看一下這個(gè)實(shí)例所涉及到的理論基礎(chǔ)知識(shí)。PIC單片機(jī)有全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平(邏輯擺幅大,邏輯1 為-3 ~ -15V,邏輯0 為+3 ~ +15V),而單片機(jī)的串口是TTL 電平(邏輯擺幅小邏輯1 為>2.4V, 邏輯0 為0.4V),兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專用芯片MAX232 進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專用芯片更簡單可靠。
MAX232 芯片是MAXIM 公司生產(chǎn)的、包含兩路收發(fā)和電荷泵升壓電路,外部引腳和內(nèi)部電路如圖3所示:
在實(shí)際應(yīng)用中一般采用如圖4 所示的硬件電路圖,這是最簡單的連接方法,但是對(duì)我們來說已經(jīng)足夠使用了。
評(píng)論