基于串口通信的LCD顯示_第1頁
基于串口通信的LCD顯示_第2頁
基于串口通信的LCD顯示_第3頁
基于串口通信的LCD顯示_第4頁
基于串口通信的LCD顯示_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄引言11 設(shè)計(jì)任務(wù)與目的21.1 設(shè)計(jì)任務(wù):21.2 設(shè)計(jì)目的:22 串口通信原理22.1 串行口工作原理22.3 方案論證43硬件設(shè)計(jì)63.1 AT89S52最小系統(tǒng)63.3 LCD顯示電路73.4 max232電平轉(zhuǎn)換電路84 軟件設(shè)計(jì)94.1主程序流程圖94.2 LCD顯示函數(shù)104.3 鍵盤函數(shù)105系統(tǒng)調(diào)試115.1 硬件調(diào)試115.2 軟件調(diào)試116 結(jié)論11參考文獻(xiàn)12引言 51單片機(jī)內(nèi)部有一個(gè)全雙工串行接口。什么叫全雙工串口呢?一般來說,只能接受或只能發(fā)送的稱為單工串行;既可接收又可發(fā)送,但不能同時(shí)進(jìn)行的稱為半雙工;能同時(shí)接收和發(fā)送的串行口稱為全雙工串行口。串行通信是指數(shù)

2、據(jù)一位一位地按順序傳送的通信方式,其突出優(yōu)點(diǎn)是只需一根傳輸線,可大大降低硬件成本,適合遠(yuǎn)距離通信。其缺點(diǎn)是傳輸速度較低。在國內(nèi)外,以PC機(jī)作為上位機(jī),單片機(jī)作為下位機(jī)的控制系統(tǒng)中,PC機(jī)通常以軟件界面進(jìn)行人機(jī)交互,以串行通信方式與單片機(jī)進(jìn)行積極交互的技術(shù)得到越來越大的重視和越來越廣泛的應(yīng)用。LCD顯示技術(shù)是一門新興的顯示技術(shù),相對于LED顯示,LCD顯示有節(jié)能,能顯示的更多以及更高端等優(yōu)點(diǎn)。本次課程設(shè)計(jì)選用串行通信和LCD顯示來進(jìn)一步加深我們對于單片機(jī)的理解。1 設(shè)計(jì)任務(wù)與目的 1.1 設(shè)計(jì)任務(wù):(1)下位機(jī)選用89S51或89S52單片機(jī);(2)下位機(jī)接收上位機(jī)的數(shù)據(jù)并顯示在LED或LCD上

3、(3)下位機(jī)顯示數(shù)據(jù)可以顯示固定數(shù)據(jù)、以為數(shù)據(jù)、循環(huán)移位;(4)硬件要求:制作串口線和下位機(jī)及外圍電路;(5)軟件要求:keil c或匯編編程設(shè)計(jì),串口調(diào)試助手或labview串口通信編程。 1.2設(shè)計(jì)目的:(1)通過串口實(shí)現(xiàn)下位機(jī)與上位機(jī)之間的相互通信。(2)通過設(shè)計(jì)將串口通信的各種方式進(jìn)行進(jìn)一步的了解。(3)將接收的數(shù)字與發(fā)送的數(shù)字在LCD上進(jìn)行顯示,從而熟悉液晶顯示屏LCD1602 的具體操作。(4)熟練掌握C語言在單片機(jī)上的編程應(yīng)用。(5)將各學(xué)科之間的的知識(shí)進(jìn)行綜合運(yùn)用,并能夠?qū)崿F(xiàn)所需的功能設(shè)計(jì)。2 串口通信原理串行通信是CPU與外界交換信息的一種基本通信方式。通信時(shí)僅需一到兩根傳輸

4、線,且每次只能傳送一位,適用于長距離傳輸,但速度較慢。MCS51串行口是一個(gè)可編程的全雙工串行通信接口,其對應(yīng)的引腳為P3.0(10腳)和P3.1(11腳),分別為RXD和TXD,通過軟件編程它可以作通用異步收發(fā)器用,也可以做同步移位寄存器使用,其幀格式有8位、10位和11位3種,并能設(shè)置各種波特率。MCS51串行口有兩個(gè)獨(dú)立的緩沖器,即發(fā)送緩沖器和接收緩沖器,且共用一個(gè)地址99H(SBUF)。同時(shí),MSC51串行口可以用軟件設(shè)置成4種不同的工作方式。 2.1 串行口工作原理通過對特殊功能寄存器串行口控制寄存器中SM0、SM1兩位的操作,MCS51單片機(jī)串口通信工作方式有4種,與串行口有關(guān)的特

5、殊功能寄存器有串行口控制寄存器SCON、電源控制寄存器PCON和定時(shí)器T1,主要確定了串口通信的工作方式和波特率的計(jì)算方法。(1)串行口數(shù)據(jù)緩沖器SBUFSBUF是兩個(gè)在物理上相互獨(dú)立的接收,發(fā)送緩沖器,可同時(shí)發(fā)送,接收數(shù)據(jù),兩個(gè)緩沖器共用一個(gè)字節(jié)地址,為99H,可字節(jié)尋址,不可位尋址,復(fù)位值為00H??赏ㄟ^編程對SBUF的讀寫來區(qū)別是對接收緩沖器的操作還是對發(fā)送緩沖器的操作。CPU寫SBUF,就是修改發(fā)送緩沖器; CPU讀SBUF,就是讀接收緩沖器,在硬件結(jié)構(gòu)上,串行口對外有兩條獨(dú)立的收發(fā)信號線RXD和TXD,因此可以同時(shí)發(fā)送,接收數(shù)據(jù),實(shí)現(xiàn)全雙工傳送。(2)串行口控制寄存器SCONSCON

6、寄存器用于確定串行通信的工作方式、接收和發(fā)送控制、串行口的中斷狀態(tài)標(biāo)志,它既可以是字節(jié)尋址,也可以是位尋址,字地址為98H,其復(fù)位值為00H。SM0,SM1工作方式控制位,可構(gòu)成4種通信工作方式,分別為:方式0-同步移位寄存器;方式1-10位異步收發(fā);方式2-11位異步收發(fā);方式3-11位異步收發(fā)。SM2多機(jī)通信控制位,用于主一從式多機(jī)通信控制,因多機(jī)通信是在方式2和方式3下進(jìn)行,因此SM2位主要用于方式2和方式3。若SM2=1,則允許多機(jī)通信。若SM2=0,則不屬于多機(jī)通信情況,接收到一幀數(shù)據(jù)后,無論第9位(D8)是0還是1,都置中斷標(biāo)志RI=1,接收到的數(shù)據(jù)裝入接收/發(fā)送緩沖器(SBUF)

7、中。在工作方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí)中斷標(biāo)志RI才置1,以便接收下一幀數(shù)據(jù);在工作方式0時(shí),SM2必須為0。REN允許接收控制位,用軟件置1或清零,REN=1,允許接收;REN=0,禁止接收。 TB8發(fā)送數(shù)據(jù)位8,在方式2和方式3時(shí),TB8是要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),TB8=1為地址,該位由軟件置位或清零,此外,該位還可以作為數(shù)據(jù)的奇偶檢驗(yàn)位。 RB8接收數(shù)據(jù)位8,在工作方式2和工作方式3種,它是接收到的第9位數(shù)據(jù)位,既可以作為約定好的奇偶檢驗(yàn)位,也可以作為多機(jī)通信時(shí)的地址幀或數(shù)據(jù)幀標(biāo)志。在工作方式1

8、中若SM2=0,則RB8是接收到的停止位,在工作方式0種不使用RB8。TI發(fā)送中斷標(biāo)志位,在工作方式0中,發(fā)送完8位數(shù)據(jù)后,由硬件置1,向CPU申請接收中斷,CPU響應(yīng)中斷后,必須用軟件清零;在其他方式下,在發(fā)送停止位前,由硬件置位。RI接收中斷標(biāo)志位。在工作方式0種,接收完8位數(shù)據(jù)后,由硬件置1,向CPU申請發(fā)送中斷,CPU響應(yīng)中斷后,必須用軟件清零;在其他方式下,在接收到停止位的中間時(shí)刻由硬件置1,中斷響應(yīng)后也必須用軟件清零。串行發(fā)送中斷標(biāo)志位TI和接受中斷標(biāo)志位RI是同一個(gè)中斷源,在全雙工通信中,必須用軟件來判別是發(fā)送中斷請求還是接收中斷請求。(3)電源控制寄存器PCON PCON主要是

9、為CHMOS型單片機(jī)上實(shí)現(xiàn)電源控制而設(shè)置的專用寄存器,單元地址為87H其中只有一位SMOD與串行口工作有關(guān)。SMOD稱為波特率選擇位。在工作方式1,2,3中若SMOD=1,則波特率提高一倍;若SMOD=0,則波特率不加倍。除了以上3種特殊功能寄存器以外,串口的工作還與定時(shí)器T1和中斷允許寄存器IE有關(guān),定時(shí)器T1主要在工作方式1,工作方式2中用于計(jì)算波特率,而IE主要用于接收/發(fā)送中斷的允許控制,ES=0,禁止串行中斷,ES=1,允許串行中斷。 2.2串行通信的波特率在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)?/p>

10、波特位數(shù)。51芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M的晶振來計(jì)算,那么它的波特率可以達(dá)到1M。模式2的波特率是固定在fosc/64或fosc/32,具體用那一種就取決于PCON寄存器中的SMOD位,如SMOD為0,波特率為focs/64,SMOD為1,波特率為focs/32。模式1和模式3的波特率是可變的,取決于定時(shí)器1或2(52芯片)的溢出速率。計(jì)算這兩個(gè)模式的波特率可以用以下的公式去計(jì)算。波特率(2SMOD÷32)×定時(shí)器1溢出速率 (1)上式中如設(shè)置了PCON寄存器中的SMOD位為1時(shí)就可以把波特率提升2倍。通常會(huì)使用定時(shí)器1工作在定時(shí)器

11、工作模式2下,這時(shí)定時(shí)值中的TL1做為計(jì)數(shù),TH1做為自動(dòng)重裝值,這個(gè)定時(shí)模式下,定時(shí)器溢出后,TH1的值會(huì)自動(dòng)裝載到TL1,再次開始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。在這個(gè)定時(shí)模式2下定時(shí)器1溢出速率的計(jì)算公式如下:溢出速率(計(jì)數(shù)速率)/(256TH1) (2) 上式中的“計(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)的無誤差的波

12、特率。如我們要得到9600的波特率,晶振為11.0592M和12M,定時(shí)器1為模式2,SMOD設(shè)為1,分別看看那所要求的TH1為何值。代入公式:當(dāng)晶振為11.0592MHZ時(shí):9600(2÷32)×(11.0592M/12)/(256-TH1)TH1250當(dāng)晶振為12MHZ時(shí):9600(2÷32)×(12M/12)/(256-TH1)TH1249.49上面的計(jì)算可以看出使用12M晶體的時(shí)候計(jì)算出來的TH1不為整數(shù),而TH1的值只能取整數(shù),這樣它就會(huì)有一定的誤差存在不能產(chǎn)生精確的9600波特率。本次設(shè)計(jì)中為了得到精確地波特率,采用的晶振頻率為11.0592

13、MHz,此外定時(shí)器工作在方式2,即八位自動(dòng)重裝載,串口工作在方式1. 2.3 方案論證方案一:USB轉(zhuǎn)串口通信實(shí)現(xiàn)傳輸數(shù)據(jù),使用LED顯示。LED顯示原理簡單,容易實(shí)現(xiàn),但功能不強(qiáng)大,技術(shù)落后。上位機(jī)USB轉(zhuǎn)串口通信信AT89S52LED顯示 圖2.1方案一系統(tǒng)框圖 方案二:使用max232芯片來進(jìn)行RS485和TTL電平之間的轉(zhuǎn)換,能夠更好的理解串口通信。使用LCD來進(jìn)行顯示,功能更加強(qiáng)大。使用按鍵來控制LCD所顯示的數(shù)字進(jìn)行移位顯示或循環(huán)移位顯示。綜合考慮,方案二更能體現(xiàn)本次課設(shè)的內(nèi)容,更能加深我們隊(duì)串口通信的理解,但是考慮到現(xiàn)在計(jì)算機(jī)都沒有串口,使用USB轉(zhuǎn)串口。 按鍵控制LCD1602

14、顯示 AT89S52 單片機(jī)系統(tǒng)組成框圖Max232電平轉(zhuǎn)換上位機(jī)串行通信圖2.2 方案二系統(tǒng)框圖3硬件設(shè)計(jì) 3.1 使用AT89S52作為本系統(tǒng)的主控機(jī) 圖3.1單片機(jī)工作電路AT89S52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程序存儲(chǔ)器和1000次擦寫循環(huán),數(shù)據(jù)保留時(shí)間為10年,是最好的選擇。 3.2 采用按鍵復(fù)

15、位電路圖1.2 按鍵復(fù)位電路 3.3 采用LCD顯示電路圖1.3 LCD顯示電路 分別使用P2.0,P2.1,P2.2作為LCD的控制端,P0口作為數(shù)據(jù)的輸入端,使用一個(gè)10K的滑動(dòng)變阻器來調(diào)節(jié)LCD的對比度。 3.4 max232電平轉(zhuǎn)換電路圖1.4 串行通信電路插座的2腳接電腦的數(shù)據(jù)發(fā)送端,插座的三腳接電腦的接收端。 3.5 按鍵電路圖1.5 按鍵電路 通過讀取P2口的電平來判斷是否有鍵按下。4 軟件設(shè)計(jì) 4.1主程序流程圖開始初始化液晶初始化串口接收到數(shù)據(jù)接收數(shù)據(jù)否是是否接收完調(diào)用鍵盤掃描函數(shù)鍵值為0x40,數(shù)據(jù)右移一位鍵值為0x80,數(shù)據(jù)循環(huán)右移鍵值為0,調(diào)顯示函數(shù)返回 圖4.1主程序

16、流程圖 本程序采用模塊化設(shè)計(jì),使用函數(shù)來實(shí)現(xiàn)要實(shí)現(xiàn)的功能。主要的幾個(gè)函數(shù)有LCD顯示函數(shù),按鍵掃描函數(shù)和串口中斷函數(shù)。通過串口中斷函數(shù)來改變字符串的內(nèi)容,調(diào)用按鍵函數(shù)確定鍵值,根據(jù)鍵值來確定固定顯示,循環(huán)顯示和移位顯示。最后調(diào)用LCD顯示函數(shù)吧字符串顯示出來。 4.2 LCD顯示字符串函數(shù)和顯示字符函數(shù)。要顯示的字符,地址作為實(shí)參要顯示的字符串作為實(shí)參是否在第一行調(diào)用顯示一個(gè)字符函數(shù)否否是地址加c0地址加80是否顯示完寫入數(shù)據(jù)是結(jié)束 圖4.2顯示函數(shù)流程圖顯示字符串是通過調(diào)用顯示函數(shù)來實(shí)現(xiàn)的,有三個(gè)參數(shù),分別為要顯示的字符,橫坐標(biāo),縱坐標(biāo)。顯示字符是先確定地址,再把數(shù)據(jù)寫入。 4.3 鍵盤函數(shù)

17、判定有鍵按下調(diào)用鍵盤處理函數(shù)去抖動(dòng)返回鍵值圖4.3鍵盤函數(shù)鍵值處理函數(shù)是把P2口的值取反,然后屏蔽低四位得到鍵值。5系統(tǒng)調(diào)試普遍情況下一個(gè)系統(tǒng)只有經(jīng)過調(diào)試才會(huì)正常工作,在調(diào)試過程中我們能加深對系統(tǒng)的理解,發(fā)現(xiàn)自己的錯(cuò)誤。5.1 硬件調(diào)試硬件要實(shí)現(xiàn)的有LCD能正常顯示,按鍵正常工作,串口能正常通信。5.1.0 LCD 調(diào)試使用KEIL3寫一個(gè)簡單的LCD顯示函數(shù)生成HEX文件,首先我在proteus ISIS7中對實(shí)驗(yàn)進(jìn)行了仿真,確定程序是可行的。但將程序拷進(jìn)單片機(jī)中后LCD不能正常顯示,經(jīng)過詢問同學(xué)我得知可能是我的電位器沒調(diào)好,經(jīng)過調(diào)試電位器LCD能正常顯示。5.1.1 按鍵調(diào)試使用萬用表分別

18、檢測按鍵沒按下和按下時(shí)的電位,發(fā)現(xiàn)能達(dá)到預(yù)期的目標(biāo)。但編程時(shí)發(fā)現(xiàn)我的P2.0,P2.1,P2.2口已經(jīng)在LCD上用了。只能把先斷開,再跳線到P2.5,P2.6,P2.7,能夠正常實(shí)現(xiàn)按鍵功能。5.1.2 串行通信調(diào)試一開始總是不能正常通信,經(jīng)過耐心的檢查發(fā)現(xiàn)時(shí)串行線連接錯(cuò)誤。5.2 軟件調(diào)試 軟件調(diào)試采用仿真和現(xiàn)場調(diào)試相結(jié)合的方法,先一個(gè)個(gè)函數(shù)實(shí)現(xiàn),再把所有的程序整合起來實(shí)現(xiàn)預(yù)期的功能。6 結(jié)論 經(jīng)過調(diào)試,本次設(shè)計(jì)住實(shí)現(xiàn)了上位機(jī)與下位機(jī)之間簡單的通信,上位機(jī)通過LABVIEW程序發(fā)送一個(gè)十六進(jìn)制的數(shù)經(jīng)過串口,可以被下位機(jī)接收,并在LCD進(jìn)行顯示,而且實(shí)現(xiàn)根據(jù)按鍵來控制固定顯示、移位顯示和循環(huán)移位顯示。,通過本次設(shè)計(jì),對單片機(jī)串口通信這部分的內(nèi)容進(jìn)行了更深層次的學(xué)習(xí),知道了很多書本上學(xué)不到的東西。并且在本次設(shè)計(jì)中采用LCD顯示,開始覺得LCD很高端,但通過查閱資料和詢問同學(xué)老師很輕松的就掌握了它的使用。本次設(shè)計(jì)所要求的移位顯示,一開始使用移位指令。結(jié)果發(fā)現(xiàn)顯示的時(shí)候會(huì)有殘影,使用沒顯示一次清屏一次的辦法解決了這個(gè)問題。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論