0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MSP430F14X和OCM12864-3實(shí)現(xiàn)中文窗口菜單界面的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:微計(jì)算機(jī)信息 ? 作者:費(fèi)文坤,陶維青 ? 2021-03-20 09:12 ? 次閱讀

引言

近年來(lái),隨著電子技術(shù)和集成電路制造工藝的飛速發(fā)展,越來(lái)越多的領(lǐng)域應(yīng)用到以單片機(jī)為控制核心的現(xiàn)代智能儀器設(shè)備,如果在這些以單片機(jī)為核心的控制系統(tǒng)中配上人機(jī)交互界面,通過(guò)液晶顯示器和按鍵配合操作可更方便有效地完成各種功能選擇、參數(shù)設(shè)置和分析結(jié)果顯示,采用漢字顯示菜單,界面友好且直觀(guān)。隨著液晶顯示技術(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ā)的一類(lèi)具16位總線(xiàn)的單片機(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í)鐘乘法和指令流水線(xiàn)方案。MSP430F14X系列MCU具有豐富的片上外圍模塊,片內(nèi)包括有精密硬件乘法器、多達(dá)60KB的FLASH,2KB的RAM、1個(gè)看門(mén)狗、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.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è)地址和列地址,微控制器可以訪(fǎng)問(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è)定顯示位置。

1.3 硬件接口電路

由于該款液晶顯示屏將接口電路直接引出,因此對(duì)于用戶(hù)而言,整體設(shè)計(jì)大大簡(jiǎn)化,只需考慮單片機(jī)與接口電路間的連接即可。

MSP430F149與OCM12864 的線(xiàn)路連接如圖1所示。該款液晶顯示模塊有13條信號(hào)線(xiàn):(1)DB0一DB7:數(shù)據(jù)總線(xiàn)。(2)CS:片選信號(hào),低電平有效。當(dāng)單片機(jī)訪(fǎng)問(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),低電平有效。

基于MSP430F14X和OCM12864-3實(shí)現(xiàn)中文窗口菜單界面的設(shè)計(jì)

圖1 人機(jī)界面硬件接口電路

由于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控制線(xiàn)進(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í)主菜單,類(lèi)似的功能放在一個(gè)主菜單菜單項(xiàng)下構(gòu)成子菜單目錄。如果菜單目錄項(xiàng)過(guò)多,多屏顯示此菜單目錄。通過(guò)分級(jí),使操作人員能很直觀(guān)快速找到自己當(dāng)前需要的菜單項(xiàng),液晶屏菜單界面設(shè)置如圖2所示。

圖2 液晶屏菜單界面設(shè)置

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ù)可由專(zhuān)門(mén)的字模提取軟件提取字模建立。

菜單一般由西文字符和中文漢字組合而成,每一條菜單項(xiàng)定義一個(gè)數(shù)組Menu_string,格式如下:{菜單項(xiàng)字符數(shù),第一個(gè)字符在字庫(kù)中的序號(hào),第二個(gè)字符,。..。}。需要注意的是, 在自建西文字庫(kù)NUM_TAB 和小漢字庫(kù)HZ_TAB 時(shí),每個(gè)中西文字符都是各自編號(hào)的。由于中西文顯示調(diào)用同一個(gè)函數(shù),為區(qū)別中西文字符,在菜單數(shù)組編號(hào)時(shí)可以在漢字在HZ_TAB庫(kù)中的編碼前加128(0X80)作為標(biāo)識(shí), LCD在顯示內(nèi)容時(shí),需要判斷編號(hào)的值, 確定當(dāng)前位內(nèi)容是漢字還是西文,然后做調(diào)用相應(yīng)的處理。菜單項(xiàng)的反亮顯示采取的辦法是將顯示內(nèi)容的所有字模數(shù)據(jù)按字節(jié)取反后再進(jìn)行常規(guī)顯示即可。圖3為某一項(xiàng)中西文菜單混合顯示流程,其中m=1表示該位為漢字, m=0表示該位為ASCII字符。

圖3 某一項(xiàng)中兩文菜單混合顯示流程

2.2.3數(shù)據(jù)結(jié)構(gòu)

本系統(tǒng)采用8個(gè)按鈕來(lái)接受用戶(hù)輸入,8個(gè)按鈕為上、下、左、右、回車(chē)、退回、加、減。為方便數(shù)據(jù)顯示和處理。需要首先建立一個(gè)菜單窗口結(jié)構(gòu)體并定義一個(gè)結(jié)構(gòu)變量WinStruct,該結(jié)構(gòu)中共有11個(gè)結(jié)構(gòu)元素,分別是10個(gè)字符型和1個(gè)指針變量,指針變量指向需執(zhí)行函數(shù)。

Typedef struct{

uchar Menulndex; //當(dāng)前菜單索引號(hào)

uchar BackWinlndex;//當(dāng)前窗口的上一窗口索引號(hào)

uchar NextDnlndex;//下一個(gè)菜單索引號(hào),按下“上,下”鍵時(shí)當(dāng)前菜單項(xiàng)上下移動(dòng)

uchar NextUplndex;//或可修改參數(shù)數(shù)值向上下循環(huán)變化

uchar NextLIndex; //下一個(gè)菜單索引號(hào),按下“左,右”鍵時(shí)當(dāng)前菜單項(xiàng)左右移動(dòng)

uchar NextRtlndex;//或在可修改參數(shù)位置上左右移動(dòng)

uchar Key CrState; //按下“回車(chē)”鍵時(shí)用戶(hù)選擇確認(rèn)或參數(shù)輸入確定

uchar KeyBackState; //按下“退回”鍵時(shí)用戶(hù)退出當(dāng)前窗口,返回上一窗口

uchar KeyPlus; //按下“加”鍵,可修改參數(shù)加1;

uchar KeyMinus; //按下“減”鍵,可修改參數(shù)減1;

void( CurrentOperate)();//當(dāng)前狀態(tài)應(yīng)該執(zhí)行的功能操作

}WinStruct;

菜單項(xiàng)在LCD上顯示,通過(guò)建立菜單項(xiàng)結(jié)構(gòu)體,定義一個(gè)結(jié)構(gòu)變量

MenuStruct。如下:

Typedef struct{

uchar Menulndex; //當(dāng)前菜單索引號(hào)

uchar NextWinlndex;//下一窗口索引號(hào)

uchar cursor_page ://菜單項(xiàng)起始頁(yè)位置

uchar cursor_col; //菜單項(xiàng)起始行位置

uchar type ; //菜單項(xiàng)顯示的數(shù)據(jù)類(lèi)型,16x16或16x8點(diǎn)陣等

uchar *data; //指向顯示數(shù)據(jù)區(qū)

uchar dataNum;//需要顯示的數(shù)據(jù)的個(gè)數(shù)

uchar black; //是否反顯菜單項(xiàng)

uchar modify ;//數(shù)據(jù)是否需要修改

} MenuStruct;

2.3 人機(jī)界面設(shè)計(jì)

人機(jī)交互設(shè)計(jì)的重點(diǎn)在于界面的顯示、滾屏、光標(biāo)的管理及參數(shù)的顯示、修改和保存。系統(tǒng)在內(nèi)存中特定區(qū)域開(kāi)辟了1個(gè)LCD顯示緩沖區(qū),將要顯示的整個(gè)窗口的點(diǎn)陣數(shù)據(jù)存放在此區(qū)間。LCD的顯示程序從此區(qū)間中讀取數(shù)據(jù)到LCD點(diǎn)陣數(shù)據(jù)存儲(chǔ)區(qū),借此,LCD顯示程序可管理用戶(hù)交互界面。用戶(hù)可以用8個(gè)按鍵(向上、向下、向左、向右、確定、返回、加、減)在菜單方式下實(shí)現(xiàn)人機(jī)交互。

參數(shù)的輸入、輸出顯示和保存是人機(jī)交互界面設(shè)計(jì)的重要環(huán)節(jié)。

下面以第二級(jí)菜單中的參數(shù)設(shè)置為例,進(jìn)行詳細(xì)介紹。在主菜單下,將光標(biāo)移到“參數(shù)設(shè)置”,按下“確定”鍵,進(jìn)入“參數(shù)設(shè)置”菜單。顯示的內(nèi)容有:設(shè)備參數(shù),投切條件,保護(hù)定值,電容參數(shù),時(shí)鐘校準(zhǔn),通訊參數(shù),等等。

裝置出廠(chǎng)前已經(jīng)對(duì)各參數(shù)進(jìn)行初始化,存儲(chǔ)在二維數(shù)組Array[19][5]中,每個(gè)參數(shù)一行,參數(shù)每一位的值都對(duì)應(yīng)存儲(chǔ)在數(shù)組中的相應(yīng)位置。定義一個(gè)指針P指向Array,表示光標(biāo)的位置,當(dāng)然,進(jìn)入“參數(shù)設(shè)置”菜單時(shí)P=Array[0][0],光標(biāo)在首行的第一個(gè)X的位置,表示選中該參數(shù)位。按下“向上”、“向下”、“向左”、“向右”四個(gè)方向鍵來(lái)移動(dòng)光標(biāo)到待修改的那一位數(shù)字上時(shí),P=Array[ i ][j]則根據(jù)按下的鍵不同而作相應(yīng)的修改,一般如下:向上,i-1;向下,i +1;向左,j-1;向右,j+1。當(dāng)然,首先要對(duì)原來(lái)的i,進(jìn)行判斷。遇到特殊情況要特殊處理。如光標(biāo)原在某行的第一個(gè)參數(shù)位上,j= 0,按下向左的鍵則不改變光標(biāo)。

選定待修改的那一位參數(shù)后,按“修改”鍵進(jìn)行參數(shù)值的修改。過(guò)程如下:讀取光標(biāo)所在的那一位數(shù)字的值,每按一次加鍵,該值加1(在0—9之間循環(huán)),每按一次減鍵,該值減1(在0—9之間循環(huán))。修改完一位后,把改值寫(xiě)入Array[ i ][j],移動(dòng)光標(biāo)繼續(xù)修改其他的參數(shù)。一行參數(shù)修改完,經(jīng)核對(duì)無(wú)誤后按“確定”鍵(每按一次“確定”確認(rèn)一行),新的參數(shù)值被修改存入機(jī)內(nèi)對(duì)應(yīng)的EEPROM 地址中。參數(shù)全部修改完后需要重新開(kāi)機(jī),否則修改無(wú)效。

3 結(jié)束語(yǔ)

本文構(gòu)建了基于MSP430F149、OCM12864圖形點(diǎn)陣液晶模塊和鍵盤(pán)的中文人機(jī)交互界面,實(shí)現(xiàn)了中文菜單顯示及參數(shù)的輸入、顯示、修改和保存等功能,完成了系統(tǒng)所要求的顯示任務(wù)。此方法也同樣適應(yīng)用于ARM7與DSP其他微控制器LCD液晶人機(jī)界面上。

本文創(chuàng)新點(diǎn):充分利用了OCM12864的硬件資源,實(shí)現(xiàn)了友好的人機(jī)界面,并且文中介紹的方法具有非常好的靈活性和良好的可維護(hù)性,程序員可以在需要的時(shí)候很方便地修改菜單和增加子菜單,而不至于影響系統(tǒng)軟件原有的結(jié)構(gòu),而且在此菜單編程方法基礎(chǔ)上進(jìn)行改進(jìn),還可增加滾屏,自動(dòng)翻頁(yè)等功能。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 集成電路
    +關(guān)注

    關(guān)注

    5367

    文章

    11162

    瀏覽量

    358378
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8257

    瀏覽量

    149956
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4400

    瀏覽量

    73732
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于MSP430F149單片機(jī)的人機(jī)界面設(shè)計(jì)

    優(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)
    發(fā)表于 03-08 17:05

    MSP430F13X_14X系列中文數(shù)據(jù)手冊(cè)

    MSP430F13X_14X系列中文數(shù)據(jù)手冊(cè)
    發(fā)表于 11-24 17:00

    msp430f14x pdf

    MSP430-Hxxx-E header board provides easyway for developing and prototyping withMSP430F14x
    發(fā)表于 04-11 10:44 ?50次下載

    MSP430F13x/14x/14x1 Device Err

    MSP430F13x/14x/14x1 Device Erratasheet
    發(fā)表于 11-19 23:27 ?5次下載

    MSP430x13x, MSP430F14x, MSP430F1

    MSP430x13x, MSP430F14x, MSP430F15x, MSP430F16x Code Examples
    發(fā)表于 05-25 10:51 ?8次下載

    msp430x20x系列_C示例

    C 示例_ MSP430x13x, MSP430F14x, MSP430F15x, MSP430F16x.zi,感興趣的可以看看。
    發(fā)表于 07-12 11:54 ?7次下載

    C示例_MSP430x13x,MSP430F14x,MSP430F15x,MSP430F16x.zip

    C 示例_ MSP430x13x MSP430F14x MSP430F15x MSP430F16x
    發(fā)表于 07-12 11:54 ?17次下載

    C示例_MSP430FG43x.zip

    C 示例_ MSP430x13x MSP430F14x MSP430F15x MSP430F16x
    發(fā)表于 07-12 11:54 ?3次下載

    msp430x54x_flashwrite_04

    C 示例_ MSP430x13x MSP430F14x MSP430F15x MSP430F16x.zip
    發(fā)表于 07-12 11:54 ?4次下載

    MSP430F149開(kāi)發(fā)板原理圖.pdf

    C 示例_ MSP430x13x MSP430F14x MSP430F15x MSP430F16x.zip
    發(fā)表于 07-12 11:54 ?43次下載

    基于MSP430F149開(kāi)發(fā)板的C應(yīng)用

    MSP430F149是TI公司推出的MSP430F14X系列單片機(jī)中目前的最高端產(chǎn)品。
    發(fā)表于 09-21 09:34 ?18次下載
    基于<b class='flag-5'>MSP430F</b>149開(kāi)發(fā)板的C應(yīng)用

    MSP430F14X微控制器簡(jiǎn)介及基于單片機(jī)的人機(jī)界面設(shè)計(jì)

    基于MSP430F149的液晶圖形顯示,并在此基礎(chǔ)上實(shí)現(xiàn)簡(jiǎn)單易行的人機(jī)界面設(shè)計(jì)。 由于該款液晶顯示屏將接口電路直接引出,因此對(duì)于用戶(hù)而言,整體設(shè)計(jì)大大簡(jiǎn)化,只需考慮單片機(jī)與接口電路間的連接即可。
    發(fā)表于 12-04 09:39 ?5次下載
    <b class='flag-5'>MSP430F14X</b>微控制器簡(jiǎn)介及基于單片機(jī)的人機(jī)<b class='flag-5'>界面</b>設(shè)計(jì)

    MSP430F47x3,MSP430F47x4 示例代碼

    MSP430F47x3,MSP430F47x4 示例代碼
    發(fā)表于 05-03 10:26 ?16次下載
    <b class='flag-5'>MSP430F47x3</b>,<b class='flag-5'>MSP430F47x</b>4 示例代碼

    MSP430x13x,MSP430F14x,MSP430F15x,MSP430F16x 示例代碼

    MSP430x13x,MSP430F14x,MSP430F15x,MSP430F16x 示例代碼
    發(fā)表于 05-03 10:50 ?19次下載
    <b class='flag-5'>MSP430x13x</b>,<b class='flag-5'>MSP430F14x</b>,<b class='flag-5'>MSP430F15x</b>,<b class='flag-5'>MSP430F16x</b> 示例代碼

    MSP430F14x、MSP430F14x1、MSP430F13x混合信號(hào)微控制器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《MSP430F14x、MSP430F14x1、MSP430F13x混合信號(hào)微控制器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-01 11:39 ?0次下載
    <b class='flag-5'>MSP430F14x</b>、<b class='flag-5'>MSP430F14x</b>1、<b class='flag-5'>MSP430F13x</b>混合信號(hào)微控制器數(shù)據(jù)表