PC與單片機(jī)串口通信LCD顯示其接收字符_第1頁(yè)
PC與單片機(jī)串口通信LCD顯示其接收字符_第2頁(yè)
PC與單片機(jī)串口通信LCD顯示其接收字符_第3頁(yè)
PC與單片機(jī)串口通信LCD顯示其接收字符_第4頁(yè)
PC與單片機(jī)串口通信LCD顯示其接收字符_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./哈爾濱理工大學(xué)榮成學(xué)院?jiǎn)纹瑱C(jī)原理課程設(shè)計(jì)題目:PC與單片機(jī)的串口通信班級(jí):自動(dòng)化11—3:學(xué)號(hào):題目簡(jiǎn)介80C51有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿(mǎn)足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專(zhuān)用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專(zhuān)用芯片更簡(jiǎn)單可靠。我們采用了三線(xiàn)制連接串口,PC機(jī)MAX23280C51PC機(jī)MAX23280C51系統(tǒng)結(jié)構(gòu)圖目錄原理硬件介紹一AT89C52二MAX232芯片三9針串口軟件設(shè)計(jì)一工作方式寄存器TMOD二串口控制寄存器SCON設(shè)置三LCD1602顯示設(shè)置實(shí)驗(yàn)原理圖流程圖實(shí)驗(yàn)源程序課設(shè)總結(jié)參考文獻(xiàn)原理串口通信的概念非常簡(jiǎn)單,串口按位發(fā)送和接收字節(jié)。盡管比按字節(jié)的并行通信慢,但是串口可以在使用一根線(xiàn)發(fā)送數(shù)據(jù)的同時(shí)用另一根線(xiàn)接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線(xiàn)總長(zhǎng)不得超過(guò)20米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過(guò)2米;而對(duì)于串口而言,長(zhǎng)度可達(dá)1200米。典型地,串口用于A(yíng)SCII碼字符的傳輸。通信使用3根線(xiàn)完成,分別是地線(xiàn)、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線(xiàn)上發(fā)送數(shù)據(jù)同時(shí)在另一根線(xiàn)上接收數(shù)據(jù)。其他線(xiàn)用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。a,波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的位的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)位。通常線(xiàn)的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。b,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是6、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127〔7位。擴(kuò)展的ASCII碼是0~255〔8位。如果數(shù)據(jù)使用簡(jiǎn)單的文本〔標(biāo)準(zhǔn)ASCII碼,那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)"包"指任何通信的情況。c,停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線(xiàn)上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。d,奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(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ù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。硬件介紹一AT89C52:AT89C52是51系列單片機(jī)的一個(gè)型號(hào),它是ATMEL公司生產(chǎn)的。AT89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī),片含8kbytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出〔I/O端口,同時(shí)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線(xiàn),AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線(xiàn)編程<S系列的才支持在線(xiàn)編程>。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。二MAX232芯片:是MAXIM公司生產(chǎn)的、包含兩路接收器和驅(qū)動(dòng)器的IC芯片,適用于各種EIA-232C和V.28/V.24的通信接口。MAX232芯片的功能:MAX232部有一個(gè)電源電壓變換器,可以把輸入的+5V電源電壓變換成為RS-232C輸出電平所需的±10V電壓。所以,采用此芯片接口的串行通信系統(tǒng)只需單一的+5V電源就可以了。對(duì)于沒(méi)有±12V電源的場(chǎng)合,其適應(yīng)性更強(qiáng)圖4中,上半部分的的電容C1,C2,C3,C4以及V+,V-是電源變換電路部分。在實(shí)際應(yīng)用中,器件對(duì)電源噪聲很敏感。因此,VCC必須要對(duì)地加去耦電容C5,電容C1,C2,C3和C4取同樣數(shù)值的鉭電容,用以提高抗干擾能力。在連接時(shí)必須盡量靠近器件。下半部分為發(fā)送和接收部分。實(shí)際應(yīng)用中T1IN和T2IN可直接接TTL/CMOS電平的89C52單片機(jī)的串行發(fā)送端TXD;R1OUT和R2OUT可直接接TTL/CMOS電平的89C52單片機(jī)的的串行接收端;T1OUT和T2OUT可直接接PC的RS-232串口的接收端RXD;R1IN和R2IN直接接PC的RS-232串口的發(fā)送端TXD。三9針串口:一個(gè)完整的RS-232接口是一個(gè)25針的D型插頭座,25針的連接器實(shí)際上只有9根連接線(xiàn),所以就產(chǎn)生了一個(gè)簡(jiǎn)化的9針D型RS-232插頭座,常用的就是一個(gè)9針的D型插頭座。EIA-RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線(xiàn)功能都作了規(guī)定:在TxD和RxD上:邏輯1<MARK>=-3V~-15V邏輯0<SPACE>=+3~+15V在RTS、CTS、DSR、DTR和DCD等控制線(xiàn)上:信號(hào)有效〔接通,ON狀態(tài),正電壓=+3V~+15V信號(hào)無(wú)效〔斷開(kāi),OFF狀態(tài),負(fù)電壓>=-3V~-15V介于-3~+3V之間的電壓無(wú)意義,低于-15V或高于+15V的電壓也認(rèn)為無(wú)意義。因此如果要進(jìn)行通信,還要對(duì)信號(hào)的電平進(jìn)行轉(zhuǎn)換,比如使用MAX3232芯片來(lái)轉(zhuǎn)換電平。使用串口進(jìn)進(jìn)行通信時(shí),我們最主要關(guān)心的時(shí)以下這三個(gè)引腳:5

GND2

RXD

3

TXD

我們還要注意串口插座有公母兩種類(lèi)型其中:公的串口插座是帶有插針的<有針>母的串口插座是不帶有插針的<有洞>.軟件設(shè)計(jì)一工作方式寄存器TMOD工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:GATE:門(mén)控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。即此時(shí)定時(shí)器的啟動(dòng)多了一條件。C/T:定時(shí)/計(jì)數(shù)模式選擇位。=0為定時(shí)模式;=1為計(jì)數(shù)模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:TF1〔TCON.7:T1溢出中斷請(qǐng)求標(biāo)志位。T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢(xún)TF1的狀態(tài)。所以,TF1可用作查詢(xún)測(cè)試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1〔TCON.6:T1運(yùn)行控制位。TR1置1時(shí),T1開(kāi)始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。TF0〔TCON.5:T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)同。TR0〔TCON.4:T0運(yùn)行控制位,其功能與TR1類(lèi)同。定時(shí)/計(jì)數(shù)器應(yīng)用舉例初始化程序應(yīng)完成如下工作:對(duì)TMOD賦值,以確定T0和T1的工作方式。計(jì)算初值,并將其寫(xiě)入TH0、TL0或TH1、TL1。中斷方式時(shí),則對(duì)IE賦值,開(kāi)放中斷。使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器定時(shí)或計(jì)數(shù)。中斷請(qǐng)求標(biāo)志1、TCON的中斷標(biāo)志IT0〔TCON.0,外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時(shí),為電平觸發(fā)方式。當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式〔下降沿有效。IE0〔TCON.1,外部中斷0中斷請(qǐng)求標(biāo)志位。IT1〔TCON.2,外部中斷1觸發(fā)方式控制位。IE1〔TCON.3,外部中斷1中斷請(qǐng)求標(biāo)志位。TF0〔TCON.5,定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。TF1〔TCON.7,定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。中斷允許控制CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器IE控制的。EX0<IE.0>,外部中斷0允許位;ET0<IE.1>,定時(shí)/計(jì)數(shù)器T0中斷允許位;EX1<IE.2>,外部中斷0允許位;ET1<IE.3>,定時(shí)/計(jì)數(shù)器T1中斷允許位;ES〔IE.4>,串行口中斷允許位;EA<IE.7>,CPU中斷允許〔總允許位。中斷響應(yīng)條件和時(shí)間中斷響應(yīng)條件中斷源有中斷請(qǐng)求;此中斷源的中斷允許位為1;CPU開(kāi)中斷〔即EA=1。以上三條同時(shí)滿(mǎn)足時(shí),CPU才有可能響應(yīng)中斷。二串口控制寄存器SCON設(shè)置串行口控制寄存器SCON字節(jié)地址98H,可位尋址,格式如圖所示。scon寄存器結(jié)構(gòu)scond7d6d5d4d3d2d1d0sm0sm1sm2rentb8rb8tiri位地址9fh9eh8dh9ch9bh9ah99h98h<1>SM0、SM1——串行口4種工作方式的選擇位表串行口的4種工作方式SM0SM1方式 功能說(shuō)明000同步移位寄存器方式〔用于擴(kuò)展I/O口0118位異步收發(fā),波特率可變〔由定時(shí)器控制1029位異步收發(fā),波特率為fosc/64或fosc/321139位異步收發(fā),波特率可變〔由定時(shí)器控制<2>SM2——多機(jī)通信控制位用于方式2或方式3中。當(dāng)串行口以方式2或方式3接收時(shí),如果SM2=1,只有當(dāng)接收到的第9位數(shù)據(jù)〔RB8為"1"時(shí),才將接收到的前8位數(shù)據(jù)送入SBUF,并置"1"RI,產(chǎn)生中斷請(qǐng)求;當(dāng)接收到的第9位數(shù)據(jù)〔RB8為"0"時(shí),則將接收到的前8位數(shù)據(jù)丟棄。如果SM2=0,則不論第9位數(shù)據(jù)是"1"還是"0",都將前8位數(shù)據(jù)送入SBUF中,并置"1"RI,產(chǎn)生中斷請(qǐng)求。在方式1時(shí),如果SM2=1,則只有收到停止位時(shí)才會(huì)激活RI。在方式0時(shí),SM2必須為0。<3>REN——允許串行接收位由軟件置"1"或清"0"。REN=1允許串行口接收數(shù)據(jù)。 REN=0禁止串行口接收數(shù)據(jù)。<4>TB8——發(fā)送的第9位數(shù)據(jù)方式2和3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)幀的標(biāo)志。=1為地址幀,=0為數(shù)據(jù)幀<5>RB8——接收到的第9位數(shù)據(jù)方式2和3時(shí),RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。<6>TI——發(fā)送中斷標(biāo)志位方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)由硬件置"1",其它工作方式,串行口發(fā)送停止位的開(kāi)始時(shí)置"1"。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢(xún),也可申請(qǐng)中斷。CPU響應(yīng)中斷后,向SBUF寫(xiě)入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清0。<7>RI——接收中斷標(biāo)志位方式0時(shí),接收完第8位數(shù)據(jù)時(shí),RI由硬件置1,其它工作方式,串行接收到停止位時(shí),該位置"1"。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請(qǐng)中斷,CPU從接收SBUF取走數(shù)據(jù)。該位狀態(tài)也可軟件查詢(xún)。RI必須由軟件清"0"。特殊功能寄存器PCON字節(jié)地址為87H,沒(méi)有位尋址功能。spcond7d6d5d4d3d2d1d0SMODxxxxxxxxxxxxxxSMOD:波特率選擇位。例如:方式1的波特率的計(jì)算公式為:方式1波特率=〔2SMOD/32×定時(shí)器T1的溢出率也稱(chēng)SMOD位為波特率倍增位。串行口的4種工作方式方式0同步移位寄存器輸入/輸出方式,常用于外接移位寄存器,以擴(kuò)展并行I/O口。8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為fosc/12。幀格式如下:d0d1d2d3d4d5d6d71.方式0發(fā)送當(dāng)CPU執(zhí)行一條將數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF的指令時(shí),產(chǎn)生一個(gè)正脈沖,串行口即把SBUF中的8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳串行輸出,低位在先,TXD引腳輸出同步移位脈沖,發(fā)送完8位數(shù)據(jù)置"1"中斷標(biāo)志位TI。2.方式0接收REN=1,接收數(shù)據(jù),REN=0,禁止接收。REN=1,允許接收。向串口的SCON寫(xiě)入控制字〔置為方式0,并置"1"REN位,同時(shí)RI=0時(shí),產(chǎn)生一個(gè)正脈沖,串行口即開(kāi)始接收數(shù)據(jù)。RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號(hào)輸出端,接收器也以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)收到8位數(shù)據(jù)時(shí)置"1"RI。表示一幀數(shù)據(jù)接收完.方式0下,SCON中的TB8、RB8位沒(méi)有用到,發(fā)送或接收完8位數(shù)據(jù)由硬件置"1"TI或RI,CPU響應(yīng)中斷。TI或RI須由用戶(hù)軟件清"0",可用如下指令: CLRTI ;TI位清"0" CLRRI ;RI位清"0"方式0時(shí),SM2位必須為0。方式1SM0、SM1=01方式1一幀數(shù)據(jù)為10位,1個(gè)起始位〔0,8個(gè)數(shù)據(jù)位,1個(gè)停止位〔1,先發(fā)送或接收最低位。幀格式如下:d0d1d2d3d4d5d6d7方式1波特率=〔2^SMOD/32×定時(shí)器T1的溢出率SMOD為PCON寄存器的最高位的值〔0或1。1.方式1發(fā)送方式1輸出時(shí),數(shù)據(jù)由TXD輸出,一幀信息為10位,1位起始位0,8位數(shù)據(jù)位〔先低位和1位停止位1。當(dāng)執(zhí)行一條數(shù)據(jù)寫(xiě)發(fā)送緩沖器SBUF的指令,就啟動(dòng)發(fā)送。。發(fā)送開(kāi)始時(shí),部發(fā)送控制信號(hào)變?yōu)橛行А⑵鹗嘉幌騎XD輸出,此后,每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置"1"TI。2.方式1接收數(shù)據(jù)從RXD〔P3.0腳輸入。當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),開(kāi)始接收數(shù)據(jù)。定時(shí)控制信號(hào)有兩種:接收移位時(shí)鐘〔RX時(shí)鐘,頻率和波特率相同和位檢測(cè)器采樣脈沖〔頻率是RX時(shí)鐘的16倍,1位數(shù)據(jù)期間,有16個(gè)采樣脈沖,當(dāng)采樣到RXD端從1到0的跳變時(shí)就啟動(dòng)檢測(cè)器,接收的值是3次連續(xù)采樣〔第7、8、9個(gè)脈沖時(shí)采樣進(jìn)行表決以確認(rèn)是否是真正的起始位〔負(fù)跳變的開(kāi)始。當(dāng)一幀數(shù)據(jù)接收完,須同時(shí)滿(mǎn)足兩個(gè)條件,接收才真正有效。⑴RI=0,即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說(shuō)明"接收SBUF"已空。⑵SM2=0或收到的停止位=1〔方式1時(shí),停止位已進(jìn)入RB8,則收到的數(shù)據(jù)裝入SBUF和RB8〔RB8裝入停止位,且置"1"中斷標(biāo)志RI。若這兩個(gè)條件不同時(shí)滿(mǎn)足,收到的數(shù)據(jù)將丟失。方式29位異步通信接口。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位〔先低位,1位可程控的第9位數(shù)據(jù)和1位停止位。幀格式如下。方式2波特率=〔2^SMOD/64×fosc1.方式2發(fā)送發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置TB8〔例如,雙機(jī)通訊時(shí)的奇偶校驗(yàn)位或多機(jī)通訊時(shí)的地址/數(shù)據(jù)的標(biāo)志位。2.方式2接收SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測(cè)到RXD從1到0的負(fù)跳變,并判斷起始位有效后,開(kāi)始收一幀信息。在接收器完第9位數(shù)據(jù)后,需滿(mǎn)足兩個(gè)條件,才能將接收到的數(shù)據(jù)送入SBUF?!?RI=0,意味著接收緩沖器為空。〔2SM2=0或接收到的第9位數(shù)據(jù)位RB8=1時(shí)。當(dāng)上述兩個(gè)條件滿(mǎn)足時(shí),接收到的數(shù)據(jù)送入SBUF〔接收緩沖器,第9位數(shù)據(jù)送入RB8,并置"1"RI。若不滿(mǎn)足兩個(gè)條件,接收的信息將被丟棄。方式3SM0、SM1=11,串口為方式3。波特率可變的9位異步通訊方式,除波特率外,方式3和方式2相同。方式3波特率=〔2^SMOD/32×定時(shí)器T1的溢出率多機(jī)通訊要保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保證串口具有識(shí)別功能。SCON中的SM2位就是滿(mǎn)足這一條件而設(shè)置的多機(jī)通訊控制位。原理:在串行口以方式2〔或方式3接收時(shí),若SM2=1,表示置多機(jī)通訊功能位,這時(shí)有兩種可能:〔1接收到的第9位數(shù)據(jù)為1時(shí),數(shù)據(jù)才裝入SBUF,并置中斷標(biāo)志RI=1向CPU發(fā)出中斷請(qǐng)求;〔2接收到的第9位數(shù)據(jù)為0時(shí),則不產(chǎn)生中斷標(biāo)志,信息將拋棄。若SM2=0,則接收的第9位數(shù)據(jù)不論是0還是1,都產(chǎn)生RI=1中斷標(biāo)志,接收到的數(shù)據(jù)裝入SBUF中。應(yīng)用上述特性,便可實(shí)現(xiàn)MCS-51的多機(jī)通訊。設(shè)多機(jī)系統(tǒng)中有一主機(jī)和3個(gè)8031從機(jī),如下圖。主機(jī)的RXD與從機(jī)的TXD相連,主機(jī)TXD與從機(jī)的RXD端相連。從機(jī)地址分別為00H、01H、02H。多機(jī)通訊工作過(guò)程:〔1從機(jī)串行口編程為方式2或方式3接收,且置"1"SM2和REN位,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)?!?主機(jī)先將從機(jī)地址〔即準(zhǔn)備接收數(shù)據(jù)的從機(jī)發(fā)給各從機(jī),主機(jī)發(fā)出的地址信息的第9位為1,各從機(jī)接收到的第9位信息RB8為1,且由于SM2=1,則置"1"RI,各從機(jī)響應(yīng)中斷,執(zhí)行中斷程序。在中斷服務(wù)子程序中,判主機(jī)送來(lái)的地址是否和本機(jī)地址相符合,相符則該從機(jī)清"0"SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若不符,則保持SM2=1狀態(tài)?!?接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(jī)串行口接收到的RB8=0,只有地址相符合的從機(jī)系統(tǒng)〔即已清"0"SM2位的從機(jī)才能激活RI,從而進(jìn)入中斷,在中斷程序中接收主機(jī)的數(shù)據(jù)〔或命令;其它的從機(jī)因SM2=1,又RB8=0不激活中斷標(biāo)志RI,不能進(jìn)入中斷,接收的數(shù)據(jù)丟失。前圖所示的多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。7.4波特率的制定方法方式0、方式2的波特率是固定的;方式1、方式3波特率由定時(shí)器T1的溢出率來(lái)確定。7.4.1波特率的定義波特率的定義。對(duì)于定時(shí)器的不同工作方式,波特率的圍不一7.4.2定時(shí)器T1產(chǎn)生波特率的計(jì)算〔1方式0波特率=時(shí)鐘頻率fosc×1/12,不受SMOD位的值的影響。若fosc=12MHz,波特率為fosc/12即1Mb/s?!?方式2波特率=〔2SMOD/64×fosc若fosc=12MHz:SMOD=0波特率=187.5kb/s;SMOD=1波特率=375kb/s〔3方式1或方式3時(shí),波特率為: 波特率=〔2SMOD/64×T1的溢出率實(shí)際設(shè)定波特率時(shí),T1常設(shè)置為方式2定時(shí)〔自動(dòng)裝初值這種方式不僅操作方便,也可避免因軟件重裝初值而帶來(lái)的定時(shí)誤差。實(shí)際使用時(shí),為避免煩雜的初值計(jì)算,常用的波特率和初值X間的關(guān)系列成表7-2<P148>,以供查用。表7-2有兩點(diǎn)需要注意:<1>時(shí)鐘振蕩頻率為12MHz或6MHz時(shí),表中初值X和相應(yīng)的波特率之間有一定誤差。例如,FDH的對(duì)應(yīng)的理論值是10416波特〔時(shí)鐘6MHz。與9600波特相差816波特,消除誤差可以調(diào)整時(shí)鐘振蕩頻率fosc實(shí)現(xiàn)。例如采用的時(shí)鐘振蕩頻率為11.0592MHz。<2>如果串行通訊選用很低的波特率,例如,波特率選為55,可將定時(shí)器T1設(shè)置為方式1定時(shí)。但在這種情況下,T1溢出時(shí),需用在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時(shí)間和執(zhí)行指令時(shí)間會(huì)使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。三LCD1602顯示設(shè)置組成:驅(qū)動(dòng)器,控制器,液晶板。引腳:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生"鬼影",使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線(xiàn)。第15腳:背光源正極。第16腳:背光源負(fù)極。命令:指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線(xiàn),低電平時(shí)為8位總線(xiàn)N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。指令11:讀數(shù)據(jù)。實(shí)驗(yàn)原理圖流程圖實(shí)驗(yàn)源程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^5;sbitRW=P2^6;sbitEN=P2^7;sbitLED=P3^6;uchartable[17];ucharcodetable1[]={"RECEIVECODEIS:"}; ucharnum,n;voiddelay1ms<unsignedintms>//延時(shí)1毫秒{unsignedinti,j;for<i=0;i<ms;i++>for<j=0;j<100;j++>;}voiduart_int<void>{ SCON=0x50; REN=1; PCON=0x00; TMOD=0x20; TH1=0xFD; TL1=0xFD; TR1=1; EA=1; ES=1;}voidwr_<unsignedchar>//寫(xiě)指令//{delay1ms<1>;RS=0;RW=0;EN=0;P0=;delay1ms<1>;EN=1;delay1ms<1>;EN=0;}voidwr_dat<unsignedchardat>//寫(xiě)數(shù)據(jù)//{delay1ms<1>;;RS=1;RW=0;EN=0;P0=dat;delay1ms<1>;EN=1;delay1ms<1>;EN=0;}voidserve<>interrupt4 { table[n]=SBUF; n++; if<n==17> { table[0]=table[16]; wr_<0x01>; n=1; } RI=0;}voidlcd_init<>//初始化設(shè)置//{delay1ms<15>;wr_<0x38>;delay1ms<5>;wr_<0x08>;delay1ms<5>;wr_<0x01>;delay1ms<5>;wr_<0x06>;delay1ms<5>;w

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論