基于AT89S52的串口通信控制LCM顯示
1 引言
計算機帶來的革命性進步滲透到各個行業(yè),傳統意義上計算機的定義也發(fā)生大的變化.單片機簡稱Micro-Controller/Embedded -Controller,以其高性價比,備受工業(yè)控制,電子消費領域重視.單片機串口通信是很多系統集成用到的方式。在一些復雜的控制系統中,單片機和 PC機互聯成為一種系統解決方案。單片機和PC機互聯,利用PC機的強大運算決策能力,單片機作為特殊環(huán)境的數據采集和執(zhí)行單元,越來越多地被利用到工業(yè)控制領域,這樣可以大幅度地節(jié)約系統成本。
2 總體解決方案
單片機選用Atmel89S52,通過DB9串口線連接到計算機,串口通信采用RS232標準。單片機和計算機之間通信采用一定的通信協議。通過計算機端的串口通訊軟件控制單片機上LCM的顯示內容和顯示方式。發(fā)送字符串或文本文件到單片機,單片機驅動LCM,并將接收到的內容顯示在LCM上(LCM只能顯示ASCII字符及8個自定義字符),通過PC端軟件可以控制字符的顯示方式,如滾動顯示,換行顯示,換屏顯示,并可以讀取當前LCM顯示的內容。所以系統的基本組成就是單片機,PC機端串口通信軟件。
由于PC端計算功能強于單片機,所以要預先處理好數據再向MCU發(fā)送。MCU提供一個容量有限的緩沖區(qū),PC機端軟件把要顯示的內容送入緩沖,也可以從緩沖中讀取正在顯示的內容。PC端串口通信軟件采用JAVA語言編寫,JAVA語言的特色是高度的可移植性,另外JDK (JAVA Development Kits)提供了豐富的類庫,能夠很方便地構造良好圖形用戶接口的(GUI)應用程序。
3 系統硬件電路設計與實現
硬件電路主要分成電源電路,單片機的上電復位和振蕩電路,單片機和LCM間的數據通路,另外就是單片機和PC機間的RS232通信模塊的設計,采用MAX232系列芯片,負責電平信號的轉換。
.3.1 電源部分設計
如圖1所示,該電源部分電路,自帶整流橋,所以可以輸入直流或是交流9V電源,然后再通過7805穩(wěn)定到5V供單片機工作。固定式三端穩(wěn)壓電源 7805是由輸出腳Vo,輸入腳Vi和接地腳GND組成,它的穩(wěn)壓值為+5V,它屬于CW78XX系列的穩(wěn)壓器,輸入端接電容可以進一步的濾波,輸出端也要接電容可以改善負載的瞬間影響,此電路的穩(wěn)定性也比較好,只是采用的電容必須要漏電流要小的鉭電容,如果采用電解電容,則電容量要比其他的數值要增加 10倍。
圖1 系統電源電路圖
3.2單片機外圍電路及LCM驅動電路
單片機的最小系統包括震蕩電路、復位電路等。該系統的時鐘部分都是采用晶體振蕩器實現的??紤]到電源的輸入紋波對單片機的影響,在電源的管腳增加一個電容來實現濾波,以較小輸入端受到的干擾。在本系統中采用11.0592Mhz的晶振,由10K電阻和10uF電容構成上電復位電路。-EA/Vpp 接VCC,因為訪問內部存儲器.ALE/-PROG應置空。單片機的P0和P2口和RT1602 LCM連接。采用11.0592MHz的目的是方便串口使用9600bit/s的通信速率。
LCM顯示模塊是一種將液晶顯示器件,連接件,集成電路,PCB線路板,背光源,結構件裝配在一起的組件,實際上它是一種商品化的部件。本設計選用 1602系列液晶點陣字符模塊,每行可以顯示16個字符,共2行。它是由點陣字符液晶顯示器和專用的行,列驅動器,控制器及必要的連接件,結構件裝配而成的,可以顯示數字和西文字符。這種點陣字符模塊本身具有字符發(fā)生器,顯示容量大,功能豐富。
圖2 單片機外圍電路及LCM驅動電路原理圖
3.3 RS232串口通信電路
該系統實現串口通信模塊主要是與上位機進行通信。單片機系統將保存在RAM中的數據送到上位機進行處理,從而減輕單片機系統的負擔。由于單片機與上位機進行通信時接口電平不同,因此需要進行接口轉化,這里采用MAX232芯片來實現接口電平的轉化。
4 通信協議的設計
單片機和PC機端軟件進行通信,就必須要遵守一定的通信規(guī)則,比如,MCU主動發(fā)送初始化成功代碼到PC端,PC端發(fā)送一個特定的代碼說明將要向MCU發(fā)送數據了,MCU做好接收的準備.
RS232通信速率最高支持19200bit/s.本軟件采用9600bit/s通信速率。所以通信協議要盡可能短小,以提高通信效率。
因為LCM只能顯示192個英文字符及標點符號。所以握手信號不能采用此已知的字符,并且要保證握手信號盡可能地短,所以使用十六進制的值來表示。通信協議的定義如表2所示:
表2 通訊協議
握手信號(通信協議) | |
字節(jié)碼(十六進制) | 含義 |
0xff | PC向MCU發(fā)送LCM 顯示信息 |
0xfe | PC發(fā)送LCM信息結束 |
0xfd | PC請求MCU發(fā)送LCM顯示信息到PC |
5系統軟件設計
系統軟件設計部分包括單片機端和PC端兩部分。單片機端主要是通過串口接收來自上位機的信息,然后將得到的信息在LCM中顯示。PC端軟件部分主要通過編寫圖形界面,來實現對用戶對整個系統的操控。單片機端和軟件端的主流程如圖3所示:
圖3 單片機端和PC端軟件操作流程圖
5.1單片機端軟件設計
單片機端軟件采用C51編寫(類C代碼),使用Keil uVision集成開發(fā)環(huán)境。單片機端主要完成單片機的初始化、LCM的顯示、串口通信。
單片機的初始化的主要是單片機的串口中斷打開和LCM的初始化顯示。要設置下列寄存器的值:IE,EA,ES,SCON,PCON, TCON等。
LCM的顯示主要完成控制LCM的顯示內容和方式,及接收和發(fā)送信息給PC機,并且在顯示時必須要先讀取其忙狀態(tài)標記,以判斷LCM是否可以接受數據。
單片機部分的串口通信模塊只要完成單片機與上位機的通信,從而將系統所需的信息傳送給上位機進行處理。由于AT89S52單片機具有片內的 UART,因此實現串口通信相當容易,只需要設置適當的寄存器就可以使串口工作起來。串口通信有循環(huán)(查詢)和中斷兩種方式。就使用效率而言,中斷方式比查詢方式節(jié)約CPU資源。所以此單片機的串口通訊采用中斷方式接受、發(fā)送數據。
5.2 PC端軟件設計
PC端軟件主要負責提供一個方便的用戶界面以便發(fā)送和接收,并且處理串口信息。此軟件運行后,要使用主線程初始化用戶界面,同時啟動一個后臺線程負責一直監(jiān)視用戶選擇的串口,接受單片機發(fā)送來的信息,并及時地顯示出來。當用戶輸入要發(fā)送的字符,點擊發(fā)送時,能夠及時的向串口發(fā)送數據,另外,一個完整的軟件,幫助也是必不可少的,這樣方便用戶使用軟件。
歸納出系統需要的類對象:用戶界面類MainFrame,串口類PortControl,串口寫數據類SerialWriter,串口讀數據類SerialReader。
PC端在進行串口通信編程時,必須在使用之前首先向操作系統提出資源申請要求(打開串口),然后對端口進行參數配置,之后才可以同串口進行數據交換并完成數據從串口的發(fā)送與接收。最后,在通信完成時釋放資源(關閉串口)。創(chuàng)建串口類PortControl,負責串口的列舉,數據發(fā)送和數據接收。
6 總結
本文的創(chuàng)新點在于設計的串口通信軟件采用JAVA語言編寫,,成功的解決了因為串口屬于系統底層資源,大多與系統緊密結合,要想開發(fā)跨平臺的軟件很難實現的問題,通過為不同的系統定制不同的JAVA VM并向上提供統一的接口;其次本設計選用1602系列液晶點陣字符模塊,這種點陣字符模塊本身具有字符發(fā)生器,顯示容量大,功能豐富;最后通過編程上位機軟件界面,方便了對LCM的控制,從而避免了因改變LCM顯示內容而改變源代碼的功能。該項目實施一年以來,創(chuàng)造經濟效益68多萬元。
參考文獻
[1]唐俊,許雷,張群瞻,單片機原理與應用 ,冶金工業(yè)出版社,2003
[2]趙亮,候國銳 編著,單片機C語言編程與實例 ,人民郵電出版社 2003-7
[3]胡凱,張穎超.生化分析儀的設計及與PC機的通信[J].微計算機信息.2006,22(4-1):208-209
[4]馬鴻文.基于AT89C52單片機的自動存取柜的設計與實現[J].微計算機信息,2006,22(1-2):101-103.
數字通信相關文章:數字通信原理
通信相關文章:通信原理
評論