




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、串口通信原理串口通訊對(duì)單片機(jī)而言意義重大,不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)接?jì)算機(jī)端,而且也能實(shí)現(xiàn)計(jì)算機(jī)對(duì)單片機(jī)的控制。由于其所需電纜線少,接線簡(jiǎn)單,所以在較遠(yuǎn)距離傳輸中,得到了廣泛的運(yùn)用。串口通信的工作原理請(qǐng)同學(xué)們參看教科書(shū)。以下對(duì)串口通信中一些需要同學(xué)們注意的地方作一點(diǎn)說(shuō)明:1、波特率選擇波特率(BoudRate)就是在串口通信中每秒能夠發(fā)送的位數(shù)(bits/second)。MSC-51串行端口在四種工作模式下有不同的波特率計(jì)算方法。其中,模式0和模式2波特率計(jì)算很簡(jiǎn)單,請(qǐng)同學(xué)們參看教科書(shū);模式1和模式3的波特率選擇相同,故在此僅以工作模式1為例來(lái)說(shuō)明串口通信波特率的選擇。在串行端口工作
2、于模式1,其波特率將由計(jì)時(shí)/計(jì)數(shù)器1來(lái)產(chǎn)生,通常設(shè)置定時(shí)器工作于模式2(自動(dòng)再加模式)。在此模式下波特率計(jì)算公式為:波特率=(1+SMOD)*晶振頻率/(384*(256-TH1)其中,SMOD寄存器PCON的第7位,稱(chēng)為波特率倍增位;TH1定時(shí)器的重載值。在選擇波特率的時(shí)候需要考慮兩點(diǎn):首先,系統(tǒng)需要的通信速率。這要根據(jù)系統(tǒng)的運(yùn)作特點(diǎn),確定通信的頻率范圍。然后考慮通信時(shí)鐘誤差。使用同一晶振頻率在選擇不同的通信速率時(shí)通信時(shí)鐘誤差會(huì)有很大差別。為了通信的穩(wěn)定,我們應(yīng)該盡量選擇時(shí)鐘誤差最小的頻率進(jìn)行通信。下面舉例說(shuō)明波特率選擇過(guò)程:假設(shè)系統(tǒng)要求的通信頻率在20000bit/s以下,晶振頻率為12M
3、Hz,設(shè)置SMOD=1(即波特率倍增)。則TH1=256-62500/波特率根據(jù)波特率取值表,我們知道可以選取的波特率有:1200,2400,4800,9600,19200。列計(jì)數(shù)器重載值,通信誤差如下表:渡特率計(jì)數(shù)器垂載值TH1波特率誤差12002040.瀛24002300.16%48002430.1砒96002496.9935192002538.5135因此,在通信中,最好選用波特率為1200,2400,4800中的一個(gè)。2、通信協(xié)議的使用通信協(xié)議是通信設(shè)備在通信前的約定。單片機(jī)、計(jì)算機(jī)有了協(xié)議這種約定,通信雙方才能明白對(duì)方的意圖,以進(jìn)行下一步動(dòng)作。假定我們需要在PC機(jī)與單片機(jī)之間進(jìn)行通信
4、,在雙方程式設(shè)計(jì)過(guò)程中,有如下約定:0 xA1:單片機(jī)讀取P0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回PC機(jī);0 xA2:單片機(jī)從PC機(jī)接收一段控制數(shù)據(jù);0 xA3:單片機(jī)操作成功信息。在系統(tǒng)工作過(guò)程中,單片機(jī)接收到PC機(jī)數(shù)據(jù)信息后,便查找協(xié)議,完成相應(yīng)的操作。當(dāng)單片機(jī)接收到0 xA1時(shí),讀取P0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回PC機(jī);當(dāng)單片機(jī)接收到0 xA2時(shí),單片機(jī)等待從PC機(jī)接收一段控制數(shù)據(jù);當(dāng)PC機(jī)接收到0 xA3時(shí),就表明單片機(jī)操作已經(jīng)成功。3、硬件連接51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和計(jì)算機(jī)之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如計(jì)算機(jī)的串口是RS232電平的,而
5、單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專(zhuān)用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專(zhuān)用芯片更簡(jiǎn)單可靠。我們采用了三線制連接串口,也就是說(shuō)和計(jì)算機(jī)的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)我們來(lái)說(shuō)已經(jīng)足夠使用了,電路如下圖所示,MAX232的第10腳和單片機(jī)的11腳連接,第9腳和單片機(jī)的10腳連接,第15腳和單片機(jī)的20腳連接。使用MAX232串口通信電路圖(9孔串口接頭)MAX232VCCCAP-CAP*廣鼻.p知r虛口14.CAP2-CAPKRT-OUT2T3H2R
6、uQUTIRR1H2R.OOT2串口通訊的硬件電路如上圖所示為了能夠在計(jì)算機(jī)端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)WINDOWS軟件進(jìn)行觀察,這里利用如下圖標(biāo)的一個(gè)免費(fèi)計(jì)算機(jī)串口調(diào)試軟件來(lái)觀察。串口調(diào)試助手窗口SBUF數(shù)據(jù)緩沖寄存器這是一個(gè)可以直接尋址的串行口專(zhuān)用寄存器。有朋友這樣問(wèn)起過(guò)“為何在串行口收發(fā)中,都只是使用到同一個(gè)寄存器SBUF?而不是收發(fā)各用一個(gè)寄存器。實(shí)際上SBUF包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們都共同使用同一個(gè)尋址地址-99H。CPU在讀SBUF時(shí)會(huì)指到接收寄存器,在寫(xiě)時(shí)會(huì)指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒(méi)
7、有及時(shí)的被響應(yīng),數(shù)據(jù)沒(méi)有被取走,下一幀數(shù)據(jù)已到來(lái),而造成的數(shù)據(jù)重疊問(wèn)題。發(fā)送器則不需要用到雙緩沖,一般情況下我們?cè)趯?xiě)發(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作SBUF寄存器的方法則很簡(jiǎn)單,只要把這個(gè)99H地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對(duì)其進(jìn)行讀寫(xiě)操作了,如sfrSBUF=0 x99;當(dāng)然你也可以用其它的名稱(chēng)。通常在標(biāo)準(zhǔn)的reg51.h或at89x51.h等頭文件中已對(duì)其做了定義,只要用#include引用就可以了。SCON串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋
8、址的寄存器,作用就是監(jiān)視和控制51芯片串行口的工作狀態(tài)。51芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON寄存器。它的各個(gè)位的具體定義如下:(MSB)(LSB)SM0SM1SM2RENTB8RB8TIRI表8-1串行口控制寄存器SCONSM0、SM1為串行口工作模式設(shè)置位,這樣兩位可以對(duì)應(yīng)進(jìn)行四種模式的設(shè)置??幢?-2串行口工作模式設(shè)置。SM0SM1模式功能波特率000同步移位寄存器fosc/120118位UART可變1029位UARTfosc/32或fosc/641139位UART可變表8-2串行口工作模式設(shè)置在這里只說(shuō)明最常用的模式1,其它的模式也就一一略過(guò),有
9、興趣的朋友可以找相關(guān)的硬件資料查看。表中的fosc代表振蕩器的頻率,也就是晶振的頻率。UART為(UniversalAsynchronousReceiver)的英文縮寫(xiě)。SM2在模式2、模式3中為多處理機(jī)通信使能位。在模式0中要求該位為0。REM為允許接收位,REM置1時(shí)串口允許接收,置0時(shí)禁止接收。REM是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來(lái)的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開(kāi)始處加入REM=0來(lái)禁止接收,在子程序結(jié)束處加入REM=1再次打開(kāi)串口接收。大家也可以用上面
10、的實(shí)際源碼加入REM=0來(lái)進(jìn)行實(shí)驗(yàn)。TB8發(fā)送數(shù)據(jù)位8,在模式2和3是要發(fā)送的第9位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。RB8接收數(shù)據(jù)位8,在模式2和3是已接收數(shù)據(jù)的第9位。該位可能是奇偶位,地址數(shù)據(jù)標(biāo)識(shí)位。在模式0中,RB8為保留位沒(méi)有被使用。在模式1中,當(dāng)SM2=0,RB8是已接收數(shù)據(jù)的停止位。TI發(fā)送中斷標(biāo)識(shí)位。在模式0,發(fā)送完第8位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。TI置位后,申請(qǐng)中斷,CPU響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI都必須由軟件來(lái)清除,也就是說(shuō)在數(shù)據(jù)寫(xiě)入
11、到SBUF后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng)(如中斷打開(kāi)),這時(shí)TI=1,表明發(fā)送已完成,TI不會(huì)由硬件清除,所以這時(shí)必須用軟件對(duì)其清零。RI接收中斷標(biāo)識(shí)位。在模式0,接收第8位結(jié)束時(shí),由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。RI=1,申請(qǐng)中斷,要求CPU取走數(shù)據(jù)。但在模式1中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI置位。同樣RI也必須要靠軟件清除。常用的串口模式1是傳輸10個(gè)位的,1位起始位為0,8位數(shù)據(jù)位,低位在先,1位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1或定時(shí)器2的定時(shí)值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有兩個(gè)定時(shí)器,
12、定時(shí)器0和定時(shí)器1,而定時(shí)器2是89C52系列芯片才有的。波特率在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。有一些初學(xué)的朋友認(rèn)為波特率是指每秒傳輸?shù)淖止?jié)數(shù),如標(biāo)準(zhǔn)9600會(huì)被誤認(rèn)為每秒種可以傳送9600個(gè)字節(jié),而實(shí)際上它是指每秒可以傳送9600個(gè)二進(jìn)位,而一個(gè)字節(jié)要8個(gè)二進(jìn)位,如用串口模式1來(lái)傳輸那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10個(gè)二進(jìn)位,9600波特率用模式1傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是9600一10二960字節(jié)。51芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M的
13、晶振來(lái)計(jì)算,那么它的波特率可以達(dá)到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決于PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。模式1和模式3的波特率是可變的,取決于定時(shí)器1或2(52芯片)的溢出速率。那么我們?cè)趺慈ビ?jì)算這兩個(gè)模式的波特率設(shè)置時(shí)相關(guān)的寄存器的值呢?可以用以下的公式去計(jì)算。波特率=(2SMOD一32)x定時(shí)器1溢出速率上式中如設(shè)置了PCON寄存器中的SMOD位為1時(shí)就可以把波特率提升2倍。通常會(huì)使用定時(shí)器1工作在定時(shí)器工作模式2下,這時(shí)定時(shí)值中的TL1做為計(jì)數(shù),TH1做為自動(dòng)重裝值,這個(gè)
14、定時(shí)模式下,定時(shí)器溢出后,TH1的值會(huì)自動(dòng)裝載到TL1,再次開(kāi)始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。在這個(gè)定時(shí)模式2下定時(shí)器1溢出速率的計(jì)算公式如下:溢出速率=(計(jì)數(shù)速率)/(256-TH1)上式中的“計(jì)數(shù)速率與所使用的晶體振蕩器頻率有關(guān),在51芯片中定時(shí)器啟動(dòng)后會(huì)在每一個(gè)機(jī)器周期使定時(shí)寄存器TH的值增加一,一個(gè)機(jī)器周期等于十二個(gè)振蕩周期,所以可以得知51芯片的計(jì)數(shù)速率為晶體振蕩器頻率的1/12,一個(gè)12M的晶振用在51芯片上,那么51的計(jì)數(shù)速率就為1M。通常用11.0592M晶體是為了得到標(biāo)準(zhǔn)的無(wú)誤差的波特率,那么為何呢?計(jì)算一下就知道了。如我們要得到9600的波特率,晶振為11.
15、0592M和12M,定時(shí)器1為模式2,SMOD設(shè)為1,分別看看那所要求的TH1為何值。代入公式:11.0592M9600=(2一32)x(11.0592M/12)/(256-TH1)TH1=250看看是不是和上面實(shí)例中的使用的數(shù)值一樣?12M9600=(232)x(12M/12)/(256-TH1)TH1-249.49上面的計(jì)算可以看出使用12M晶體的時(shí)候計(jì)算出來(lái)的TH1不為整數(shù),而TH1的值只能取整數(shù),這樣它就會(huì)有一定的誤差存在不能產(chǎn)生精確的9600波特率。當(dāng)然一定的誤差是可以在使用中被接受的,就算使用11.0592M的晶體振蕩器也會(huì)因晶體本身所存在的誤差使波特率產(chǎn)生誤差,但晶體本身的誤差對(duì)
16、波特率的影響是十分之小的,可以忽略不計(jì)。下位機(jī):51單片機(jī)實(shí)現(xiàn)RS232串口通信上一期,我們已經(jīng)利用增強(qiáng)型51實(shí)驗(yàn)板學(xué)會(huì)了單片機(jī)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的方法,這一期,我們將一起來(lái)學(xué)習(xí)一下單片機(jī)如何與PC機(jī)進(jìn)行通信,一起來(lái)完成一個(gè)簡(jiǎn)單的RS232通信實(shí)例,我們不做太多的理論,從實(shí)例出發(fā),相信能夠給大家一個(gè)比較通俗、透徹地認(rèn)識(shí),掌握了它的原理,那你就可以編出任何和PC機(jī)進(jìn)行通信的程序了。前幾期,我們學(xué)習(xí)和介紹的內(nèi)容都是以單機(jī)的形式,即所有的功能都是在一塊增強(qiáng)型51實(shí)驗(yàn)板上得以實(shí)現(xiàn)。當(dāng)單片機(jī)技術(shù)具體應(yīng)用到工廠、企業(yè)及各類(lèi)工業(yè)、民用領(lǐng)域中,它肯定要與外部設(shè)置作數(shù)據(jù)傳輸,其交互性也使得單片機(jī)的應(yīng)用越來(lái)越廣泛,
17、我們可以利用它來(lái)傳數(shù)據(jù),傳控制命令等等。因此,單片機(jī)與PC機(jī)的通信是我們學(xué)習(xí)單片機(jī)技術(shù)所經(jīng)歷的必要環(huán)節(jié),由此,也使我們的學(xué)習(xí)更具趣味性。下面我們一起來(lái)完成一個(gè)用單片機(jī)從串行口接收PC機(jī)數(shù)據(jù),并在數(shù)碼管上顯示出來(lái)的實(shí)驗(yàn)。先介紹一下串口通信基本知識(shí)。目前較為常用的串口有9針串口(DB9)和25針串口(DB25)。最為簡(jiǎn)單且常用的是三線制接法,即地、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)三腳相連,本文只涉及到最為基本的接法,且直接用RS232相連。串口引腳定義如圖1所示。9針串口(DB9)25針串口(DB25)針號(hào)功能說(shuō)明縮寫(xiě)針號(hào)功能說(shuō)明縮寫(xiě)1數(shù)據(jù)載波檢測(cè)DCD8數(shù)據(jù)載波檢測(cè)DCD2接收數(shù)據(jù)RXD3接收數(shù)據(jù)RXD3發(fā)送
18、數(shù)據(jù)TXD2發(fā)送數(shù)據(jù)TXD4數(shù)據(jù)終端準(zhǔn)備DTR20數(shù)據(jù)終端準(zhǔn)備DTR5信號(hào)地GND7信號(hào)地GND6數(shù)據(jù)設(shè)備準(zhǔn)備好DSR6數(shù)據(jù)準(zhǔn)備好DSR7請(qǐng)求發(fā)送RTS4請(qǐng)求發(fā)送RTS8清除發(fā)送CTS5清除發(fā)送CTS9振鈴指示DELL22振鈴指示DELL圖1DB9和DB25的常用信號(hào)腳說(shuō)明我們來(lái)看一下本次實(shí)驗(yàn)的電路圖,如圖2所示,即增強(qiáng)型51實(shí)驗(yàn)板實(shí)現(xiàn)串口通信及數(shù)碼管顯示的電路部分。圖2中的4個(gè)三極管分別與4個(gè)共陽(yáng)數(shù)碼管相連,是各個(gè)數(shù)碼管的使能端,分別通過(guò)單片機(jī)的P2.0,P2.1,P2.2,P2.3來(lái)控制,數(shù)碼管顯示的詳細(xì)工作原理,我們已在前幾期雜志中作過(guò)介紹,有興趣的朋友可以去看一下以前幾期的內(nèi)容。圖2中
19、MAX232芯片起到RS232與TTL電平轉(zhuǎn)換的作用,我們通過(guò)9芯串口與PC機(jī)相連。圖2硬件電路原理圖下面是我們完成本次實(shí)驗(yàn)的源程序代碼,使用Keil編譯軟件,將其編譯生成HEX文件,然后,通過(guò)A51編程器燒入AT89S51芯片即可。#includereg51.h#includeunsignedcharcodetab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;unsignedchardat;voidInit_Com(void)TMOD=0 x20;/定時(shí)器工作方式2,初值自動(dòng)裝入PCON=0 x00;/波特率不增倍S
20、CON=0 x50;/串行工作方式設(shè)定TH1=0 xFd;/定時(shí)器初值高位TL1=0 xFd;/定時(shí)器初值低位TR1=1;/啟動(dòng)定時(shí)器/*函數(shù)功能:LED數(shù)碼管延時(shí)程序*/voiddelay(void)intk;for(k=0;k9600,.N,8,1|EX:O蒂曲TECh4所示。當(dāng)然,我們也可停ii龍示j帀自動(dòng)淆空r十天進(jìn)制顯示cACTFinm-以選擇自動(dòng)發(fā)送,即每隔一定的時(shí)間,由軟件自動(dòng)發(fā)送發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù),時(shí)間周期可以在軟件界面中設(shè)置。現(xiàn)在,你已經(jīng)可以自由發(fā)揮來(lái)接收PC機(jī)發(fā)過(guò)來(lái)的數(shù)據(jù)了,只要發(fā)揮你的想象力,定義好PC機(jī)和單片機(jī)兩端的數(shù)據(jù)通信協(xié)議,你可以做出任何通過(guò)電腦來(lái)對(duì)單片機(jī)進(jìn)行控制
21、的程序,實(shí)現(xiàn)各種各樣的數(shù)據(jù)傳輸,遠(yuǎn)程控制功能,比如通過(guò)PC機(jī)來(lái)控制液晶顯示、控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)、控制蜂鳴器奏樂(lè)等等,您也可以將本期所講的知識(shí)與前幾期所講的關(guān)聯(lián)起來(lái),完成功能更多,更實(shí)用的具體應(yīng)用實(shí)例因此,到本期的學(xué)習(xí),我們已經(jīng)可以將單片機(jī)與PC相連,借助PC機(jī)強(qiáng)大而靈活的功能,就可以為我們解決各類(lèi)實(shí)際生產(chǎn)及應(yīng)用型問(wèn)題提供了方便。這一期的內(nèi)容我RS232串口通信詳解(引腳定義,電氣特性傳輸格式,接收過(guò)程,單片機(jī)晶振,RS485,RS422)-轉(zhuǎn)串口是計(jì)算機(jī)上一種非常通用的設(shè)備通信協(xié)議。串口的引腳定義:9芯信號(hào)方向來(lái)自縮寫(xiě)描述1調(diào)制解調(diào)器CD載波檢測(cè)2調(diào)制解調(diào)器RXD接收數(shù)據(jù)3PCTXD發(fā)送數(shù)據(jù)4
22、PCDTR數(shù)據(jù)終端準(zhǔn)備好5GND信號(hào)地6調(diào)制解調(diào)器DSR通訊設(shè)備準(zhǔn)備好7PCRTS請(qǐng)求發(fā)送8調(diào)制解調(diào)器CTS允許發(fā)送9調(diào)制解調(diào)器RI響鈴指示器兩個(gè)串口連接時(shí),接收數(shù)據(jù)針腳與發(fā)送數(shù)據(jù)針腳相連,彼此交叉,信號(hào)地對(duì)應(yīng)相接即可串口的電氣特性:RS-232串口通信最遠(yuǎn)距離是50英尺二15mRS232可做到雙向傳輸,全雙工通訊,最高傳輸速率20kbpsRS-232C上傳送的數(shù)字量采用負(fù)邏輯,且與地對(duì)稱(chēng)邏輯1:-3-15V邏輯0:+3+15V所以與單片機(jī)連接時(shí)常常需要加入電平轉(zhuǎn)換芯片:串口通信參數(shù):o.iunJIC72V+VCC16TloiitT2oni+Rlout_=V-GND二1MAX232Ic6R2o
23、irta)波特率:RS-232-C標(biāo)準(zhǔn)規(guī)定的數(shù)據(jù)傳輸速率為每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。b)數(shù)據(jù)位:標(biāo)準(zhǔn)的值是5、7和8位,如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0127(7位);擴(kuò)展的ASCII碼是0-255(8位)。c)停止位:用于表示單個(gè)包的最后一位,典型的值為1,1.5和2位。由于數(shù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。d)奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。對(duì)于偶
24、和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。串口通信的傳輸格式:串行通信中,線路空閑時(shí),線路的TTL電平總是高,經(jīng)反向RS232的電平總是低。一個(gè)數(shù)據(jù)的開(kāi)始RS232線路為高電平,結(jié)束時(shí)Rs232為低電平。數(shù)據(jù)總是從低位向高位一位一位的傳輸。示波器讀數(shù)時(shí),左邊是數(shù)據(jù)的高位。例如,對(duì)于16進(jìn)制數(shù)據(jù)55aaH,當(dāng)采用8位數(shù)據(jù)位、1位停止位傳輸時(shí),它在信號(hào)線上的波形如圖1(TTL電平)和圖2(RS-232電平)所示。55
25、H=01010101B,取反后10101010B,加入一個(gè)起始位1,一個(gè)停止位0,55H的數(shù)據(jù)格式為0101010101,55HaaH=10101010B,取反后01010101B,加入一個(gè)起始位1,一個(gè)停止位0,55H的數(shù)據(jù)格式為0010101011,aaH串口通信的接收過(guò)程:(異步通信:接收器和發(fā)送器有各自的時(shí)鐘;同步通信:發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制。RS232是異步通信)(1)開(kāi)始通信時(shí),信號(hào)線為空閑(邏輯1),當(dāng)檢測(cè)到由1到0的跳變時(shí),開(kāi)始對(duì)“接收時(shí)鐘”計(jì)數(shù)。(2)當(dāng)計(jì)到8個(gè)時(shí)鐘時(shí),對(duì)輸入信號(hào)進(jìn)行檢測(cè),若仍為低電平,則確認(rèn)這是“起始位”,而不是干擾信號(hào)。(3)接收端檢測(cè)到起始位后
26、,隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為DO位數(shù)據(jù)。若為邏輯1,作為數(shù)據(jù)位1;若為邏輯0,作為數(shù)據(jù)位0。(4)再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù)。,直到全部數(shù)據(jù)位都輸入。(5)檢測(cè)校驗(yàn)位P(如果有的話)。(6)接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位后,通信接口電路希望收到停止位S(邏輯1),若此時(shí)未收到邏輯1,說(shuō)明出現(xiàn)了錯(cuò)誤,在狀態(tài)寄存器中置“幀錯(cuò)誤”標(biāo)志。若沒(méi)有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無(wú)校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器中送數(shù)據(jù)輸入寄存器。若校驗(yàn)錯(cuò),在狀態(tài)寄存器中置奇偶錯(cuò)標(biāo)志。7)本幀信息全部接收完,把線路上出現(xiàn)的高電平作為空閑位。8)當(dāng)信號(hào)再次變?yōu)榈蜁r(shí),開(kāi)始進(jìn)入下一幀的檢測(cè)。3IAHMIL)BlIMlJBlJARTDECEIVEDDATAstartbitDOSITJARTH6xC.CC8ClOCKCYCLES15CYCLES單片機(jī)常用110592M的的晶振,這個(gè)奇怪?jǐn)?shù)字是有來(lái)歷的:波特率為9600BPS每位位寬t1=1/9600s晶振周期t2=1/11.0592/1000000S單片機(jī)機(jī)器周期t3=12*t2t1/t3=96即對(duì)于9600BPS的串口,單片機(jī)對(duì)其以96倍的速率進(jìn)行采樣。如果單片機(jī)晶振用的不正確,會(huì)對(duì)串口接受產(chǎn)生誤碼。關(guān)于單片機(jī)晶振的選擇和寄存器設(shè)置詳見(jiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科研課題申報(bào) 評(píng)審書(shū)
- 課題申報(bào)書(shū)優(yōu)美用語(yǔ)
- 綜合能源服務(wù)課題申報(bào)書(shū)
- 課題申報(bào)書(shū)基于兒童立場(chǎng)
- 中學(xué)課題立項(xiàng)申報(bào)書(shū)
- 輔導(dǎo)員方面課題申報(bào)書(shū)
- 員工解除勞務(wù)合同范例
- 京東服裝租賃合同范本
- 合作協(xié)議合同范本格式
- 員工曠工辭退合同范本
- DeepSeek科普學(xué)習(xí)解讀
- 第一單元第2課《生活之美》課件-七年級(jí)美術(shù)下冊(cè)(人教版)
- 2025年七下道德與法治教材習(xí)題答案
- 危險(xiǎn)化學(xué)品目錄(2024版)
- 人教版八年級(jí)數(shù)學(xué)第二學(xué)期教學(xué)計(jì)劃+教學(xué)進(jìn)度表
- 基本力學(xué)性能-鋼筋混凝土原理_過(guò)鎮(zhèn)海
- 初中音樂(lè)-兒行千里母擔(dān)憂-課件PPT課件
- 硬筆書(shū)法校本教材(共24頁(yè))
- 銀行施工組織設(shè)計(jì)
- 壓縮空氣氣體管道吹掃、試壓方案
- 畢設(shè)-年產(chǎn)10萬(wàn)噸甲醇精餾工段設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論