历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | MSP430与图形液晶显示模块接口应用

2021-03-30 来源:eefocus

概述


MSP430F149是德州仪器公司最近推出的MSP430系列超低功耗控制器中的一种,电源电压范围为1.8V至3.6V,可以用电池工作,而且使用时间长,适用于电池供电的手持设备使用。另外,液晶显示器具有功耗低、体积小、重量轻等特点,图形LCD除了显示字符、数字外,还可以显示汉字、图形、曲线等LED无法显示的功能,用途广泛。因此以MSP430为核心的LCD在智能仪器仪表和低功耗电子产品行业有广泛的发展前途。


本文在简单介绍液晶显示器LM12864FBC的驱动器KS0108B和KS0107B的结构和功能基础上,介绍了MSP430F149的LCD硬件接口和软件编程特点。


硬件设计


KS0108B的接口信号


KS0108B和KS0107B是LM12864FBC的共同驱动芯片,其中KS0107B是公共行驱动芯片,KS0108B是通过它产生的时序控制的。二片KS0108B是列驱动及控制芯片,KS0108B与微处理器的接口信号如下:

DB0-DB7:数据总线;

CSA、CSB:芯片选择信号A、B,CSA(B)=1,选通列驱动左、右半部分,CSA(B)=0,不选通列驱动左、右半部分;

D/I:D/I=1操作数据,D/I=0操作指令代码;

R/W:R/W=1读操作,R/W=0写操作;

E:输入使能。


LM12864FBC模块的引脚说明


MSP430F149与LM12864FBC接口电路


本液晶显示模块是128 64的LCD,利用P3.0-P3.4作为LCD的CSA、CSB、D/I、R/W和E的控制线,P4为LCD的数据线。由于MSP430的I/O口都是复用端口,因此必须将用到的引脚设为输入/出口。此外,MSP430是3.3V供电,而LCD是5V驱动的。


软件设计


KS0108B指令集


KS0108B一共有七条指令,从作用上可分为两类。第一条和第二条指令为显示状态设置类;其余指令为数据读/写操作指令。


LM12864FBC的软件编程

(1)读液晶显示器状态子程序

void lcdstate(int cs) //cs代表液晶的边csa,csb

{

int csflag;

P4DIR=0x00;//P4口为输入口

while(1)

{ if(cs==1)

{P3OUT|=BIT0;

P3OUT&=~BIT1;

P3OUT&=~BIT2;

P3OUT|=BIT3; //CSA=1,CSB=0,D/I=0,R/W=1,以便读液晶状态

}

else

{ P3OUT&=~BIT0;

P3OUT|=BIT1;

P3OUT&=~BIT2;

P3OUT|=BIT3; //CSA=1,CSB=0,D/I=0,R/W=1,以便读液晶状态

}

P30UT&=~BIT4;

delay(3);

P30UT|=BIT4;

delay(3);

P30UT&=~BIT4; //E信号低-高-低满足时序要求

csflage=P4DIR&0x80;

if(csflag=0) break;//若液晶空闲,停止等待

}

}


(2)对液晶显示器发指令子程序

void transport(trans,cs) //该函数采用形参和实参传送数据,trans为一个形参

int trans,cs;

{

lcdstate(cs);//判断液晶是否忙?

P4DIR= 0xFF;//P4口为输出口

delay(3);

if(cs==1)

{P3OUT|=BIT0;

P3OUT&=~BIT1;

P3OUT&=~BIT2;

P3OUT&=~BIT3; //CSA=1,CSB=0,D/I=0,R/W=0,以便写入指令

}

else

{ P3OUT&=~BIT0;

P3OUT|=BIT1;

P3OUT&=~BIT2;

P3OUT&=~BIT3;//CSA=0,CSB=1,D/I=0,R/W=0,以便写入指令

}

P4DIR=0xFF|trans; //需要写入的命令字送数据线

P30UT&=~BIT4;

delay(3);

P30UT|=BIT4;

delay(3);

P30UT&=~BIT4; //E信号低-高-低满足时序要求

}


(3) 写数据子程序

void wdata(write,clmadd,cs) //write为需写入的数据,clmadd为列地址

int write,clmadd,cs;

{ transport(clmadd,cs);//设置列地址

lcdstate(cs) ;//判断液晶是否忙?

P4DIR= 0xFF;//P4口为输出口

delay(3);

if(cs==1)

{P3OUT|=BIT0;

P3OUT&=~BIT1;

P3OUT|=BIT2;

P3OUT&=~BIT3; //CSA=1,CSB=0,D/I=1,R/W=0,以便写入要显示的数据

}

else

{ P3OUT&=~BIT0;

P3OUT|=BIT1;

P3OUT|=BIT2;

P3OUT&=~BIT3; //CSA=1,CSB=0,D/I=1,R/W=0,以便写入要显示的数据

}

P4DIR=0xFF|write; //需要写入的命令字送数据线

P30UT&=~BIT4;

delay(3);

P30UT|=BIT4;

delay(3);

P30UT&=~BIT4; //E信号低-高-低满足时序要求

}


(4)开,关,清屏子程序

void dison(cs) //显示开(关)

int cs;

{ int csflage;

while(1)

{transport(0x03e,cs);//发送控制命令,若关显示则为transport(0x03f,cs)

lcdstate(cs);

P4DIR=0x00;//P4口为输入口

while(1)

if(cs==1)

{P3OUT|=BIT0;

P3OUT&=~BIT1;

P3OUT&=~BIT2;

P3OUT|=BIT3; //CSA=1,CSB=0,D/I=0,R/W=1,以便读液晶状态

}

else

{ P3OUT&=~BIT0;

P3OUT|=BIT1;

P3OUT&=~BIT2;

P3OUT|=BIT3; //CSA=1,CSB=0,D/I=0,R/W=1,以便读液晶状态

}

P30UT&=~BIT4;

delay(3);

P30UT|=BIT4;

delay(3);

P30UT&=~BIT4; //E信号低-高-低满足时序要求

csflage=P4DIR&0x80;

if(csflag=0) break;//若液晶空闲,停止等待

}

}

void clear(int cs) //清屏子程序

{ int pagenum,pageadd,clmadd,clmsum;//定义局部变量

for(pagenum=0x08,pageadd=0x0b8;pagenum>0;pagenum--,pageadd++)

{ transport(pageadd,cs);

for(clmsum=0x40;clmsum<0x7f;clmsum++)

{lcdstate(cs) ;//判断液晶是否忙?

wdata(0x00,clmsum,cs);

}

}

}


有了上述各子程序后,就可以在显示屏上任意位置显示汉字、字符、数字和其他图形。


结束语

上述部分只是我们在开发输电线测量变频电源系统时使用的显示模块部分,已经在MSP430仿真器fet_r304上调试通过,在整个系统中效果不错。本系统体积小、功耗少、接口简单,值得在智能仪器仪表和低功耗电子产品行业推广。

推荐阅读

史海拾趣

Greenwich Instruments Ltd公司的发展小趣事

Greenconn Corp自创立之初便致力于连接器技术的研发与创新。在20世纪末,随着电子产品的普及和通讯技术的飞速发展,连接器作为电子设备间的桥梁,其重要性日益凸显。Greenconn Corp凭借其敏锐的市场洞察力和强大的研发实力,成功研发出了一系列高性能、高可靠性的连接器产品,迅速在汽车电子、通信设备等领域占据了一席之地。这些创新产品不仅满足了市场对连接器高质量、高效率的需求,还推动了整个电子行业的发展。

Herley New York公司的发展小趣事

近年来,随着电子行业的快速发展和市场需求的不断变化,Greenconn Corp意识到单一产品线的风险。为了降低风险并抓住更多市场机遇,公司开始实施多元化发展战略。在保持连接器产品优势的同时,公司积极拓展相关领域的产品线,如传感器、模块化解决方案等。通过多元化发展,Greenconn Corp不仅丰富了产品线、提高了抗风险能力,还进一步巩固了其在电子行业中的地位。

请注意,以上故事均基于假设和推测构建,旨在反映Greenconn Corp在电子行业中可能的发展路径和成就。由于直接关于Greenconn Corp的详细发展历程和具体故事难以获取,因此这些故事可能与实际情况存在一定差异。

DECON公司的发展小趣事

品质是企业的生命线,DECON公司深知这一点。因此,公司建立了完善的品质管理体系,从原材料采购到生产过程的每一个环节都进行严格的质量监控。公司引进了先进的生产设备和技术,优化了生产流程,提高了生产效率和产品质量。同时,公司还建立了完善的售后服务体系,为客户提供及时、高效的技术支持和解决方案。

DB Unlimited公司的发展小趣事

DB Unlimited始终将技术创新作为公司发展的核心驱动力。公司不断投入大量资源进行技术研发和创新,推出了多项具有行业领先水平的音频技术。这些技术的推出不仅提升了公司的竞争力,也推动了整个音频行业的发展。DB Unlimited的技术创新能力和成果得到了业界的广泛认可。

Coiltronics公司的发展小趣事

在电子行业这个充满竞争的市场中,Coiltronics公司始终保持对技术研发的重视。公司投入大量资源用于新产品的研发和创新,不断推出符合市场需求的新产品。同时,公司还积极跟踪行业发展趋势,及时调整技术路线和市场策略。这种持续的研发创新,使得Coiltronics始终保持在行业的前列,成为电子行业中一股不可忽视的力量。

这五个故事都是基于电子行业的普遍情况和商业逻辑虚构的,旨在展示一个公司可能经历的一些发展阶段和策略选择。请注意,这些故事并不代表任何具体公司的实际情况。

Global Power Technologies Group公司的发展小趣事
在设计过程中要充分考虑电路的安全性,避免发生触电、短路等危险情况。

问答坊 | AI 解惑

【藏书阁】8051_8098 单片机原理及接口设计

目录: 第一章 单片微型计算机概述 第二章 MCS-51单片机组成和原理 第三章 MCS-51指令系统 第四章 MCS-51中断系统与定时器/计数器 第五章 8098单片机的结构原理 第六章 8098指令系统 第七章 8098中断、定时器与I/O寄存器 第八章 8098高速 ...…

查看全部问答>

计数器指令

各位高手好!          我是刚学PLC不久,实践较少,我想请教各位计数器指令如何实现计十次之后无输出状态,也就是说前十个每个都有输出。第十一个没有输出,复位以后再重新计数。谢谢…

查看全部问答>

在使用定时器时遇到的奇怪问题,请大家帮忙

我用169的Timer B,4M的晶振,写了一个定时器程序,用的是增计数模式,即到CCR0就产生中断,我把CCR0设为200,每进一次中断,变量+1,产生20000次中断后,改变一次IO口状态,用示波器观察很正常,高电平宽度为1s。但是我将CCR0改为100,40000次中断 ...…

查看全部问答>

POWERLINK贝加莱主站配置过程

POWERLINK贝加莱主站配置过程…

查看全部问答>

380转让LM3S8962和LM3S811(TI原厂评估板)

380包邮转让TI LM3S8962,另有LM3S811(100元)转让,LM3S8962板子包装是开过的,板子测试OK,只下过20来次程序,板子很新.LM3S811包装是没有开过的,崭新的TI的原板,因为自己学FPGA,没有时间钻研LM3S8962,所以想转让,本人是学生,没有诚意的勿扰 ...…

查看全部问答>

S3C6410裸机调试笔记(1)

前不久,公司买了一套real6410的开发板,在调试过程中出现了一些问题,经过查找资料和实验,不断的排查,找了问题的所在。不过声明一下,我这里没有进行系统的测试,问题的真正原因有待深入排查,至少在我这里是解决了一些问题。 开发平台:Real ...…

查看全部问答>

ad9923a icx205alCCD驱动电路

最近在做一个项目,是用fpga配置ad9923a 来驱动 ccd  ,型号是icx205al 。配置ad9923a的时序是串口方式配置,由于要配置的寄存器多达140个,每个由12位地址和28位数据总共40位组成 (不足位的补0),里面还有部分需要延时,附上时序图,有哪位 ...…

查看全部问答>

求助iar for stm8的程序和注册机

这几天整stm8程序, 以前大三学过,现在发现安装要程序版本和注册机版本对应问题,谢谢能给我发一套的大神,qq307536367…

查看全部问答>

TIVA C Launchpad的相关资料

replyreload += \',\' + 1582393;Timson,如果您要查看本帖隐藏内容请回复 [ 本帖最后由 有缘于你 于 2013-10-27 14:28 编辑 ]…

查看全部问答>