ARM微控制器LPC210X的LCD接口技术.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM微控制器LPC210X的LCD接口技术 引言 1 LPC210X的GPI0口和HS12864-16A介绍 表1 配置GPI0口的四个寄存器 表2 HS12864-16A引脚525252 2 三种接口设计 2.1 直接连接法 2.2 串行转换法 结语 Philips最近推出了其第一款基于arm内核的控制器LPC210X,但由于LPC210X外部总线不开放,无法扩展内存、驱动液晶显示器等,给它的推广带来了一定的影响。笔者最近在一工控板项目中采用了该系列芯片,项目后斯应客户要求需对几个参量进行显示并扩展键盘,不得已之下,采用了CPLD,并利用了GPIO口模拟总线和液晶时序与点阵图形液日模块HS12864-16建立了连接。下面详细探讨包括该种连接的三种接口方式。 引言 LPC210X控制器包含LPC2104、LPC2105、LPC2106,除了片内静态RAM不同外,其他完全相同。该系列器件具有32个GPIO口(P0.0~P0.31),没有外部总线,大多GPIO口是复用口,所以它一般不适合连接大屏幕液晶显示器,但驱动小规模液晶模块进行工业控制上的参量显示还是非常合适的。 GPIO包含四个寄存器,如表1所列。 1 LPC210X的GPI0口和HS12864-16A介绍 表1 配置GPI0口的四个寄存器 另外GPIO口还包含两个引脚连接模块寄存器PINSEL0、PINSEL1,用来为32个引脚配置I/O功能或其他特殊功能。 HS12864-16A是内部不带字符发生器的3V液晶模块(LPC210X可直接驱动5V液晶模块俣考虑到功耜耗,不赞成连接),其主要引脚如表2所列)。 表2 HS12864-16A引脚525252 显示屏由128×64点阵组成,共有64行,分为8页,每页8行,每行128列。写指令规则如下:当D/I=0、R/W=0,所有指令由传输到数据线的8位二进制数据决定,开显示为0x3f,并显示为0x3e,传输行、列地址由2低6位决定,传输页地址为低3位决定。 2.1 直接连接法 连接框图如图1所示。 该种方式占用GPIO口较多,对于要大量应用GPIO口复用功能的系统并不合适。为便于说明,图1将LPC210X的P0.0~P0.12选为连接的13个口,具体到设计系统中,可根据系统用到功能对应GPIO口复用功能进行选取和配置。HS12864-16A的数据线为8条,所以存在于Flash中的字模也是按8位存的,可由字模软件得出,传输数据进行显示的时候要满足以下时序:首先使D/I为高电平,R/W为低电平,接着将Flash里的某个8位二进制字模传送到8个I/O口上,然后使能E模拟下降沿时序,把数据锁存到液晶显示器内部的显示存储器中即可显示。 2 三种接口设计 程序由ADS1.2编译器编译。 GPIO口配置: #define LCD_DI 0;指令选择线P0.8 #define LCD_RW 0//读写选择线P0.9 #define LCD_E 0//使能线P0.10 #define LCD_CS1 0//左屏选择线P0.11 #define LCD_CS1 0//左屏选择线P0.11 #define IO_USE 0x00001FFF //13个GPIO口传输方向 传输字模数值到液晶显示器数据上的子程序如下: void SendData(unsigned char date){ IOSET=data; IOCLR=~data0x000000FF; } 备注:以上子程序为并行传输,也可以用串行移位进行传输,具体代码如下: unsigned char i; for(i=0;i8;i++){ //依次发送8位数据 if((data0x80)!=0) //最高位为1,对应口线置1 IOSET=IO_TURN; Else IOCLR=IO_TURN; //否则置0 data=1; //移到下一数据线 } IO_TURN=0 //8位数据传输完毕后,仍然将P0.7设为起始线 } 下面以左半屏来说明如何在屏幕上任意显示16×16点阵汉字。 传送指令子程序如下: void wcodel(unsigned char code){ //送指令 IOSET=LCD_CS1; //开左屏 IOCLR=LCD_CS2; //关右屏 IOCLR=LCD_RW; //写选择 IOCLR=LCD_DI; //指令选择 SendData(code); //依次将指令代码传到数据线上 IOSET=LCD_E; //模拟使能E下降沿 IOCLR=LCD_E; } 同理,只要把IOCLR=LCD_DI改为IOSET=LCD_DI便成传送数据了。为便于区分,可将函数

您可能关注的文档

文档评论(0)

勤能补拙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档