施 凱,徐培鳳,黃文新,陳建鋒
(1.江蘇大學(xué)電氣信息工程學(xué)院,江蘇鎮(zhèn)江 212013)
(2.南京航空航天大學(xué)自動化學(xué)院,江蘇南京 210016)
隨著工控技術(shù)的發(fā)展,對具有顯示內(nèi)容豐富和操作簡單可靠的人機界面的需求越發(fā)迫切。而LCD以其微功耗、無輻射和顯示清晰等優(yōu)點,在工業(yè)控制人機界面上的應(yīng)用已越來越廣泛[1-2]。
本文設(shè)計的LCD人機界面方案以飛思卡爾公司的MC9S08GT60型單片機作為主控芯片,結(jié)合點陣液晶模塊CA320340B,通過與控制系統(tǒng)MCU的串口通訊實現(xiàn)監(jiān)控參數(shù)的獲取及發(fā)送,了解和學(xué)習(xí)當前主流點陣液晶模塊的工作及實現(xiàn)。該設(shè)計對于學(xué)生的課程教學(xué)實踐與課外科技活動、電子設(shè)計競賽以及將來就業(yè)都有幫助。
LCD人機界面由控制部分、通訊部分和顯示部分三部分構(gòu)成,其硬件連接結(jié)構(gòu)框圖如圖1所示。其中最主要的是控制部分,MC9S08GT60是飛思卡爾公司的一款44引腳QFP封裝的八位單片機,總共可提供36個I/O口,具備4kRAM和60kFlash存儲,無論是對于程序的讀寫還是數(shù)據(jù)的存儲都很足夠,滿足該液晶顯示系統(tǒng)的控制要求,且其具備BDM后臺調(diào)試電路。通過BDM接口,實現(xiàn)了在線編程及動態(tài)調(diào)試[3-4]。
圖1 LCD人機界面硬件連接結(jié)構(gòu)框圖
通訊部分采用簡單有效的SCI串口通訊,使用單片機SCI接口與控制系統(tǒng)DSP微處理器交換需要監(jiān)控的系統(tǒng)參數(shù)。
顯示部分為帶有RA8835圖形顯示控制芯片的點陣液晶屏。該屏外擴32K顯示RAM,具有強大的作圖功能,支持文本顯示、圖形顯示以及圖形和文本混合顯示。
通過電路設(shè)計,將通訊接口、液晶控制器以及單片機控制板整合為一個液晶顯示的人機界面,實現(xiàn)系統(tǒng)所需功能。
單片機控制板和液晶屏之間可以通過控制口WR(寫)、RD(讀)、RS(片選)、CD(指令數(shù)據(jù)寄存器選擇)以及DB0-DB7八位數(shù)據(jù)口相連。通過編寫程序,單片機發(fā)出高低電平信號控制寄存器的選擇、讀寫口的開閉以及數(shù)據(jù)或指令的傳輸。在片選選定后,選取指令寄存器并打開寫控制口,寫入的八位數(shù)據(jù)會被當作指令送入液晶控制器中,此時控制器打開相應(yīng)的功能,選取數(shù)據(jù)寄存器及寫控制口便可從數(shù)據(jù)口送入對應(yīng)指令的數(shù)據(jù),控制器便會依據(jù)上一步的指令進行處理送入的數(shù)據(jù),從而實現(xiàn)液晶屏上諸如光標的顯示和移動,字符和圖形顯示等功能。薄膜開關(guān)功能是LCD顯示人機界面系統(tǒng)運行工作的重要環(huán)節(jié),在開關(guān)的控制下,可以實現(xiàn)參數(shù)監(jiān)測面板的顯示、參數(shù)設(shè)置面板的切換及參數(shù)的設(shè)置和返回等。
在對數(shù)據(jù)處理成顯示圖像的過程中,分為文本顯示和圖形顯示兩種方式:當選取文本顯示時,需要在存儲區(qū)中建立字符庫,在訪問顯示RAM區(qū)中的每個字節(jié)的數(shù)據(jù)都認為是字符代碼,控制器經(jīng)該代碼確定字符庫中字符的位置,然后將相應(yīng)的字模數(shù)據(jù)送至液晶顯示屏模塊上;當選取圖形顯示時,RAM區(qū)專用于圖形方式顯示,在該RAM區(qū)中每個字節(jié)的數(shù)據(jù)將直接被送到液晶模塊上顯示,每個位的電平狀態(tài)決定顯示屏上一個點的顯示狀態(tài),“1”為亮,“0”為暗,所以圖形顯示RAM的一個字節(jié)對應(yīng)顯示屏上的8×1個點陣。通過指令的選取,可以實現(xiàn)圖形和文本的獨立顯示或者兩者的混合顯示,以達到最好的顯示效果。
LCD人機系統(tǒng)能夠以雙工方式收發(fā)數(shù)據(jù),在通訊的基礎(chǔ)上,結(jié)合了液晶屏字符顯示的功能,將所要監(jiān)測的通訊數(shù)據(jù)編排顯示在液晶屏上。同時,通過對薄膜開關(guān)進行功能設(shè)計,使得液晶顯示系統(tǒng)功能更加豐富,包括參數(shù)顯示,波形顯示,PI參數(shù)調(diào)節(jié)反饋等??傮w而言,該液晶顯示系統(tǒng)能夠符合任何功能要求,使用要求及安裝要求,且雙向數(shù)據(jù)傳輸設(shè)計使操作使用更具人性化特點。
控制點陣液晶的顯示本質(zhì)上就是控制液晶屏上各個點的亮和暗。圖形顯示方式下,液晶屏上每1×8個點依次對應(yīng)于RAM區(qū)中的一個字節(jié)。初始設(shè)定RAM區(qū)的起始地址,光標每移動一位,RAM區(qū)地址則加一,在屏上移動8個像素點,而字節(jié)中的一位對應(yīng)于8個像素點中的一個點。其原理圖如圖2(a)所示。在顯示控制器的處理下,當RAM區(qū)某字節(jié)中位數(shù)據(jù)為“1”時,則對應(yīng)的點為亮,為“0”的時候則為暗。
通過單片機引腳編程使能,將控制指令寫入控制器中以打開相應(yīng)控制功能,在確定寫入漢字的RAM地址之后,寫入相應(yīng)的字模數(shù)據(jù),在控制芯片的處理下,即能在屏上得到相應(yīng)的漢字顯示[5-7]。16×16漢字“天”的顯示如圖2(b)所示。
圖2 點陣液晶系顯示原理圖
在顯示的過程中,控制器會實時接受單片機訪問并及時把單片機發(fā)來的數(shù)據(jù)和指令就位,因此必須注意一個問題:采用中斷為顯示驅(qū)動讀取顯示數(shù)據(jù)的操作,會不可避免的在顯示屏上出現(xiàn)雪花現(xiàn)象。為避免之,RA8835控制器在接口部提供一個狀態(tài)信號——“忙”標志BF,它位于數(shù)據(jù)總線的D6位。在傳送完一行有效顯示數(shù)據(jù)到下一行傳送開始的間歇內(nèi)BF=0,這段時間RA8835將不讀取顯示數(shù)據(jù),此時MCU訪問控制器將不會影響顯示效果。通過對忙標志位進行判斷再執(zhí)行指令可以保證顯示不產(chǎn)生雪花。
對于飛思卡爾單片機MC9S08GT60,其軟件設(shè)計可在專門的PE平臺上進行。該平臺上底層函數(shù)全部打包,軟件設(shè)計時可直接調(diào)用,十分方便。在硬件設(shè)計完好的基礎(chǔ)上,基于液晶顯示的基本原理,以及顯示控制器RA8835的邏輯時序。我們開發(fā)出可靠的能實現(xiàn)系統(tǒng)監(jiān)控顯示與交互功能的單片機C語言程序。軟件設(shè)計主要分為以下幾個部分。
1)SCI串口通訊
這里采用了雙工的串口模式,除了調(diào)整波特率、數(shù)據(jù)位、起始/停止位和校驗位這些最基本的通信參數(shù)以外,還要明確上位機和下位機之間的通信協(xié)議。
本系統(tǒng)規(guī)定了以下的通信協(xié)議:確定好一次收發(fā)的數(shù)據(jù)為10個,當下位機收到0x81時,確認之后的數(shù)據(jù)才予接收,如果不是該數(shù)則重新等待下一個0x81的到來。在上位機發(fā)送之前,對數(shù)據(jù)先做一步處理,即將發(fā)送的數(shù)組的最后一位設(shè)定為校驗位該位為前面每一個數(shù)據(jù)之間相互異或的結(jié)果。而下位機在接收時也將每一個數(shù)據(jù)相互異或并保存。當下位機計數(shù)標志達到10后,比較最后一位數(shù)據(jù)和校驗位數(shù)值,若兩者一致,表明接收的數(shù)據(jù)是正確的,否則判斷為錯誤而重新接收。具體的接收和發(fā)送程序流程圖如圖3所示。
圖3 SCI串口通信流程圖
2)字符顯示
首先使用取模軟件將所要顯示的字符進行譯碼,得到字符的點陣數(shù)據(jù),不同的字符格式下字模數(shù)據(jù)不同,對字符的解碼過程需與所編程序的讀寫順序相同。其次,基于顯示控制芯片的時序邏輯,通過調(diào)用子程序,完成對字符數(shù)據(jù)的讀寫操作,實現(xiàn)字符的顯示。
以16×16漢字為例,實現(xiàn)過程如下:用取模軟件按照漢字顯示的順序提取出字模數(shù)據(jù)。設(shè)定光標首地址,并將光標屬性修改為自動向下移動,將字模數(shù)據(jù)分兩部分寫入控制芯片。先判斷忙標志位是否空閑,空閑則寫數(shù)據(jù)。先寫表示漢字左半邊的8×16點陣數(shù)據(jù),即16字節(jié)數(shù)據(jù),寫完后光標地址加一,再寫右半邊8×16個點陣數(shù)據(jù)。如此,一個16×16點陣漢字的字模數(shù)據(jù)被完全寫入,并在控制器的顯示驅(qū)動下在液晶屏的設(shè)定位置上顯示出來。同理,對于8×8、8×16或者24×24點陣的字符顯示過程和上述點陣漢字的顯示過程基本一致。
3)波形顯示
由于在RA8835控制器控制下具有光標地址和RAM區(qū)空間地址相一致的特點,如果單純的將數(shù)據(jù)按照接收的順序依次在屏上顯示的話,光標地址最多只能移動40次。而對應(yīng)一個光標地址的字節(jié)空間如果重復(fù)寫入數(shù)據(jù)的話,前面的數(shù)據(jù)將會擦除,因此對數(shù)據(jù)處理時必須對字節(jié)的每個位進行操作。這樣處理的復(fù)雜度和時間長度均增加不少,所以必須找到合理的處理方式。
本系統(tǒng)使用320*240點陣液晶,數(shù)據(jù)在數(shù)組中的位置由顯示屏行地址表示,而縱向位置由數(shù)據(jù)大小確定,對完成位置確定的數(shù)據(jù)可以點的方式顯示。在液晶屏上顯示時,每個數(shù)據(jù)的大小通過一定比例關(guān)系轉(zhuǎn)化為液晶屏縱向的高度,而橫向坐標的確定則是由數(shù)據(jù)在數(shù)組中的位數(shù)決定。光標地址即RAM區(qū)地址表示為0X28×Y+X,每行顯示40個字節(jié)的數(shù)據(jù),Y表示行數(shù),X表示的是在第(Y+1)行中的位置。
現(xiàn)以顯示數(shù)組中的第60個數(shù)100為例。如果在液晶上顯示的高度是與像素行數(shù)一比一對應(yīng)的話,則Y值上應(yīng)該為Y=240-100。而在橫向位置的確定上,由于60/8=7余4,對應(yīng)寫入的RAM區(qū)行地址X為5,其中,要點亮的是字節(jié)內(nèi)的第四個點,則在字節(jié)內(nèi)表示為0X80,相應(yīng)的在地址中寫入該字節(jié)數(shù)據(jù),便實現(xiàn)了對第60個數(shù)以點的方式顯示。采用這種方式進行數(shù)據(jù)到波形的轉(zhuǎn)化,效果達到了設(shè)計的要求,不過在細節(jié)上的處理還要有所注意。比如對于相連的大小相等的數(shù),在同一個字節(jié)中寫入時,由于地址一致只是字節(jié)內(nèi)的點不同,后面的數(shù)據(jù)會將前一個數(shù)擦除而少了一個點。必須將這些特殊情況另外表示出來,保證波形的連續(xù)性。具體波形顯示流程如圖4所示。
圖4 波形顯示流程圖
本文介紹的基于飛思卡爾單片機MC9S08GT60控制的LCD人機界面方案,實現(xiàn)了既定的數(shù)據(jù)通信、字符顯示以及波形監(jiān)測等功能。該方案有助于學(xué)生熟練掌握基于SCI通訊的人機界面設(shè)計。該培訓(xùn)科目也可為相關(guān)課程設(shè)計內(nèi)容提供參考。
[1]夏莉英,古玉年.基于單片機的全屏幕點陣液晶顯示器的應(yīng)用[J].太原:山西電子技術(shù),2007,5:45 -48
[2]殷伯華,方光榮.基于單片機彩色液晶實時顯示系統(tǒng)設(shè)計[J],南京:工業(yè)控制計算機,2004,17(08):41 -42
[3]孫同景.Freescale 9S12十六位單片機原理及嵌入式開發(fā)技術(shù)[M].北京:機械工業(yè)出版社,2008.7
[4]李晶皎,劉天華,丁言鎂編著.液晶顯示器的C語言程序設(shè)計:Freescale 8位微控制器[M].北京:科學(xué)出版社,2005.4
[5]楊應(yīng)平,石城,蔣愛湘,李振華.圖形點陣液晶顯示模塊與51系列單片機的接口設(shè)計[J].北京:現(xiàn)代顯示,2006,63:41-45
[6]張國友,孫萍.圖形點陣液晶顯示器與單片機接口及應(yīng)用[J].蕪湖:安徽機電學(xué)院學(xué)報,2001,16(12):37 -40
[7]李子健.基于51單片機的漢字LCD智能顯示模塊設(shè)計[J].西安:電子元器件應(yīng)用,2006.9:76-77