历史上的今天

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

正在发生

2020年09月23日 | MSP430与液晶显示器的串行接口方案

发布者:WhisperingWaves 来源: 21ic关键字:MSP430  液晶显示器  串行接口  I2C串行总线 手机看文章 扫描二维码
随时随地手机看文章

1 概述

点阵式液晶与外部的硬件接口简单,能以点阵或图形方式显示出各种信息,因此在电子设计中得到广泛应用。但是,对它的接口设计必须遵循一定的硬件和时序规范,不同的液晶显示驱动器,可能需要采用不同的接口方式和控制指令才能够实现所需信息的显示。某些液晶显示驱动器与外部的接口必须采用串行方式,而其串行接口往往不是标准的串行接口,这就为这类液晶显示驱动器的设计带来了困难。


针对上述问题,本文提出一种利用微控制器(MCU)的I/O端口,通过软件设计模拟与所使用的液晶显示驱动器规范相符的串行总线的设计思想,实现MCU对液晶显示驱动器的控制,从而建立起一套不但可以显示各种字符,而且可以动态显示曲线的游人显示系统。


2 系统设计

本文所建立的液晶显示系统,选用美国德州仪器(TI)公司的MSP430F149微控制器来控制液晶显示驱动器uPD16682A,从而实现各种信息的显示。


2.1 MSP430F14X微控制器简介

TI公司的MSP430F14X微控制器与其它MSP430系列微控制器相同,均甚至一个真正的正交16位RISC CPU内核:具有16个可单周期全寻址的16位寄存器,仅27条的精简指令集以及7种均采用双重取数据技术(DDFT)的一致性寻址方式。DDFT技术利用每个时钟脉冲对存储器进行两次数据存取操作。从而不再需要复杂的时钟乘法和指令流水线方案。

MSP430F14X系列MCU片内不但包括60多KB的Flash、2KB的RAM、一个看门狗时钟、12位16通道的A/D转换器、定时器、高精度比较器、PWM以及高速的USART控制器等常用资源,还在某些型号中集成了LCD控制器。其I/O资源丰富,且每个输入/输出(I/O)引脚上都提供了矢量中断功能,每个外围器件都支持复杂的事件驱动型操作。同其它微控制器相,带片内Flash的微控制器可将系统功耗降低5倍,并且减小了硬件线路板空间,与现代程序设计技术(如计算分支以及高级语言(如C语言)结合使用,使得MSP430的体系结构更为高效。


MSP430F14X可采用一个集成的数字控制振荡器(DCO)或外部高速晶振对系统进行定时,其工作电压范围为1.8~3.6V,并可根据需要提供高达8MIPS(每秒百万条指令)的操作性能,对于对成本非常敏感的应用,该系列器件能够采用DCO来工作而无需外部晶振,快速的指令执行周期配之以低于6ms的等机启动时间,使得系统总功耗比竞争器件低了10倍,大大延长了诸如公用设施计量、便携式仪表测试和智能检测等工程应用系统中的电池使用寿命。


MSP430F14X系列微控制器允许用户使用标准C语言进行程序编程,并提供高效的C语言编译环境;配之以支持对具有仿零点功能的快闪产品进行丰取的快速实时仿真工具FET及优良的调试环境,使MSP430F14X系列微控制器在工程设计中得到了广泛应用。


2.2 液晶显示驱动器uPD16682A简介

uPD16682是NEC公司2001年初推出的液晶显示驱动器,该产品内置大容量显示RAM内存,并能够提供132×65点阵的全点显示,特别适合用于16×16或12×12点阵中、日文字符显示。该产品采用+3V单电源供电,内置升压电路并具3倍压和4倍压两种工作模式,支持8位串行或并行数据的输入,内置时钟发生电路和程序可编程控制的偏压电路。


(1)uPD16682A的显示内存

uPD16682A的显示RAM内存保存着被显示内容的点阵信息。显示RAM的每一位对应显示屏上的一个点,总共可以存储132×65点的信息;通过选择对应的RAM页地址和列地址,微控制器可以访问其中的任何一个点。微控制器对uPD16682A的显示RAM的读写操作通过uPD16682A的I/O缓冲器进行(串行模式下uPD16682A不支持读操作),并且该读操作和液晶显示屏驱动信号的读取操作是独立的,因此,当显示内存的数据同时被双方访问时,不会出现显示信息的抖动等现象。从微控制器读入的显示数据按照D7~D0的数据位顺序与液晶显示屏的行顺序一一对应,其显示关系对应图如图1所示。如果在系统中使用了多片uPD16682A,则在片间进行显示数据的转移和显示一整幅图案时用户就会有很大的自由度。

(2)uPD16682A与微控制器的接口

uPD16682A可以通过8位双向数据总线(并行模式下)或者通过串行总线接收来自微控制器的数据,这两种模式可以通过将其P/S引脚置高或置低进行选择。当工作于并行输入模式下时,uPD16682A的片选信号端、读写信号端以及控制信号端(A0)和数据线(D0~D7)都应该同微控制器的对应端口进行连接。此时uPD16682A内部显示RAM的数据以刷新液晶显示的内容,也可以通过数据总线读取显示内存的内容。当工作于串行模式下,uPD16682A仅使用数据线D6输入串行数据,即串行总线的数据输入端(SI),数据线D7被用作时钟输入(SCL)端,并将片将信号和控制信号(A0)同微控制器总线进行连接,置高或接地读写信号。此时uPD16682A内部显示RAM的数据访问是单向的,即微控制器只可以向显示RAM写数据以刷新液晶显示的内容,但不可以读取显示RAM的内容。

(3)uPD16682A的串行接口

uPD16682A的串行接口是TTL电平,不是标准的串行接口,对串行数据的接收没有具体波特率、数据接口协议的要求,内部包括1个8位的移位寄存器和1个3位的计数器。UPD16682A在每个串行时钟的上升沿将串行数据捕获到其内部的移位寄存器,同时计数器自动加1。当串行数据按照D7~D0的顺序被依次捕获到后,在第8个时钟周期的上升沿,已接收到内部的8位串行数据被转换成一个8位的并行数据;同时,uPD16682A读取控制信号线A0上的电平,并且根据A0信号来判断当前被写入的8位串行数据是一个显示数据还是一个控制命令。对控制信号线A0的读操作由uPD16682A的内部定时器来控制,在每隔8个串行时钟之后自动操作一次。

(4)uPD16682A的控制指令

uPD16682A通过读取其控制信号线A0的电平来判断当前从片外设备接收的数据是一个显示数据还是控制命令。当A0电平为高时,认为接收到的是一个显示数据;而当A0电平为低时,则认为接收到的是一个显示控制命令。利用uPD16682A的控制命令可以实现对uPD16682A大多数操作的控制。


2.3 uPD16682A与MSP430F149的硬件接口设计

图2是系统uPD16682A与MSP430F149的硬件接口示意图。图中系统采用4MHz晶振,并由系统时钟分频得到其它内外设所用的时钟。MSP430F149和uPD16682A相连接的I/O口被定义为输出,MSP430F149利用片内12位A/D采集传感器变换后的电压信号。经程序处理后,通过上述I/O口传送到uPD16682A进行信息显示。由于驱动液晶显示的电压需要十几V,如果系统板采用+3V单供电,则液晶显示驱动器必须采用片内升压电路。图中uPD16682A采用内部4倍压连接方式。


2.4 软件设计

MSP420F149允许用户标准C进行编程,并提供高效的C编译环境。如果对程序运行时间的要求不是很荷刻,采用C语言进行程序开发应当是编程人员的首先。以下主要介绍关于自定义串口总线的程序设计,同时介绍一种在uPD16682A下的画点和画线函数,提供在衅符显示屏下显示曲线的实现方法,从而为程序实现动态显示波形提供了可能。

2.4.1 串行口控制程序

微控制器送往uPD16682A的数据有显示数据或显示命令两种。两者的区分由uPD16692A控制信号线A0的状态来表征,因此将MSP430F149的Port2.2端口电平置高或置低就可控制uPD16682A的状态。


按照uPD16682A串行接口听原理,为了向其写入一个8位或16位的数据,首先必须通过程序设计向uPD16682A产生一个时钟输出。时钟产生可以有两种方式。一是利用微控制器定时器中断,定时依次从I/O端口输出高、低电平。二是利用指令产生和数据同步的时钟脉冲,通过产生一个电平的跳变沿将位数据送到uPD16682A,然后通过逐次移位,就可以将一个8位数据写进uPD16682A内部的数据锁存器。在第8个时钟脉冲的上升沿,锁存器中数据炙一个8位的并行数据,同时根据A0信号线睥电平来显示图符或执行相应的控制命令。虽然这里的串行数据的发送没有具体波特率和数据接口协议的要求,但是在编写程序时,必须认真考虑串行方式下各个信号的时序。以下是向uPD16682A写入一个8位控制命令的程序:

void Set_Address(unsigned char column,unsigned char page){

unsigned char ColH,ColL;

//设页地址

ColH=page|0xB0;

Write_Command(ColH);

//设列地址

ColH=(column&0xF0)>>4;

ColH|=0x10;

ColL=column&0x0F;

Write_Command(ColH);

Write_Command(ColL);

}


2.4.2 字符显示屏上的曲线绘制程序

有了上述程序,就可以方便地在uPD16682A上指定位置显示设定的图案和字符了。如果用户需要动态地展示信号波形和曲线,还可设计出专用的画点和画线函数,从而大大提高了字符液晶显示屏的动态图形显示能力。通常而言,液晶显示屏上的一点对应液晶显示驱动器显示RAM中的一位。显示RAM中的某位为1,则在液晶显示屏上的相应点即为点亮状态;而要想实现在液显示屏上动态的显示点和曲线,必须用到显示RAM中的数据。通常的做法是读取指定点周围的数据,然后在这些点中的某个指定位置插入1位,从而将液晶显示屏上的指定点点亮,这就是基本的画点原理。但是,在串行方式下,uPD16682A不具备数据读出能力。为此,我们仿照显示RAM显示的方式,在MSP430F149的数据区开辟了一块和uPD16682A显示RAM同样大小的内存块,在向uPD16682A显示RAM写入显示数据的同时,也向该内存块的对应位置写入同样的数据,保证了该内存块的内容和uPD16682A显示RAM中的数据是同步刷新的。因此在画点函数中,我们直接从该内存块中取出需要的显示数据进行处理,然后再通过自定义串行总线送往uPD16682A进行显示。用这种方式,我们实现了在液晶显示屏的任意位置画出一个点,并且还可以利用这种方式编制自己的画线函数,这样就使uPD16682A具备了动态显示波形的能力,也就扩展了字符液晶显示屏动态曲线波形的显示功能。以下是uPD16682A编写的画点函数:

void DrawPointXY(unsigned char x,unsigned char y){

unsigned char page,dot,dat,CouL,CouH;

dot=0x01;

page=y/8; /*计算当前点页地址、列地址*/

r_page=page; /*点亮当前点并保持周围点信息不变*/

r_column=x;

page|=0xB0;

dat=y%8;

dot=dot<CouH=(x&0xF0)>>4;

/*通过自定义串行总线向uPD16682A发送数据*/

CouH=CouH|0x10;

CouL=(x&0x0F);

Write_Command(page);

Write_Command(CouH);

Write_Command(CouL);

dat=DisplayRam[r_page][r_column];

dat|=dot;

Write_DisplayData(dat); /*向显示RAM写入数据*/

}


程序中的二维全局数组DisplayRam[][]即为在MSP430F149中开辟的内存块,用于保存当前uPD16682A显示RAM中对应位置的显示数据。全局变量r_page和r_column分别保存8位显示数据的页地址和列地址。


如果想进一步实现曲线的显示,程序中则需要计算两个点之间在X方向和Y方向上的偏差,并依据偏差大小来插入要显示的点。本系统中,用这种设计方法获得了平滑的曲线显示效果。


3 应用

经实践证明,本文所介绍的利用微控制器的I/O端口实现微控制器和液晶显示驱动器之间的自定义串行总线的设计方案,取得了很好的应用效果。设计的液晶显示系统工作稳定可靠,开发的在字符型LCD下动态显示曲线波形的技术,扩展了字符型LCD动态显示曲线的功能,也为液晶显示驱动器的应用开发提供了一种新的途径。本文所提出的用软件模拟串行总线的方法具有很强的通用性,为实现I2C串行接口提供了一种新方式。

关键字:MSP430  液晶显示器  串行接口  I2C串行总线 引用地址:MSP430与液晶显示器的串行接口方案

上一篇:基于MSP430F449的电子血压计设计
下一篇:采用TMP275温度传感器实现对电机设备温度实时监测

推荐阅读

   虽然这一篇报告命题为「两岸半导体产业比一比」,但其实并没有比拼的意思。 两岸半导体产业最近几年都是处在相互竞合的状态,既是竞争对手,但在某方面又需要合作,在某些程度上可以说是在同一条船上的。例如说,中国大陆的IC设计公司会向台湾晶圆厂投片、大陆晶圆厂也会委托台湾封测业者进行IC封装测试业务;另一方面,台湾芯片业者为了在地供货的...
据Waymo 提交给加州公共事业委员会的一份季度报告显示,该公司的自动驾驶汽车克莱斯勒Pacifica小型面包车在参加加州“机器人出租车”试点项目的仅一个月内,就已经运送了6299名乘客。具体到7月份,该公司总共完成了4678次运送服务,另有12次是教育性质的运送,即平均每天完成156次运送,这充分表明Waymo拥有充足的资源、员工和设备运营自动驾驶汽车。不过...
全球关键性能应用工程电子产品供应商 TT Electronics 宣布推出 APC 系列电阻器,其高可靠性表面安装电阻器系列已被证明可用于含硫气体环境中。APC 电阻器具有高稳定性和高精度,针对部署在受污染环境中的高精度模拟电路进行了优化,其烟雾中的硫化合物可能会与标准器件电极中的金属发生反应。经过严格的抗硫标准验证,APC 电阻器旨在减少要求苛刻的汽车、...
  9月14日下午,市政交通规划科组织召开了《昆山市新能源汽车充电设施布局规划修编(2020-2035)》(以下简称《规划》)专家评审会。会议邀请了来自上海、南京、苏州的三位专家组成专家组,市发改委、工信局等部门、各区镇及创控集团、交发集团等企业的相关负责人参加了会议。   《规划》研究了新能源汽车发展现状及政策,预判了昆山新能源汽车的发...

史海拾趣

问答坊 | AI 解惑

标准化将推进汽车总线技术应用深入

  随着电子与信息技术在汽车中的渗透,汽车中内嵌CPU的智能化零部件在不断增加,在智能零部件之间充当信息交互桥梁的总线,包括CAN、CIN、FlexRey、MOST、IDB1394等已成为现代汽车的关键技术。  应用层标准化是促进总线技术应用的重要措施   ...…

查看全部问答∨

[灌水][转帖]学计算机的和酒 幽默一下

大家喝的是啤酒,这时你入座了...... 你给自己倒了杯可乐,这叫低配置。 你给自已倒了杯啤酒,这叫标准配置。 你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。 你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡 ...…

查看全部问答∨

GPRS如何与校园网连接

我的毕业设计要使用单片机控制GPRS模块 把GPS接收机输出的数据传送到监控中心软件,可是网上看到GPRS只能连接到公网上,必须有固定IP。 可我在宿舍里只能有校园网,通过WAN微型端口PPPOE上网那种。在3322注册个动态域名还是不行,可能还得路由器 ...…

查看全部问答∨

wince下POWERCONTROL驱动是干什么用的呢

如题, 我用的是wince6的系统,在PLATFORM\\SMDK6410\\SRC\\DRIVERS\\POWERCONTROL下, 有两个文件s3c6410_power_control.c、power_control.c, 生成的DLL是s3c6410_PwrCon.dll 请问这个驱动是做什么用的呢…

查看全部问答∨

笔记本电脑视频采集卡问题

大家帮帮忙,我原来在台式机上有一个软件是采集显微镜图片的,用的是天敏sdk2000的采集卡,现在我把软件装在笔记本上面了,用什么办法可以用,笔记本用的采集卡继续使用这个软件,怎么设置,请高手指教,…

查看全部问答∨

有关AD的一个小问题(新手)

有关LM3S系列的AD,在看资料和例程的时候,发现转换结果都是在一个序列采集完成后,再一起读出,那在AD采集的时候,结果都放在哪里了呢?如果设置一个8通道的序列,那是不是得需要80bit的缓存?小弟新人,求哪位大侠指点,谢谢!…

查看全部问答∨

低功耗问题

我用的是 msp149 LFXT1=32K; XT2=7.3728M; 我想让MCLK=32K main(){ WDTCTL = WDTPW + WDTHOLD; BCSCTL1&=~XTS; //选择LFXT1低频 _BIC_SR(OSCOFF);//启动lfxt ... ... BCSCTL2=SELM1+SELM0; //set MCLK same as LFXT1CLK ...…

查看全部问答∨

STM32W 抓包软件

可以用到的转包软件…

查看全部问答∨

PROTEL99SE

PROTEL99SE打印元件的位置图时会显示没有孔装载,怎么解释我用的是汉化的 用英文的又不知道怎么打印元件位置图…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved