历史上的今天
返回首页

历史上的今天

今天是:2024年09月01日(星期日)

正在发生

2020年09月01日 | 基于MSP430单片机的微功耗中文人机界面设计

2020-09-01 来源:elecfans

在现代便携式智能仪器或手持设备中,中文人机界面成为一种事实上的行业标准。能显示汉字的图形点阵液晶和可输入数字的小键盘已成为智能设备必不可少的组成部分。同时作为便携式设备基本要求的低功耗特性也贯穿于中文人机界面的设计始终。


这种低功耗中文人机交互界面需要设计者在选取MCU和具体元器件上有特殊考虑。微功耗、小体积应作为选择相关器件的首要要求。


设计中,笔者采用MSP430F149单片机作为系统的MCU,通过选择合适的液晶显示模块在3V电平构建了一个低功耗的中文人机界面。此中文人机界面构成了微功耗数据采集系统的重要组成部分。


一、MSP430系列FLASH型单片机的微功耗特点

德州仪器公司(TI)推出的MSP430F14x系列是超低功耗Flash型16位RISC指令集单片机。它采用冯-纽曼结构,RAM、ROM和全部外围模块都位于同一个地址空间内。其具有丰富的片内外围,性价比极高。


MSP430F14x系列是TI的MSP430F1x系列(FLASH存储器型)单片机中功能最强大的子系列。F14x具有更大的程序和数据存储区、更多的外围模块,其片内甚至还包括一个硬件乘法器。同时F14x系列单片机开发工具简便,固化于FLASH存储器内的程序易于在线升级和调试,非常适合于开发消费类便携式电子产品。


MSP430F14x单片机集中体现了现代单片机先进的低功耗设计理念。其设计结构完全以系统低功耗运行为核心。


这种低功耗结构具体体现在以下四点:

(1)高集成度的完全单片化设计。

将很多外围模块集成到了MCU芯片中,增大硬件冗余。内部以低功耗、低电压的原则设计,这样系统不仅功能强、性能可靠、成本降低,而且便于进一步微型化和便携化。

(2)内部电路可选择性工作。

F14x单片机可以通过特殊功能寄存器选择使用不同的功能电路,即依靠软件选择其中不同的外围功能模块,对于不使用的模块使其停止工作,以减少无效功耗。

(3)具有高速和低速两套时钟。

系统运行频率越高,电源功耗就会相应增大。为更好地降低功耗,F14x单片机可采用三套独立的时钟源:高速的主时钟、低频时钟(如32.768kHz)以及DCO片内时钟。可在满足功能需要的情况下按一定比例降低MCU主时钟频率,以降低电源功耗。在不需要高速运行的情况下,可选用副时钟低速运行,进一步降低功耗。通过软件对特殊功能寄存器赋值可改变CPU的时钟频率,或进行主时钟和副时钟切换。

(4)具有多种节能工作模式。

F14x单片机具有五种节能模式:LPM0、LPM1、LPM2、LPM3、LPM4。这五种模式为其功耗管理提供了极好的性能保证。图1显示了活动状态(AM)与各种节能模式下消耗的实际工作电流大小。

图1 F14x的工作模式与工作电流关系


由于MSP430F14x系列是专为超低功耗的便携式应用开发的。利用先进的集成电路技术和生产工艺,其功耗已经跨越了毫安级,真正进军到了微安级。


不仅如此,F14x的软件结构也针对低功耗而设计。如从备用模式唤醒MCU仅需6μS。其中断和子程序调用无层次限制,这种丰富的中断能力减少了系统查询的需要,可以方便地设计出中断程序结构的控制程序。


利用F14x系列单片机,可以方便地构建一个低电压的工作平台。通过各功能模块的智能运行管理和MCU的节能模式相结合,可以解决运行速度、数据流量与低功耗设计的矛盾,将各功能模块的电流消耗降至最低状态,限制活动状态至最低要求。经过这样优化,可以实现单片机的极低功耗。如在1MHz工作频率下,F14x只消耗0.1~400μA电流(1.8~3.6V供电),如1.8V供电时,执行时仅消耗160uA的电流,备用时0.1uA,这时RAM中的数据还能有效保持。


概括来说,MSP430F14x单片机具有极低的功耗、强大的处理能力、丰富的片上外围模块,方便高效的开发方式。


本系统采用的MSP430F149单片机,是F14x系列中功能最强大的一款。它具有一个硬件乘法器、6个I/O端口(每个有8个I/O口)、1个精确的模拟比较器、2个具有捕捉/比较寄存器的定时器、8路12位A/D转换器、片内看门狗定时器、2个串行通信接口和60KB的FlashROM,2KB RAM。


F149还具有强大的扩展功能,其具有48个I/O引脚,每个I/O口分别对应输入、输出、功能选择、中断等多个寄存器,使得功能口和通用I/O口可以复用,大大增强了端口功能和灵活性,提高了对外围设备的开发能力。


MSP430F149的以上特点,使其非常适合于构成一个全功能的便携式单片机应用系统。


二、液晶显示模块与接口电路

图形点阵式液晶可显示用户自定义的任意符号和图形,并可卷动显示,它作为便携式单片机系统人机交互界面的重要组成部分被广泛应用于实时检测和显示的仪器仪表中。支持汉字显示的图形点阵液晶在现代单片机应用系统中是一种十分常用的显示设备,汉字BP机、手机上的显示屏就是图形点阵液晶。它与行列式小键盘组成了现代单片机应用系统中最常用的人机交互界面。


采用图形点阵式液晶显示较之其它显示方式主要有以下优点:

(1)工作电压低、功耗极低。工作电压3~5V,工作电流≤10uA/cm2,特别适用于便携式的仪器仪表中。 
(2)液晶显示属被动显示,受外界光线干扰小。 
(3)图形点阵式液晶可显示的信息量大,分辨率高。 
(4)不产生电磁干扰。 
(5)可靠性高。使用寿命长。

在设计中,笔者采用了信利(TRULY)公司的MG-12232液晶显示模块。MG-12232模块供电电压的典型值为3V,工作电流的典型值为0.3mA,很适合本系统3V电平的低功耗环境。其可显示范围为122×32点阵,即能实现所谓的双排汉显。MG-12232采用的控制器是两片SED1520,一片SED1520控制器可以驱动16行×80列。SED1520控制器可以在3V逻辑下正常工作,因而避免了与MSP430单片机逻辑电平不匹配的问题。其具体结构框图见图2。

图2 SED1520的引脚定义和结构框图


SED1520控制器作为液晶显示屏与MCU的接口,它直接驱动MG-12232液晶,控制字符、汉字以及图形的显示。由于MSP430F149具有48个I/O引脚,借助SED1520,可以直接利用MSP430的I/O口模拟液晶的读写和控制时序。使得MCU对液晶的操作实际上变为MCU对液晶显示控制器SED1520的操作,因而接口电路的的硬件连接和软件编程都简单了很多。


图2中V5引脚提供MG-12232液晶的对比度电压,可以通过一个-12V电压发生电路(如MAX765)产生,经一个100K电位器分压后即可使用。


MCU可以通过SED1520的一些控制引脚和13条常用指令来访问液晶显示模块。如RST用于重启动SED1520,E1和E2分别用于使能两片SED1520。R/W控制对SED1520的读或写。A0决定此次操作是指令读写还是数据读写。


 一个SED1520显示控制器能控制80×16点阵液晶的显示,其显示RAM共16行,分2页,每页8行,每一页的数据寄存器分别对应液晶屏幕上的8行点。当设置了页地址和列地址后就确定了显示RAM中的唯一ピ?F聊簧系拿恳涣卸杂σ桓鱿允綬AM的字节内容,且每列最下面一位为MSB,最上面一位为LSB,即该RAM单元字节数据由低位到高位的各个数据位对应于显示屏上某一列的由高到低的8个数据位。对显示RAM的一个字节单元赋值就是对当前列的8行(一页)像素点是否显示进行控制。

如图3,MSP430F149单片机的P5口用作与液晶显示模块通信的数据口。


MG-12232显示模块有多个型号,不同型号都采用相同的SED1520控制器,操作及使用方法完全相同,只是尺寸不同。常用的如MG-12232-5(76×29.1×5.7mm)、MG-12232-6(45.05×22.32×6.3mm)、MG-12232-7(84×44×10mm)等,可以分别用在大小不同的便携式仪器或设备上。


对液晶显示模块还需着重考虑其背光类型,不同的背光类型消耗电流大不相同。一般可选的背光类型有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 FilesIAR Systemsew23430icc430msp430F149A.xcl。 
B. 点击Project菜单下的Options…命令进入设置窗口,对左边Category框内的C-SPY选项下的Setup页面进行设置,把Chip Description框的内容设置为C:Program FilesIAR Systemsew23430cw430msp430F149.ddf。 

以下给出了一些常量定义和发送命令字子程序(SEND_COM)、发送数据子程序(SEND_DATA)及液晶状态查询子程序(LCD_STE)的源代码。 
#includemsp430x14x.h  
;程序在液晶上显示汉字液晶。 
;---------定义LCD的引脚 
LCD_RST EQU04H   ;P4.2 
LCD_E1  EQU40H   ;P4.6   
LCD_E2  EQU20H   ;P4.5 
LCD_RW  EQU    10H   ;P4.4 
LCD_A0  EQU08H   ;P4.3 
;----------定义LCD使用的数据寄存器 
LCD_PAGE EQU0200h;定义显示页面 
LCD_ORDER    EQU0201h;暂存液晶控制指令 
LCD_DATA EQU0202h;暂存液晶数据 
LCD_CNT  EQU0203h;液晶计数存储器 
LCD_ROW EQU0204h;存放列地址数据 
LCD_LINE EQU0205h;存放行地址数据 
LCD_CHAREQU0206h;存放当前字符数据的首地址 
LCD_BYTECNT  EQU0207h    ;存放要显示的字节数 
LCD_STATUS    EQU0208h    ;存放液晶当前状态的数据 
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 OUT INSTRUCTION 
    BIS.B   #LCD_RW,&P4OUT    ;R/W=1,READABLE 
    BIC.B   #0FFH,&P5DIR   ;SET P5 PINS INPUT  
STE_AGNMOV.B   &P5IN,LCD_STATUS  ;GET STATUS DATA FROM LCD 
    BIT.B   #80H,LCD_STATUS;如状态存储器第7位为1,忙,则等待 
    JC STE_AGN 
    RET

五、结束语

本系统利用MSP430F149单片机、MG-12232图形点阵液晶模块和行列式键盘接口构建了基于3V电平的低电压、微功耗的中文人机界面。实际使用中,此人机界面消耗电流不足1mA,这种设计方案取得了很好的微功耗效果。

推荐阅读

史海拾趣

Coherent Inc公司的发展小趣事

尽管电子行业竞争激烈,市场变化莫测,但Coherent Inc.始终保持着坚定的前行步伐。公司不断适应市场变化,调整战略方向,积极应对各种挑战。同时,公司也注重与合作伙伴的紧密合作,共同推动激光技术的创新和应用。这种坚定前行的态度,使得Coherent Inc.在电子行业中始终保持着领先的地位。

这五个故事只是Coherent Inc.发展历程中的一部分,但它们足以展示公司在电子行业中的崛起和发展。通过不断的探索、创新、收购与整合,以及坚定的前行态度,Coherent Inc.已经成为了激光技术领域的佼佼者,为电子行业的发展做出了重要贡献。

Alpha 3 Manufacturing公司的发展小趣事

Alpha 3 Manufacturing公司成立于XXXX年,初期面临着资金短缺、市场竞争激烈以及技术瓶颈等多重挑战。然而,创始人凭借对电子行业的深刻理解和敏锐的市场洞察力,看到了电子产品制造领域的巨大潜力。他带领团队攻克技术难关,开发出了一款具有创新性的电子产品,迅速获得了市场的认可,为公司的起步奠定了坚实的基础。

Holt Integrated Circuits公司的发展小趣事

Holt在CAN控制器领域也取得了重要突破。作为世界上第一家将CAN控制器和收发器集成在同一紧凑塑料封装中的公司,Holt的ARINC 825(CAN)数据总线产品为用户提供了极大的便利。这种集成设计不仅减小了产品的体积和重量,还提高了系统的可靠性和稳定性。Holt的这一创新成果,不仅推动了CAN总线技术在航空航天领域的广泛应用,也为其他行业的自动化控制提供了有力支持。

以上五个故事,从不同角度展现了Holt Integrated Circuits公司在电子行业中的发展历程和卓越成就。这些事实不仅证明了Holt在技术创新和市场拓展方面的实力,也为其在未来的发展中奠定了坚实的基础。

ENPIRION公司的发展小趣事

在电源管理领域,ENPIRION公司不断面临各种技术挑战。例如,如何满足企业级、工业级、通信等市场对产品的高可靠性要求?如何提供最优的电源转换率以降低成本和散热?为了应对这些挑战,ENPIRION公司不断投入研发力量,推出了一系列创新的电源管理解决方案。这些解决方案不仅满足了市场的需求,还进一步巩固了ENPIRION公司在电源管理领域的领先地位。

Bharat Electronics Ltd公司的发展小趣事

随着市场的不断变化和竞争的加剧,BEL并未满足于现状,而是积极寻求多元化发展。公司不仅拓展了原有的军事电子领域,还涉足电信、运算、公共运输和广播等多个行业。同时,BEL还积极拓展全球市场,将产品出口到多个国家和地区,实现了从区域性企业向全球性企业的跨越。

Helium公司的发展小趣事

2017年,随着区块链技术的兴起,Helium团队看到了新的机遇。他们意识到区块链的透明性和自确认性可以为物联网网络的建设带来革命性变化。于是,Helium决定将网络建设“去中心化”,并借助区块链技术重新定义激励机制。这一决策标志着Helium从单纯的物联网项目转变为融合区块链技术的创新企业。通过去中心化的方式,Helium降低了网络建设和维护的成本,加速了网络覆盖的速度,为物联网设备提供了更加便捷和经济的连接方案。

问答坊 | AI 解惑

avr 的书

AVR单片机C语言开发入门指导…

查看全部问答>

請問可以同時插兩只CSR的Bluetooth dongle么?

現正在學習BCHS Application Demo,通信時需要兩臺PC,各插一只dongle,很不方便。請問可以在同一臺PC上插兩只dongle么。理論上是完全可行的,而且從設備管理器中也可以找到兩個設備(dongle),但不知道如何與應用程序關聯起來,應用程序只能同時打 ...…

查看全部问答>

嵌入式,项目,求救!

各位朋友,本人有一些Windows平台的C++开发经验,现在想做嵌入式,自己也有一块ARM的板子,搞过linux的bootloader和内核移植,但是却没有项目可以去学习。本来想去参加培训,可是没有时间。不知哪位朋友现在是否在开发什么项目,能否带小弟一起学习 ...…

查看全部问答>

从EPCS加裁NIOS

公司最近有一个项目,用到EP3C55这个器件,希望能把FPGA配置文件SOF和NIOS的程序文件一并烧写的EPCS芯片上!    在SOPC中添加了EPCS CONTROLLER,并在NIOS的RESET ADDRESS设定为EPCS CONTROLLER的地址!现在有两上问题没有想清楚:  ...…

查看全部问答>

请教汇编指令EALLOW和EDIS的含义

#define  EALLOW asm(\\" EALLOW\\" #define  EDIS   asm(\\" EDIS\\" #define  ESTOP0 asm(\\" ESTOP0\\" 在上面定义的 指令中,不知道三个汇编指令的含义,还请高手赐教,谢谢!! ...…

查看全部问答>

IAR 3.41A 求助

刚刚下了个3.41a的4K限制版在用 发现了几个问题 我用的是MSP430F1121A 我创建了一个C的项目,他提供了一个一条#include "io430.h",如果我加上这句话#include <msp430x11x1.h> 就报错 说很多变量已经定义了 于是我把#include "io430.h ...…

查看全部问答>