与液晶显示器的串行接口方案样本.docx
《与液晶显示器的串行接口方案样本.docx》由会员分享,可在线阅读,更多相关《与液晶显示器的串行接口方案样本.docx(8页珍藏版)》请在冰豆网上搜索。
与液晶显示器的串行接口方案样本
MSP430与液晶显示屏串行接口方案
针对运用微控制器(MCU)控制液晶显示驱动器(LCD)应用开发实例,提出一种采用串行方式来设计微控制器和液晶显示驱动器之间接口方案。
该方案是在既有点阵式液晶显示屏上附加一种MCU,通过程序设计运用MCUI/O端口去模仿I2C串行总线,从而实现运用MCU去控制LCD目;同步简介一种在图符液晶显示系统中显示动态曲线技术和实现办法。
核心词:
液晶显示驱动器I2C串行总线MSP430
1概述
点阵式液晶与外部硬件接口简朴,能以点阵或图形方式显示出各种信息,因而在电子设计中得到广泛应用。
但是,对它接口设计必要遵循一定硬件和时序规范,不同液晶显示驱动器,也许需要采用不同接口方式和控制指令才可以实现所需信息显示。
某些液晶显示驱动器与外部接口必要采用串行方式,而其串行接口往往不是原则串行接口,这就为此类液晶显示驱动器设计带来了困难。
针对上述问题,本文提出一种运用微控制器(MCU)I/O端口,通过软件设计模仿与所使用液晶显示驱动器规范相符串行总线设计思想,实现MCU对液晶显示驱动器控制,从而建立起一套不但可以显示各种字符,并且可以动态显示曲线游人显示系统。
2系统设计
本文所建立液晶显示系统,选用美国德州仪器(TI)公司MSP430F149微控制器来控制液晶显示驱动器uPD16682A,从而实现各种信息显示。
2.1MSP430F14X微控制器简介
TI公司MSP430F14X微控制器与其他MSP430系列微控制器相似,均甚至一种真正正交16位RISCCPU内核:
具备16个可单周期全寻址16位寄存器,仅27条精简指令集以及7种均采用双重取数据技术(DDFT)一致性寻址方式。
DDFT技术运用每个时钟脉冲对存储器进行两次数据存取操作。
从而不再需要复杂时钟乘法和指令流水线方案。
MSP430F14X系列MCU片内不但涉及60多KBFlash、2KBRAM、一种看门狗时钟、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公司初推出液晶显示驱动器,该产品内置大容量显示RAM内存,并可以提供132×65点阵全点显示,特别合用于16×16或12×12点阵中、日文字符显示。
该产品采用+3V单电源供电,内置升压电路并具3倍压和4倍压两种工作模式,支持8位串行或并行数据输入,内置时钟发生电路和程序可编程控制偏压电路。
.cn
(1)uPD16682A显示内存.cn
uPD16682A显示RAM内存保存着被显示内容点阵信息。
显示RAM每一位相应显示屏上一种点,总共可以存储132×65点信息;通过选取相应RAM页地址和列地址,微控制器可以访问其中任何一种点。
微控制器对uPD16682A显示RAM读写操作通过uPD16682AI/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.3uPD16682A与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状态来表征,因而将MSP430F149Port2.2端口电平置高或置低就可控制uPD16682A状态。
按照uPD16682A串行接口听原理,为了向其写入一种8位或16位数据,一方面必要通过程序设计向uPD16682A产生一种时钟输出。
时钟产生可以有两种方式。
一是运用微控制器定期器中断,定期依次从I/O端口输出高、低电平。
二是运用指令产生和数据同步时钟脉冲,通过产生一种电平跳变沿将位数据送到uPD16682A,然后通过逐次移位,就可以将一种8位数据写进uPD16682A内部数据锁存器。
在第8个时钟脉冲上升沿,锁存器中数据炙一种8位并行数据,同步依照A0信号线睥电平来显示图符或执行相应控制命令。
虽然这里串行数据发送没有详细波特率和数据接口合同规定,但是在编写程序时,必要认真考虑串行方式下各个信号时序。
如下是向uPD16682A写入一种8位控制命令程序:
voidSet_Address(unsignedcharcolumn,unsignedcharpage){
unsignedcharColH,ColL;
//设页地址
ColH=page|0xB0;
Write_Command(ColH);
//设列地址
ColH=(column&0xF0)>>4;
ColH|=0x10;
ColL=column&0x0F;
.cn
Write_Command(ColH);
Write_Command(ColL);
}
.cn
2.4.2字符显示屏上曲线绘制程序
有了上述程序,就可以以便地在uPD16682A上指定位置显示设定图案和字符了。
如果顾客需要动态地展示信号波形和曲线,还可设计出专用画点和画线函数,从而大大提高了字符液晶显示屏动态图形显示能力。
普通而言,液晶显示屏上一点相应液晶显示驱动器显示RAM中一位。
显示RAM中某位为1,则在液晶显示屏上相应点即为点亮状态;而要想实当前液显示屏上动态显示点和曲线,必要用到显示RAM中数据。
普通做法是读取指定点周边数据,然后在这些点中某个指定位置插入1位,从而将液晶显示屏上指定点点亮,这就是基本画点原理。
但是,在串行方式下,uPD16682A不具备数据读出能力。
为此,咱们仿照显示RAM显示方式,在MSP430F149数据区开辟了一块和uPD16682A显示RAM同样大小内存块,在向uPD16682A显示RAM写入显示数据同步,也向该内存块相应位置写入同样数据,保证了该内存块内容和uPD16682A显示RAM中数据是同步刷新。
因而在画点函数中,咱们直接从该内存块中取出需要显示数据进行解决,然后再通过自定义串行总线送往uPD16682A进行显示。
用这种方式,咱们实现了在液晶显示屏任意位置画出一种点,并且还可以运用这种方式编制自己画线函数,这样就使uPD16682A具备了动态显示波形能力,也就扩展了字符液晶显示屏动态曲线波形显示功能。
如下是uPD16682A编写画点函数:
voidDrawPointXY(unsignedcharx,unsignedchary){.cn
unsignedcharpage,dot,dat,CouL,CouH;
dot=0x01;
page=y/8;/*计算当前点页地址、列地址*/
r_page=page;/*点亮当前点并保持周边点信息不变*/.cn
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串行接口提供了一种新方式。