您当前的位置:五五电子网电子知识电器控制触摸技术基于MSP430单片机的微功耗中文人机界面设计 正文
基于MSP430单片机的微功耗中文人机界面设计

基于MSP430单片机的微功耗中文人机界面设计

点击数:7999 次   录入时间:03-04 11:36:41   整理:http://www.55dianzi.com   触摸技术

    对液晶显示模块还需着重考虑其背光类型,不同的背光类型消耗电流大不相同。一般可选的背光类型有LED(发光二极管)、EL(电致发光灯)以及CCFL型(冷阴极灯管)。EL是一种面发光的冷光源,在结构上可以做得很大很薄,虽然亮度较低,但发光非常均匀而且无光斑,尤其是功耗很低。缺点是需要一个高压交流电压来驱动,故需要一个专门的电压变换电路(如IMP803)。CCFL照明面积更大,适用于需要大面积液晶显示界面的仪器或设备中。 

三、键盘接口 

    MSP430F149的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。 

    由于一个SED1520显示控制器能控制80×16点阵液晶的显示,其显示RAM共16行,分2页,每页8行。连续16列相邻2页的32字节显示RAM就可以控制一个汉字的显示区域(如图5)。对这些显示RAM赋以相应值就可以显示出一个汉字。 


 

点击看大图


 

图4 标准汉字字模排列形式    图5 SED1520汉字字模排列形式

    由图4和图5所示可见,SED1520图形点阵液晶显示控制器汉字字模的排列顺序和方式与标准汉字字模完全不同。液晶字模数据可以通过对标准字模数据进行位运算后得到。 

    实际编程中,具体汉字的液晶字模数据应存放在MSP430F149单片机的FLASH存储器中。 

    2、液晶显示器初始化流程 
    
    在液晶显示信息之前,必须先对液晶进行初始化。 
    
    初始化的流程如下: 

    需注意,MG-12232模块内虽然一片SED1520控制器实际控制区域为61列,但清除显示RAM时,仍应按80个RAM单元清除。 

    3、部分程序实例 

    程序是在MSP430单片机的开发平台IAR Embedded Workbench下采用汇编语言编写,仿真机采用了TI公司的MSP-FET430P410。 

    由于本系统中选用了MSP430F149单片机,对源程序编译前需对IAR Embeded WorkBench平台进行以下设置: 

    A. 点击Project菜单下的Options…命令进入设置窗口,对左边Category框内的"XLINK"选项下的"Include"页面进行设置,把"XCL file name"框的内容设置为"C:\Program Files\IAR Systems\ew23\430\icc430\MSP430F149A.xcl"。 

    B. 点击Project菜单下的Options…命令进入设置窗口,对左边Category框内的"C-SPY"选项下的"Setup"页面进行设置,把"Chip Description"框的内容设置为"C:\Program Files\IAR Systems\ew23\430\cw430\MSP430F149.ddf"。 

    以下给出了一些常量定义和发送命令字子程序(SEND_COM)、发送数据子程序(SEND_DATA)及液晶状态查询子程序(LCD_STE)的源代码。 

#include

"MSP430x14x.h" 
;程序在液晶上显示"汉字液晶"。 
;————————-定义LCD的引脚 
LCD_RST
EQU
04H

;P4.2 
LCD_E1

EQU
40H

;P4.6 
LCD_E2

EQU
20H

;P4.5 
LCD_RW

EQU
10H

;P4.4 
LCD_A0

EQU
08H

;P4.3 
;——————————定义LCD使用的数据寄存器 
LCD_PAGE
EQU
0200h

;定义显示页面 
LCD_ORDER
EQU
0201h

;暂存液晶控制指令 
LCD_DATA
EQU
0202h

;暂存液晶数据 
LCD_CNT
EQU
0203h

;液晶计数存储器 
LCD_ROW
EQU
0204h

;存放列地址数据 
LCD_LINE
EQU
0205h

;存放行地址数据 
LCD_CHAR
EQU
0206h

;存放当前字符数据的首地址 
LCD_BYTECNT EQU
0207h

;存放要显示的字节数 
LCD_STATUS
EQU
0208h

;存放液晶当前状态的数据 
SEND_COM
;发送命令字子程序,以LCD_ORDER为入口参数 

BIS.B
#LCD_E1,&P4OUT

;SET E1=1 ,使能CHIP1 

CALL
#LCD_STE 

BIC.B
#LCD_A0,&P4OUT

;A0=0,SEND OUT INSTRUCTION 

BIC.B
#LCD_RW,&P4OUT

;R/W=0,WRITABLE 

BIS.B
#0FFH,&P5DIR

;SET P5 PINS OUTPUT 

MOV.B
LCD_ORDER,&P5OUT

;SEND ORDER BYTE TO LCD 

BIC.B
#LCD_E1,&P4OUT

;SET E1=0 

RET 
;发送数据子程序,以LCD_DATA为入口参数 
SEND_DATA
BIS.B
#LCD_E1,&P4OUT

;SET E1=1 

CALL
#LCD_STE 

BIS.B
#LCD_A0,&P4OUT

;A0=1,SEND OUT DATA 

BIC.B
#LCD_RW,&P4OUT

;R/W=0,WRITABLE 

BIS.B
#0FFH,&P5DIR

;SET P5 PINS OUTPUT 

MOV.B
LCD_DATA,&P5OUT

;SEND DATA BYTE TO LCD 

BIC.B
#LCD_E1,&P4OUT

;SET E1=0 

RET 
;读液晶当前状态的子程序LCD_STE 
LCD_STE
BIC.B
#LCD_A0,&P4OUT

;A0=0,SEND OUTINSTRUCTION 

BIS.B #LCD_RW,&P4OUT

;R/W=1,READABLE 

BIC.B
#0FFH,&P5DIR

;SET P5 PINS INPUT 
STE_AGN
MOV.B
&P5IN,LCD_STATUS

上一页  [1] [2] 


本文关键字:单片机  中文  人机界面  触摸技术电器控制 - 触摸技术