新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 設計基于MSP430單片機的微功耗中文人機界面

        設計基于MSP430單片機的微功耗中文人機界面

        作者: 時間:2012-02-17 來源:網絡 收藏

        三、

        F149的P1、P2口除了支持輸入、輸出以外,還支持硬件中斷。P1、P2口的8個引腳都有各自的控制寄存器,每個引腳可以單獨控制,并且每個引腳都可以作為中斷源,每一引腳都可以單獨選擇中斷觸發沿,單獨允許中斷。P1、P2口各使用一個中斷向量,P1.0~P1.7產生同一個中斷,P2.0~P2.7也產生同一個中斷。P1、P2口的這種結構非常適合實現基于中斷的鍵盤輸入響應程序。

        本系統中使用2×2的行列式鍵盤。鍵盤程序采用行掃描法。即P1.0、P1.1接兩根列線,列線定義為輸出口,P1.2、P1.3接兩根行線,行線定義為輸入口。兩根行線需接10K上拉電阻。

        基于對系統低功耗要求的考慮,鍵盤輸入響應程序應設計為中斷方式運行的。即有鍵按下時,產生中斷把MCU從休眠狀態喚醒,并啟動定時 12ms的定時器,隨后MCU又進入休眠狀態。當定時器產生中斷時再次將MCU從休眠狀態喚醒,此時掃描鍵盤,若有鍵按下,則計算出鍵值,并執行該鍵值對應的功能程序。執行完該程序后,MCU再次進入休眠狀態。

        四、漢字顯示的原理與部分程序實例

        1、圖形點陣的漢字字模

        與在DOS中顯示漢字不同的是,圖形點陣并不是簡單地用畫點的方式來描出漢字。直接從中文系統漢字字庫中提取的漢字字模并不能直接在上顯示,通常都必須經過格式上的調整和轉換。標準16點陣漢字(如希望漢字的HZK16)字模數據的排列形式如圖4。

        由于一個顯示控制器能控制80×16點陣液晶的顯示,其顯示RAM共16行,分2頁,每頁8行。連續16列相鄰2頁的32字節顯示RAM就可以控制一個漢字的顯示區域(如圖5)。對這些顯示RAM賦以相應值就可以顯示出一個漢字。

        設計基于MSP430單片機的微功耗中文人機界面
        圖4 標準漢字字模排列形式圖5 漢字字模排列形式

        由圖4和圖5所示可見,圖形點陣液晶顯示控制器漢字字模的排列順序和方式與標準漢字字模完全不同。液晶字模數據可以通過對標準字模數據進行位運算后得到。

        實際編程中,具體漢字的液晶字模數據應存放在F149單片機的FLASH存儲器中。

        2、液晶顯示器初始化流程

        在液晶顯示信息之前,必須先對液晶進行初始化。

        初始化的流程如下:

        設計基于MSP430單片機的微功耗中文人機界面

        需注意,MG-12232模塊內雖然一片SED1520控制器實際控制區域為61列,但清除顯示RAM時,仍應按80個RAM單元清除。

        3、部分程序實例

        程序是在單片機的開發平臺IAR Embedded Workbench下采用匯編語言編寫,仿真機采用了TI公司的MSP-FET430P410。

        由于本系統中選用了MSP430F149單片機,對源程序編譯前需對IAR Embeded WorkBench平臺進行以下設置:

        A. 點擊Project菜單下的Options…命令進入設置窗口,對左邊Category框內的"XLINK"選項下的"Include"頁面進行設置,把 "XCL file name"框的內容設置為"C:Program FilesIAR Systemsew23430icc430msp430F149A.xcl"。

        B. 點擊Project菜單下的Options…命令進入設置窗口,對左邊Category框內的"C-SPY"選項下的"Setup"頁面進行設置,把 "Chip Description"框的內容設置為"C:Program FilesIAR Systemsew23430cw430msp430F149.ddf"。

        以下給出了一些常量定義和發送命令字子程序(SEND_COM)、發送數據子程序(SEND_DATA)及液晶狀態查詢子程序(LCD_STE)的源代碼。

        #include"msp430x14x.h"
        ;程序在液晶上顯示"漢字液晶"。
        ;---------定義LCD的引腳
        LCD_RSTEQU04H;P4.2
        LCD_E1EQU40H;P4.6
        LCD_E2EQU20H;P4.5
        LCD_RWEQU10H;P4.4
        LCD_A0EQU08H;P4.3
        ;----------定義LCD使用的數據寄存器
        LCD_PAGEEQU0200h;定義顯示頁面
        LCD_ORDEREQU0201h;暫存液晶控制指令
        LCD_DATAEQU0202h;暫存液晶數據
        LCD_CNTEQU0203h;液晶計數存儲器
        LCD_ROWEQU0204h;存放列地址數據
        LCD_LINEEQU0205h;存放行地址數據
        LCD_CHAREQU0206h;存放當前字符數據的首地址
        LCD_BYTECNTEQU0207h;存放要顯示的字節數
        LCD_STATUSEQU0208h;存放液晶當前狀態的數據
        SEND_COM;發送命令字子程序,以LCD_ORDER為入口參數
        BIS.B#LCD_E1,P4OUT;SETE1=1,使能CHIP1
        CALL#LCD_STE
        BIC.B#LCD_A0,P4OUT;A0=0,SENDOUTINSTRUCTION
        BIC.B#LCD_RW,P4OUT;R/W=0,WRITABLE
        BIS.B#0FFH,P5DIR;SETP5PINSOUTPUT
        MOV.BLCD_ORDER,P5OUT;SENDORDERBYTETOLCD
        BIC.B#LCD_E1,P4OUT;SETE1=0
        RET
        ;發送數據子程序,以LCD_DATA為入口參數
        SEND_DATABIS.B#LCD_E1,P4OUT;SETE1=1
        CALL#LCD_STE
        BIS.B#LCD_A0,P4OUT;A0=1,SENDOUTDATA
        BIC.B#LCD_RW,P4OUT;R/W=0,WRITABLE
        BIS.B#0FFH,P5DIR;SETP5PINSOUTPUT
        MOV.BLCD_DATA,P5OUT;SENDDATABYTETOLCD
        BIC.B#LCD_E1,P4OUT;SETE1=0
        RET
        ;讀液晶當前狀態的子程序LCD_STE
        LCD_STEBIC.B#LCD_A0,P4OUT;A0=0,SENDOUTINSTRUCTION
        BIS.B#LCD_RW,P4OUT;R/W=1,READABLE
        BIC.B#0FFH,P5DIR;SETP5PINSINPUT
        STE_AGNMOV.BP5IN,LCD_STATUS;GETSTATUSDATAFROMLCD
        BIT.B#80H,LCD_STATUS;如狀態存儲器第7位為1,忙,則等待
        JCSTE_AGN
        RET

        五、結束語

        本系統利用MSP430F149單片機、MG-12232圖形點陣液晶模塊和行列式構建了基于3V電平的低電壓、微功耗的中文。實際使用中,此消耗電流不足1mA,這種設計方案取得了很好的微功耗效果。

        參考文獻
        1. MSP430系列FLASH型超低功耗16位單片機,胡大可,北京航空航天大學出版社,2001
        2. MSP430x1xx Family User's Guide, 2000
        3. MSP430x13x,MSP430x14x Data sheet, 2000


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 凤城市| 开化县| 大名县| 尉犁县| 上饶市| 论坛| 阳朔县| 大港区| 汶上县| 裕民县| 图片| 通州区| 武邑县| 黄骅市| 台前县| 上饶县| 清水河县| 嘉定区| 二连浩特市| 长岭县| 股票| 陇南市| 武汉市| 阿尔山市| 灵石县| 桂平市| 绥芬河市| 右玉县| 新乡县| 吉林省| 张掖市| 余江县| 海原县| 积石山| 临颍县| 武鸣县| 丹寨县| 宁夏| 壤塘县| 洛隆县| 同德县|