<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)T89S52的串口通信控制LCM顯示

基于A(yíng)T89S52的串口通信控制LCM顯示

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

1 引言

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

2 總體解決方案

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

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

3 系統硬件電路設計與實(shí)現

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

.3.1 電源部分設計

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


圖1 系統電源電路圖

3.2單片機外圍電路及LCM驅動(dòng)電路

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

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

圖2 單片機外圍電路及LCM驅動(dòng)電路原理圖

3.3 RS232串口通信電路

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

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

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

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

因為L(cháng)CM只能顯示192個(gè)英文字符及標點(diǎn)符號。所以握手信號不能采用此已知的字符,并且要保證握手信號盡可能地短,所以使用十六進(jìn)制的值來(lái)表示。通信協(xié)議的定義如表2所示:

表2 通訊協(xié)議

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

字節碼(十六進(jìn)制)

含義

0xff

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

0xfe

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

0xfd

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

5系統軟件設計

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

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

5.1單片機端軟件設計

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

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

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

單片機部分的串口通信模塊只要完成單片機與上位機的通信,從而將系統所需的信息傳送給上位機進(jìn)行處理。由于A(yíng)T89S52單片機具有片內的 UART,因此實(shí)現串口通信相當容易,只需要設置適當的寄存器就可以使串口工作起來(lái)。串口通信有循環(huán)(查詢(xún))和中斷兩種方式。就使用效率而言,中斷方式比查詢(xún)方式節約CPU資源。所以此單片機的串口通訊采用中斷方式接受、發(fā)送數據。

5.2 PC端軟件設計

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

歸納出系統需要的類(lèi)對象:用戶(hù)界面類(lèi)MainFrame,串口類(lèi)PortControl,串口寫(xiě)數據類(lèi)SerialWriter,串口讀數據類(lèi)SerialReader。

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

6 總結

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

參考文獻

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

[2]趙亮,候國銳 編著(zhù),單片機C語(yǔ)言編程與實(shí)例 ,人民郵電出版社 2003-7

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

[4]馬鴻文.基于A(yíng)T89C52單片機的自動(dòng)存取柜的設計與實(shí)現[J].微計算機信息,2006,22(1-2):101-103.

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


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




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>