新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AT89S52的串口通信控制LCM顯示

基于AT89S52的串口通信控制LCM顯示

作者: 時間:2012-01-07 來源:網(wǎng)絡(luò) 收藏

1 引言

計算機帶來的革命性進步滲透到各個行業(yè),傳統(tǒng)意義上計算機的定義也發(fā)生大的變化.單片機簡稱Micro-Controller/Embedded -Controller,以其高性價比,備受工業(yè)控制,電子消費領(lǐng)域重視.單片機是很多系統(tǒng)集成用到的方式。在一些復(fù)雜的控制系統(tǒng)中,單片機和 PC機互聯(lián)成為一種系統(tǒng)解決方案。單片機和PC機互聯(lián),利用PC機的強大運算決策能力,單片機作為特殊環(huán)境的數(shù)據(jù)采集和執(zhí)行單元,越來越多地被利用到工業(yè)控制領(lǐng)域,這樣可以大幅度地節(jié)約系統(tǒng)成本。

2 總體解決方案

單片機選用Atmel89S52,通過DB9串口線連接到計算機,采用RS232標(biāo)準(zhǔn)。單片機和計算機之間通信采用一定的通信協(xié)議。通過計算機端的串口通訊軟件控制單片機上LCM的顯示內(nèi)容和顯示方式。發(fā)送字符串或文本文件到單片機,單片機驅(qū)動LCM,并將接收到的內(nèi)容顯示在LCM上(LCM只能顯示ASCII字符及8個自定義字符),通過PC端軟件可以控制字符的顯示方式,如滾動顯示,換行顯示,換屏顯示,并可以讀取當(dāng)前LCM顯示的內(nèi)容。所以系統(tǒng)的基本組成就是單片機,PC機端軟件。

由于PC端計算功能強于單片機,所以要預(yù)先處理好數(shù)據(jù)再向MCU發(fā)送。MCU提供一個容量有限的緩沖區(qū),PC機端軟件把要顯示的內(nèi)容送入緩沖,也可以從緩沖中讀取正在顯示的內(nèi)容。PC端串口通信軟件采用JAVA語言編寫,JAVA語言的特色是高度的可移植性,另外JDK (JAVA Development Kits)提供了豐富的類庫,能夠很方便地構(gòu)造良好圖形用戶接口的(GUI)應(yīng)用程序。

3 系統(tǒng)硬件電路設(shè)計與實現(xiàn)

硬件電路主要分成電源電路,單片機的上電復(fù)位和振蕩電路,單片機和LCM間的數(shù)據(jù)通路,另外就是單片機和PC機間的RS232通信模塊的設(shè)計,采用MAX232系列芯片,負(fù)責(zé)電平信號的轉(zhuǎn)換。

.3.1 電源部分設(shè)計

如圖1所示,該電源部分電路,自帶整流橋,所以可以輸入直流或是交流9V電源,然后再通過7805穩(wěn)定到5V供單片機工作。固定式三端穩(wěn)壓電源 7805是由輸出腳Vo,輸入腳Vi和接地腳GND組成,它的穩(wěn)壓值為+5V,它屬于CW78XX系列的穩(wěn)壓器,輸入端接電容可以進一步的濾波,輸出端也要接電容可以改善負(fù)載的瞬間影響,此電路的穩(wěn)定性也比較好,只是采用的電容必須要漏電流要小的鉭電容,如果采用電解電容,則電容量要比其他的數(shù)值要增加 10倍。


圖1 系統(tǒng)電源電路圖

3.2單片機外圍電路及LCM驅(qū)動電路

單片機的最小系統(tǒng)包括震蕩電路、復(fù)位電路等。該系統(tǒng)的時鐘部分都是采用晶體振蕩器實現(xiàn)的??紤]到電源的輸入紋波對單片機的影響,在電源的管腳增加一個電容來實現(xiàn)濾波,以較小輸入端受到的干擾。在本系統(tǒng)中采用11.0592Mhz的晶振,由10K電阻和10uF電容構(gòu)成上電復(fù)位電路。-EA/Vpp 接VCC,因為訪問內(nèi)部存儲器.ALE/-PROG應(yīng)置空。單片機的P0和P2口和RT1602 LCM連接。采用11.0592MHz的目的是方便串口使用9600bit/s的通信速率。

LCM顯示模塊是一種將液晶顯示器件,連接件,集成電路,PCB線路板,背光源,結(jié)構(gòu)件裝配在一起的組件,實際上它是一種商品化的部件。本設(shè)計選用 1602系列液晶點陣字符模塊,每行可以顯示16個字符,共2行。它是由點陣字符液晶顯示器和專用的行,列驅(qū)動器,控制器及必要的連接件,結(jié)構(gòu)件裝配而成的,可以顯示數(shù)字和西文字符。這種點陣字符模塊本身具有字符發(fā)生器,顯示容量大,功能豐富。

圖2 單片機外圍電路及LCM驅(qū)動電路原理圖

3.3 RS232串口通信電路

該系統(tǒng)實現(xiàn)串口通信模塊主要是與上位機進行通信。單片機系統(tǒng)將保存在RAM中的數(shù)據(jù)送到上位機進行處理,從而減輕單片機系統(tǒng)的負(fù)擔(dān)。由于單片機與上位機進行通信時接口電平不同,因此需要進行接口轉(zhuǎn)化,這里采用MAX232芯片來實現(xiàn)接口電平的轉(zhuǎn)化。

4 通信協(xié)議的設(shè)計

單片機和PC機端軟件進行通信,就必須要遵守一定的通信規(guī)則,比如,MCU主動發(fā)送初始化成功代碼到PC端,PC端發(fā)送一個特定的代碼說明將要向MCU發(fā)送數(shù)據(jù)了,MCU做好接收的準(zhǔn)備.

RS232通信速率最高支持19200bit/s.本軟件采用9600bit/s通信速率。所以通信協(xié)議要盡可能短小,以提高通信效率。

因為LCM只能顯示192個英文字符及標(biāo)點符號。所以握手信號不能采用此已知的字符,并且要保證握手信號盡可能地短,所以使用十六進制的值來表示。通信協(xié)議的定義如表2所示:

表2 通訊協(xié)議

握手信號(通信協(xié)議)

字節(jié)碼(十六進制)

含義

0xff

PC向MCU發(fā)送LCM 顯示信息

0xfe

PC發(fā)送LCM信息結(jié)束

0xfd

PC請求MCU發(fā)送LCM顯示信息到PC

5系統(tǒng)軟件設(shè)計

系統(tǒng)軟件設(shè)計部分包括單片機端和PC端兩部分。單片機端主要是通過串口接收來自上位機的信息,然后將得到的信息在LCM中顯示。PC端軟件部分主要通過編寫圖形界面,來實現(xiàn)對用戶對整個系統(tǒng)的操控。單片機端和軟件端的主流程如圖3所示:

圖3 單片機端和PC端軟件操作流程圖

5.1單片機端軟件設(shè)計

單片機端軟件采用C51編寫(類C代碼),使用Keil uVision集成開發(fā)環(huán)境。單片機端主要完成單片機的初始化、LCM的顯示、串口通信。

單片機的初始化的主要是單片機的串口中斷打開和LCM的初始化顯示。要設(shè)置下列寄存器的值:IE,EA,ES,SCON,PCON, TCON等。

LCM的顯示主要完成控制LCM的顯示內(nèi)容和方式,及接收和發(fā)送信息給PC機,并且在顯示時必須要先讀取其忙狀態(tài)標(biāo)記,以判斷LCM是否可以接受數(shù)據(jù)。

單片機部分的串口通信模塊只要完成單片機與上位機的通信,從而將系統(tǒng)所需的信息傳送給上位機進行處理。由于AT89S52單片機具有片內(nèi)的 UART,因此實現(xiàn)串口通信相當(dāng)容易,只需要設(shè)置適當(dāng)?shù)募拇嫫骶涂梢允勾诠ぷ髌饋?。串口通信有循環(huán)(查詢)和中斷兩種方式。就使用效率而言,中斷方式比查詢方式節(jié)約CPU資源。所以此單片機的串口通訊采用中斷方式接受、發(fā)送數(shù)據(jù)。

5.2 PC端軟件設(shè)計

PC端軟件主要負(fù)責(zé)提供一個方便的用戶界面以便發(fā)送和接收,并且處理串口信息。此軟件運行后,要使用主線程初始化用戶界面,同時啟動一個后臺線程負(fù)責(zé)一直監(jiān)視用戶選擇的串口,接受單片機發(fā)送來的信息,并及時地顯示出來。當(dāng)用戶輸入要發(fā)送的字符,點擊發(fā)送時,能夠及時的向串口發(fā)送數(shù)據(jù),另外,一個完整的軟件,幫助也是必不可少的,這樣方便用戶使用軟件。

歸納出系統(tǒng)需要的類對象:用戶界面類MainFrame,串口類PortControl,串口寫數(shù)據(jù)類SerialWriter,串口讀數(shù)據(jù)類SerialReader。

PC端在進行串口通信編程時,必須在使用之前首先向操作系統(tǒng)提出資源申請要求(打開串口),然后對端口進行參數(shù)配置,之后才可以同串口進行數(shù)據(jù)交換并完成數(shù)據(jù)從串口的發(fā)送與接收。最后,在通信完成時釋放資源(關(guān)閉串口)。創(chuàng)建串口類PortControl,負(fù)責(zé)串口的列舉,數(shù)據(jù)發(fā)送和數(shù)據(jù)接收。

6 總結(jié)

本文的創(chuàng)新點在于設(shè)計的串口通信軟件采用JAVA語言編寫,,成功的解決了因為串口屬于系統(tǒng)底層資源,大多與系統(tǒng)緊密結(jié)合,要想開發(fā)跨平臺的軟件很難實現(xiàn)的問題,通過為不同的系統(tǒng)定制不同的JAVA VM并向上提供統(tǒng)一的接口;其次本設(shè)計選用1602系列液晶點陣字符模塊,這種點陣字符模塊本身具有字符發(fā)生器,顯示容量大,功能豐富;最后通過編程上位機軟件界面,方便了對LCM的控制,從而避免了因改變LCM顯示內(nèi)容而改變源代碼的功能。該項目實施一年以來,創(chuàng)造經(jīng)濟效益68多萬元。

參考文獻

[1]唐俊,許雷,張群瞻,單片機原理與應(yīng)用 ,冶金工業(yè)出版社,2003

[2]趙亮,候國銳 編著,單片機C語言編程與實例 ,人民郵電出版社 2003-7

[3]胡凱,張穎超.生化分析儀的設(shè)計及與PC機的通信[J].微計算機信息.2006,22(4-1):208-209

[4]馬鴻文.基于AT89C52單片機的自動存取柜的設(shè)計與實現(xiàn)[J].微計算機信息,2006,22(1-2):101-103.

數(shù)字通信相關(guān)文章:數(shù)字通信原理


通信相關(guān)文章:通信原理




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉