基于MSP430F149單片機(jī)的人機(jī)界面設(shè)計(jì)
近年來(lái),隨著電子技術(shù)和集成電路制造工藝的飛速發(fā)展,越來(lái)越多的領(lǐng)域應(yīng)用到以單片機(jī)為控制核心的現(xiàn)代智能儀器設(shè)備,如果在這些以單片機(jī)為核心的控制系統(tǒng)中配上人機(jī)交互界面,通過(guò)液晶顯示器和按鍵配合操作可更方便有效地完成各種功能選擇、參數(shù)設(shè)置和分析結(jié)果顯示,采用漢字顯示菜單,界面友好且直觀。隨著液晶顯示技術(shù)的進(jìn)步,高質(zhì)量的點(diǎn)陣液晶顯示模塊由于具有顯示信息豐富、功耗低、體積小、質(zhì)量小、無(wú)輻射以及使用壽命長(zhǎng)等優(yōu)點(diǎn)被日趨廣泛地應(yīng)用于各種嵌入式系統(tǒng)中,同時(shí)低功耗特性也貫穿于中文人機(jī)界面的設(shè)計(jì)始終?,F(xiàn)以電力系統(tǒng)配電變壓器監(jiān)測(cè)終端(TTU)的人機(jī)交互部分為例,介紹一種使用OCM12864-3型圖形點(diǎn)陣液晶顯示模塊實(shí)現(xiàn)中文窗口菜單界面的方法。 1 系統(tǒng)的硬件結(jié)構(gòu)
1.1 MSP430F14X微控制器簡(jiǎn)介
MSP430F14X微控制器是德州儀器公司新開(kāi)發(fā)的一類具16位總線的單片機(jī),它基于真正的正交16位RISCCPU內(nèi)核,具有16個(gè)可單周期全尋址的16位寄存器,僅27條的精簡(jiǎn)指令以及7種均采用雙重取數(shù)據(jù)技術(shù)(DDFT)的一致性尋址方式。DDFT技術(shù)利用每個(gè)時(shí)鐘脈沖對(duì)存儲(chǔ)器進(jìn)行兩次數(shù)據(jù)存取操作,從而不再需要復(fù)雜的時(shí)鐘乘法和指令流水線方案。MSP430F14X系列MCU具有豐富的片上外圍模塊,片內(nèi)包括有精密硬件乘法器、多達(dá)60KB的FLASH,2KB的RAM、1個(gè)看門狗、6個(gè)P口(P1和P2還具有中斷功能)、12位A/D轉(zhuǎn)換器、2個(gè)16位定時(shí)器、高精度比較器、高速的USART通信端口,1個(gè)DCO內(nèi)部振蕩器和2個(gè)外部時(shí)鐘等常用資源,可實(shí)現(xiàn)對(duì)液晶顯示器的檢測(cè)、解調(diào)和顯示。與現(xiàn)代程序設(shè)計(jì)技術(shù)以及高級(jí)語(yǔ)言(如C語(yǔ)言)結(jié)合使用,使得MSP430的體系結(jié)構(gòu)更加高效,從而在工程技術(shù),特別是PDA產(chǎn)品開(kāi)發(fā)中得以廣泛應(yīng)用 [1]。
1.2 OCM12864-3型液晶顯示模塊簡(jiǎn)介
OCM12864是一種128×64點(diǎn)陣(EL背光)的液晶顯示器。它由兩片帶控制器的列驅(qū)動(dòng)電路KS0108和一片行驅(qū)動(dòng)電路KS0107組成主要硬件電路,KS0108將控制顯示屏分為左右半屏,通過(guò)CS1,CS2選擇。整個(gè)屏從上到下64行分為8頁(yè),每列8行頁(yè)地址范圍為B8H-BFH,列地址范圍為40H-7FH,數(shù)據(jù)為縱向讀寫(xiě),即每頁(yè)的第一行對(duì)應(yīng)D0,第八行對(duì)應(yīng)D7。每個(gè)驅(qū)動(dòng)芯片帶有64×64位(512 B)的RAM緩沖區(qū),其中存儲(chǔ)的數(shù)據(jù)即為被顯示內(nèi)容的點(diǎn)陣信息。通過(guò)選擇對(duì)應(yīng)的RAM 頁(yè)地址和列地址,微控制器可以訪問(wèn)全部RAM 字節(jié)。顯示RAM 的每一位對(duì)應(yīng)顯示屏上的一個(gè)點(diǎn)。顯示的實(shí)現(xiàn),就是顯示RAM 內(nèi)容中相應(yīng)位為1,該點(diǎn)陣亮,相應(yīng)位為0,該點(diǎn)陣無(wú)顯示。對(duì)存儲(chǔ)器的讀取是從頭至尾的,但在屏幕上顯示的位置是可以設(shè)置的,通過(guò)對(duì)顯示起始行的設(shè)定來(lái)設(shè)定顯示位置[2]。
1.3 硬件接口電路
由于該款液晶顯示屏將接口電路直接引出,因此對(duì)于用戶而言,整體設(shè)計(jì)大大簡(jiǎn)化,只需考慮單片機(jī)與接口電路間的連接即可。MSP430F149與OCM12864 的線路連接如圖1所示。該款液晶顯示模塊有13條信號(hào)線:(1)DB0一DB7:數(shù)據(jù)總線。(2)CS:片選信號(hào),低電平有效。當(dāng)單片機(jī)訪問(wèn)OCM-12864時(shí),將其置低。(3)RS:數(shù)據(jù)/指令選擇信號(hào),高電平:數(shù)據(jù) D0-D7將送入顯示RAM;低電平:數(shù)據(jù) D0-D7將送入指令寄存器執(zhí)行。(4)R/W:讀 寫(xiě)選擇信號(hào),高電平:讀數(shù)據(jù);低電平:寫(xiě)數(shù)據(jù)。 (5)E:讀寫(xiě)使能信號(hào),高電平有效,下降沿鎖定數(shù)據(jù)。(6)RET:復(fù)位信號(hào),低電平有效[3]。
由于MSP430的I/O口都是復(fù)用端口,因此必須將用到的引腳設(shè)為輸入/輸出口。此外,MSP430是3.3供電,而LCD是5V驅(qū)動(dòng)的,我們可以在MSP430的輸出口對(duì)地接3.6V的嵌位二極管,在保證MSP的端口電壓不超過(guò)極限值的前提下,實(shí)現(xiàn)MSP430到LCD的電平轉(zhuǎn)換. 2 系統(tǒng)的軟件設(shè)計(jì)
2.1基本驅(qū)動(dòng)函數(shù)編寫(xiě)首先使用C語(yǔ)言在頭文件中對(duì)OCM12864控制線進(jìn)行定義,然后編寫(xiě)LCD驅(qū)動(dòng)函數(shù),這些函數(shù)包括模塊初始化、寫(xiě)指令代碼、寫(xiě)顯示數(shù)據(jù)、讀顯示數(shù)據(jù)、寫(xiě)菜單項(xiàng)、清屏、清頁(yè)等函數(shù)。
2.2 LCD顯示菜單設(shè)計(jì)
2.2.1菜單界面設(shè)計(jì) 本系統(tǒng)應(yīng)用于無(wú)功補(bǔ)償控制器,要求顯示電網(wǎng)三相電壓、電流值,無(wú)功功率、有功功率、無(wú)功因數(shù),20次的電壓諧波含量,無(wú)功補(bǔ)償控制方式自動(dòng)/手動(dòng)選擇,參數(shù)設(shè)置等。針對(duì)顯示要求把整個(gè)系統(tǒng)設(shè)計(jì)成多級(jí)屏幕(窗口),又設(shè)計(jì)成多級(jí)主菜單,類似的功能放在一個(gè)主菜單菜單項(xiàng)下構(gòu)成子菜單目錄。如果菜單目錄項(xiàng)過(guò)多,多屏顯示此菜單目錄。通過(guò)分級(jí),使操作人員能很直觀快速找到自己當(dāng)前需要的菜單項(xiàng),液晶屏菜單界面設(shè)置如圖2所示。
2.2.2建表
字符或數(shù)字在點(diǎn)陣液晶中的顯示是通過(guò)寫(xiě)相應(yīng)的內(nèi)碼(1點(diǎn)亮,0滅)實(shí)現(xiàn)的,結(jié)合整個(gè)菜單設(shè)計(jì),需要顯示的文字并不多,可以先做好碼表,把用到的漢字對(duì)應(yīng)的內(nèi)碼保存在一個(gè)名為HZ_TAB的表中,每個(gè)16xl6點(diǎn)陣的字符需要32個(gè)byte表示;把要用到的數(shù)字0~9和字母對(duì)應(yīng)的16x8點(diǎn)陣內(nèi)碼保存在一個(gè)名NUM_JAB的表中,每個(gè)需要16個(gè)byte表示;把圖片保存在PIC_TAB表中,需要byte數(shù)根據(jù)大小而定。16x16點(diǎn)陣漢字和16x8點(diǎn)陣數(shù)字、字母和任意大小黑白圖片字模數(shù)據(jù)庫(kù)可由專門的字模提取軟件提取字模建立。
評(píng)論