
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、lcd显示模块并行接口驱动程序设计人们在日常生活中,占有很大的地位。人们用法的电脑、手机、车载系统、各种测量设备、显示设备等等,都把lcd作为重要的人机接口,它把用法者需要的信息准时反应出来。目前市场上存在着各种lcd和相对应的驱动模块,驱动模块所带的驱动程序都是针对本身模块开发的,各种驱动程序之间通用性差,而且在不同的平台上很难移植。每换一种lcd产品,都要按照它的驱动模块重写驱动程序。这样产品开发资源铺张,开发周期长,成本增强。本文将介绍一种lcd图形液晶驱动器的用法办法以及程序裁剪、移植和扩展,实现在随意坐标上显示图形和汉字。这款驱动器不带字库,对需要显示的汉字和字母通过字模产生器产生数
2、据,通过程序设计把字体在lcd通过描点描述出来(本文所用的字模采纳阳码)。1 典型图形lcd驱动器nhc_313简介11 驱动器简介nhc_313驱动器驱动最大点阵数为640(列)×480(行),显示色彩为65536色(16位色)。本文所用的lcd为sharp公司产品,产品型号为lq104v1dg52。nhc_313有8位复用并行接口一数据和控制总线。可以通过总线对lcd举行操作,随时写显示存储器,而不影响显示效果,即显示不会浮现“雪花”。nhc_313内部有两页显示缓存,用法人员可以让一页缓存的数据在lcd上显示出来,同时可以对其次页的缓存举行操作。此驱动器与微处理器接口衔接容易,
3、接口的读、写操作兼容8031总线时序。这款驱动器只是单纯的图形图像显示,没有内置字库、图形库。假如设计人员要显示汉字,必需要把需要的汉字用字模生成器产生字模的16进制文件,然后通过程序控制把需要的字体逐一描到lcd上。驱动器的控制引脚如下:wr:数据写入,低电平有效cs:片选端,低电平有效a0:地址信号线0a1:地址信号线1db0db7:数据总线对nhc_313读写的时候采纳8031时序,1为nhc_313接口8031时序图,在表1中列出了接口的时序特征参数。当驱动器与8051等io口读写速度不是很快的mcu衔接时,io的特性其本上可以满足表1的时序特征参数,图2给出的是mcu和驱动器无缝衔接
4、的接口电路,这种办法是采纳io模拟时序的时候用到的引脚(不止局限于图中列出的引脚),本文建议采纳io口模拟时序的办法控制驱动器。要注重的是假如io的读写速度过快则不能满足接口时序特性参数。例如采纳silab公司的c8051f340作为nhc_313的mcu,因为c8051f340的内部晶振为48mhz,io读写速度不能很好满足时序特性(写周期不能满足),所以在程序设汁中会看到有延时程序。而 8051系列io可以满足表1的时序参数特性,不需要加入延时程序。表2为驱动器指令,因为显示的像素点数为640(列)×480(行),对于8位的io不能一次的把行和列的信息彻低表示出来,由此设置了行列
5、的凹凸地址(8位地址线只能表示0255的地址信息)。对驱动器举行写操作要遵循以下逻辑:a)设定显示页和操作页地址(a1=a0=1,cs=0,wr=0)d1-d0设定列地址高字节;d2设定行地址高字节。开机时先执行此操作再执行其他操作。b)写行地址低字节。(a1=0,a0=1)c)写列地址低字节字节。(a1=1,a0=0)d)延续写两次8位字节对应一个像素点色彩(a1=0,a0=0)。第一个字节:r4、r3、r2、r1、r0表示红色灰度;g5、g4、g3、g2、g1、g0表示绿色灰度;b4、b3、b2、b1、b0表示蓝色灰度。如在同一行内延续写数据不用每次重写行坐标和列坐标,每一次“写数据”操作
6、后列地址自动加1,即每写两个字节显示数据列地址自动加1。12 关于液晶屏的容易解释本文中的液晶显示的色彩数量为65536种一16位色,对一个像素点所要显示的色彩需要用两个字节的数据来表示。需要注重的是,lcd的坐标系同数学上的坐标系有所不同,lcd的坐标系3所示。坐标系上的点和lcd的像素点是一一对应的,每一个像素点用坐标系的横纵坐标唯一标识。因为八位的数据线只能表示0255的范围,所以把lcd分割成了图3中的几个区域,这些区域保证了横纵坐标范围在0255之内,通过设置行列凹凸地址挑选所要显示的区域。每个区域自立为一个小的坐标系,3中的f区域所示,区域中的点用这个小坐标系的坐标唯一表示。例如在
7、挑选lcd上点(630,420),通过整体坐标轴把这个点定位到f区,通过容易的计算得知此点在f区域坐标下的新坐标值为(118,108)。挑选区域的过程就是设置行列凹凸地址的过程,也可以理解为地址的写入为先写如高地址,后写入低地址,且地址的长度为11位,最高位为行列地址挑选位。为了便利理解和用法,本文把地址用区域来表示。例如挑选f区域,执行操作:a1=a0=1,cs=0,wr=0,然后向控制器写入d2d1d0=110。2 程序设计、移植和剪裁办法21 lcd驱动器io操作基本程序对驱动器控制是完成液晶产品开发的第一步也是关键部分,下面的程序是采纳io模拟8031时序办法完成对控制器举行控制,通过
8、这个办法有助于理解对控制器控制的操作步骤。图1为c8051f340同驱动器的衔接办法,本文全部例程编写都遵循这种衔接方式。操作基本程序清单如下:上述的dlcd,clcd1,clcd2,clcd3函数中,假如把控制器的片选信号接到低电平,cs这个管脚在程序可以略去;如果p4端口和其他端口相衔接,cs管脚要通过io口控制驱动器是否选通。注重函数中的延迟函数:数据浮现在端口上要经过t6的时光在wr的升高沿把数据写入控制器。22 lcd高级程序设计函数draw_point功能:把有色彩的点在lcd指定位置显示出来。函数参数意义(参考图3):word_which_display:设置显示页;word_w
9、hich_write:设置操作页;word_x,:新坐标o'在原坐标o下横坐标;word_y:新坐标o'在原坐标o下纵坐标;line_x:点g在坐标系o'下横坐标line_y:点g在坐标系o'下纵坐标yanse1,yanse2:延续写入的8位像素字节解释:显示页的设置是为了显示两页缓存中的一页数据到lcd上,操作页的设置是为了把数据写入到两页缓存当中的一页。假如显示页为第1页,操作页为第0页,此时lcd显示的是第一页的缓存的数据,此时把数据写入到第0页缓存中,写入的数据在lcd上不被显示;假如显示页为第0页,操作页为第0页,此时lcd显示的是第0页的缓存的数据,
10、此时把数据写入到第0页缓存中,写入的数据可以在lcd上实时的显示出来。程序依据图3中对坐标轴设计办法和lcd区域划分手段推断点g在新坐标系o'中坐标值。在程序中一定要注重每写两个字节显示数据列地址(列坐标)自动加1。为此设计如下函数:这个函数功能比较多样化,是用新坐标系o'来确认点g的坐标。执行函数draw_point(0,0,511,255,8,9,0xf8,0x07)结果为,当前显示第0页,点为红色且被置到第0页。新坐标o'在原坐标o的(511,255)处,点g在坐标系o'的位置为(8,9),也就是被置到图3中的f区;假如执行函数draw_point(0,0
11、,0,0,、520,364,0xf8,0x07),那么此点和上一个点将重合,此时坐标系o和原坐标o重合。函数display_word功能:把字体写入到控制器缓冲区指定位置中,并控制字体是否显示。函数参数意义:word:显示字体字库的首地址;word_line,word_row:字库行数和列数(列数等于字模的列数8);word1,word2:字体显示的色彩的16进制表示;backdrop1,backdrop2:字体和背景的色彩其他参数含义同clear_region。函数原型和参数如下:23 其他主要函数编写解释清屏程序:可以通过draw_point函数编写得到,建议清屏函数具有清理任何缓存页中的
12、数据并控制数据显示的功能。如函数及参数列表如下:void clear_region(char word_which_display,charword_which_write,int word_x,int word_y,unsigned int word_row,unsigned intword_line,unsigned char with_color)在这个函数中,参数word_row:清理的矩形区域距离word_x的长度;参数word_line:清理的矩形区域距离word_y的长度;参数with color:清理区域的色彩。此函数所清理的是矩形区域。函数改写可以采纳延续置点的办法,通过dr
13、aw_piont函数延续的向清屏区域内置入一定色彩的点。因为篇幅所限,本文不给出程序清单。画线程序:把lcd上随意两点衔接成直线。设lcd上两点坐标m(x1,y1)和n(x2,y2),得斜率因为x方向地增量x=1,则y=k。通过循环置点就可以得到直线。本文所用的函数如下:void draw_line(char word_which_display,char word_which_write,unsigned int x1,unsigned int y1,int x2,int y2,char colour)参数功能:x1,y1:lcd上随意一点m的坐标x2,y2:lcd上随意一点n的坐标colo
14、ur:连线的色彩同种lcd驱动器可应用在不同的mcu上,假如采纳io模拟时序的办法,需改动管脚设置并注重读写的时光要求。如本文的程序在80上运行时候基本程序中的不需要加延时,在c8051f单片机(晶振48mhz)上需要加延时。另外mcu和lcd驱动器必需共地处理,否则可能会产生不须要的干扰。对驱动器的控制还可以采纳挺直拜访外部存储器的办法,这个时候相当于向固定的寄存器写数据和控制字,接口程序如下:假如向外部存储器写数据,采纳dlcd=0x04的形式,它的含义是把数0x04存储到外部地址为0x0000中。用法此办法要注重mcu的emif的接口读写时序。有一些控制器的功能更丰盛一些,如clcd1=
15、0x81,驱动器会执行0x81所代表的功能。本文用法的是c8051f340单片机,这款单片机有自带的emif接口,在用法之前需要对其举行配置:p1skip=0x80;跳过wr和rd引脚xbr1=0x41;enable crossbar and enableemif工作在地址数据复用方式只用外部存储器ale高和ale低脉冲宽度=4个sysclk周期emi0cf=0x0c;地址建立时光=0个sysclk周期。wr和rd脉冲宽度=2个sysclk周期。地址保持时光=1个sysclk周期emi0tc=0x05;3 用法举例及显示效果4是用法本文程序设计的飞机操纵性能检测*估仪操作用法界面,界面中左边的箭头可以通过按键控制下上下移动,并进入到相应的操作界面。首先要了解,lcd显示图像的实质是在屏幕上置入一定色彩的点,曲线y=f(x)也基于这个原理产生,当x轴延续时且函数值y幅度很小的时候在lcd上显示的图形是延续的,当幅度很大时会产生幅度离散的图形,假如可以把两个离散的点用一条线连上,那么离散图形可以变得延续,图4中有正弦函数显示的事例。程序实例如下:for(i=0;iy1=200*sin(005*i);y2=200*sin(005*(i+1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土木工程材料模考试题+参考答案
- 个人工作实习心得体会
- 单独中介合同范本
- 兑房押金合同范例
- epc合同和总包合同范本
- 三年级下学期语文教学总结
- 中式烹调师中级练习题及参考答案
- 养殖蚯蚓合同范本
- 单独招生机电类复习题
- 七色花幼儿教学反思
- 国网新闻宣传与企业文化管理专责考试题库及答案
- 氢气储存和运输 课件 第1、2章 氢气存储与运输概述、高压气态储运氢
- 三年级地方课教案
- 涉外法律文书写作
- 旅游大数据理论、技术与应用课程方案、案例分析
- 1.装配式建筑概述(装配式混凝土结构施工技术)
- 新零件的成熟保障MLA
- 《董存瑞舍身炸碉堡》PPT课件新
- 《计算机与网络技术基础》
- 下穿高速铁路监测方案
- 手机号码段归属地数据库(2016年3月)
评论
0/150
提交评论