首先谈一下己的感想_第1页
首先谈一下己的感想_第2页
首先谈一下己的感想_第3页
首先谈一下己的感想_第4页
首先谈一下己的感想_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、首先,谈谈你的感受:起初,我不知道如何驱动1602液晶显示器,所以我去查看信息,但我发现的信息是一个关于1602的说明列表,不是很系统,所以我刚开始读它,觉得我没有得到很多,有些中文翻译不太正确,有些说明与英文的原意不同,即翻译错误!因此,试着阅读英语文档!因此,我将根据自己编写1602驱动程序的经验,写一份系统的文档!初级章节1.主要技术参数:一般来说,当使用一个设备时,我们必须首先大致了解它的一些技术参数显示容量:162个字符(两行)芯片工作电压:4.55.5v工作电流:2.0ma(5.0v)模块的最佳工作电压为:5.0v字符大小:2.95(宽)4.35(高)毫米2.界面功能描述:知道一些

2、特定的参数,我们需要知道如何在我们的项目中控制它的管脚,也就是说如何设计电路编号标志pin描述1虚存系统电源地线2vdd动力阴极3vl液晶显示器偏置信号4遥感数据/命令选择器(高/低)5拆装读/写选择端子(高/低)6e使能信号714d0d7数据输入输出(07)15bla背光正极16良性苔癣样角化病背光阴极实际上,我们可以在参考资料中查找整体尺寸。在阅读了1602的介绍之后,它的显示原理是:规定一个字符由2.95(宽)4.35(高)毫米的点阵组成,我们可以通过控制点阵中的哪些点显示灰度来显示不同的字符!这里没有具体介绍这些字符的来源,但只要看看技术数据!我们知道1602的内存存储区有字符库,与这

3、些字符库的通信是通过数据输入输出端口进行的。这些字符库的一般编码规则是输入/输出端口的高4位和低4位组成一个矩阵。通过控制输入输出端口的高低来显示不同的字符,从而形成不同的字符!因此,在程序的控制下,我们可以给数据输入/输出(要显示的字符)赋值,然后根据赋值查找字符库,并相应地在屏幕上显示出来!因此,我们一般只知道1602的显示原理,所以我们不需要太深入。只要我们知道这一点,我们就应该有一些想法。我们接下来需要掌握的是如何编程,因为这不是简单地给数据输入/输出一个他可以显示的值,而是通过一些控制指令来实现的!3.第2步讨论给数据输入/输出赋值,也就是“写数据”,这些数据写在哪里?通过观察液晶显

4、示器的内部结构,我们知道它的控制器有808位(80字节)的内存缓冲区,但是如何访问呢?规则:控制器内部有一个数据地址指针,可以通过它访问!数据指针的设置由“指令代码”完成!剧本是如何构成的?按如下方式设置数据指针:指令码功能80h地址码设置数据地址指针也就是说,只要确定了地址码,就可以了!从图中可以看出,1602第一行的地址码是00-27h第二行的地址码是40-67h但是从前面我们知道,1602的屏幕长度只能显示16个字符,所以第一行可以显示字符的地址是00-0fh第二行可以显示字符的地址是40-4fh因此,当要设置数据地址指针时,即在液晶显示器上显示哪一行字符时,指令代码由80h加上地址代码

5、组成,例如写入第一行,然后80h 00h=80h (00h是对应于液晶显示器第一行的随机存取存储器的第一个地址)写入第二行,然后80h 40h=c0h (40h是内存的第一个地址,对应液晶显示器的第二行第一个地址)实际上,我一开始没有驱动1602,因为我不知道把数据写到1602的内存缓冲区的原理。现在我已经想通了,剩下的就是掌握一些指令来控制1602的显示!因为一个新手可能理解这些指令,但是他不知道如何获得一些驱动程序,让我来谈谈将这些指令与我编写的程序结合使用的想法。记住:指令是固定的,仅此而已。我们要做的就是掌握调用这些指令的顺序,这样1602就可以根据我们的主观愿望显示我们想要的东西了!

6、两篇说明文章1.我们先来说说1602的基本操作计时(中文版的数据,有些计时参数不准确,试着读一下英文)读取状态:输入:rs=l rw=h(读)e=h输出:d0d7=状态字读取数据:输入:rs=高rw=高(读)e=高输出:d0d7=数据(时序图请参考英文技术文件)写命令:输入: rs=1 rw=1(写)d0d7=指令代码,e=高脉冲输出:无写入数据:输入: rs=高rw=低(写)d0d7=数据,e=高脉冲输出:无(时序图请参考英文技术文件)2.状态字(状态)sta7sta6sta5sta4sta3sta2sta1sta0d7d6d5d4d3d2d1d0sta06当前数据地址指针的值0027和40

7、67sta7已启用读写操作1:禁止0:允许注意:在控制器的每次读写操作之前,应执行读写检测以确保sta7为0也就是说,读写只能在sat7为0时进行。这里的繁忙测试是基本操作序列中的“读取状态”!繁忙测试(读取状态)程序只需严格遵循时序图!但是,有一个例外:在设置数据地址指针的值时,不需要进行忙检测,因为这个地址是0x80h地址码,sta7肯定是1,所以在这一步不需要进行忙检测,所以在写函数“写命令”时,要注意设置一个参数来决定是否进行忙测试!(3)所有说明的总结:(参考英文技术文件)形容指令码d7 d6 d5 d4 d3 d2 d1 d0功能清除屏幕(01h)0 0 0 0 0 0 0 1显示

8、清晰屏幕:1。数据指针被清除2.所以显示器被清空了输入(02h)0 0 0 0 0 0 1 0显示回车:数据指针被清除输入模式设置(主要用在初始化指令中,这些指令是用来设置如何将字符一个一个地读/写到指定的地址,当然,字符写完后会静态地显示在屏幕上!这里没有设置如何使这些静态显示的字符移动)0 0 0 0 0 1 0 0(04h)光标从设定的起始地址向右移动;对于读/写的每个字符,指针地址增加1(写/读下一个字符);0 0 0 0 0 1 0 1(05h)光标停留在设定的起始地址;对于读/写的每个字符,指针地址减1(写/读下一个字符)0 0 0 0 0 1 1 0(06h)光标从设定的起始地址

9、向右移动;对于读/写的每个字符,指针地址增加1(写/读下一个字符);0 0 0 0 0 1 1 1(07h)光标停留在设定的起始地址;对于读/写的每个字符,指针地址减1(写/读下一个字符)显示器(开/关)光标(开/关)闪烁(开/关)0 0 0 1甲乙丙a=1:显示中a=0:不显示b=1:光标开启b=0:光标关闭c=1:光标闪烁c=0:不闪烁当预定的字符被写入设定的地址时,它们将被静态地显示在那里!如何移动光标和静态字符。这可以通过以下说明来完成0 0 0 1 0 0(10h)字符仍然是静态显示的;光标向左移动0 0 0 1 0 1(14h)字符仍然是静态显示的;光标向右移动0 0 0 1 1

10、0(18h)光标与整个字符一起向左移动0 0 0 1 1 1(1ch)光标与整个字符一起向左移动显示模式设置0 0 1 a b ca=1:数据转换长度为8位(d07)a=0: 4位数据(d74)b=1:显示两行b=0:显示一行c=1: 510格c=0: 58的电阵列了解了这些知识之后,剩下的就是按照固定的步骤编写驱动程序了!三篇编程文章1.初始化步骤:(1)延迟为15毫秒(2)写指令38h(不检测忙信号)(3)延迟5毫秒(38h写指令(不检测忙信号)(5)延迟5毫秒(38h写指令(不检测忙信号)(7)延迟5毫秒今后,在每次写指令和读/写数据之前,都要进行繁忙检测(8)写指令38h(检测忙)延迟

11、5毫秒(9)写指令08h:关闭显示器延迟5毫秒(10)写指令01h:清除屏幕延迟5毫秒(11)写指令06h:光标“移动”设置延迟5毫秒(12)写命令0ch:打开显示器并设置光标延迟5毫秒(在孙曼的技术文档中,从第8步到第12步的延迟没有增加,这是我调试程序时增加的!因此,如果没有显示字符或遇到其他问题,您可以尝试增加延迟时间!(这个初始化步骤是固定的,我们只需要修改指令值就可以达到预期的结果,所以我们可以把它打包成一个初始化函数!2.事实上,下一步是看时序图并编写程序。我们可以将“忙检测(读状态)”、“写指令”、“写数据”和“读数据”打包成四个功能,方便调用!3.下一步是设置字符显示的位置。我

12、们已经在第一篇文章的第三步中讲清楚了。注意:如前所述,这一步不需要繁忙的测试!4.最后一步是如何使静态字符移动,这是通过“写指令”来实现的。至于如何在程序中实现,这取决于个人的编程习惯。一般的想法是设置一个循环,然后在循环中调用一个写指令来实现移动!下面是一个具体的例子(模板),它有一个更详细的描述:带1602液晶显示屏的c代码日期:2005年12月15日来源:最佳蟾蜍作者笔记:浩铭字体:smc1602a(16*2)模拟端口连接模式连接线图:-|lcm - 51 | lcm - 51 | lcm - 51- |db0 - p1.0 | db4 - p1.4 | rw - p2.0|db1 -

13、p1.1 | db5 - p1.5 | rs - p2.1|db2 - p1.2 | db6 - p1.6 | e - p2.2| db3-p1.3 | db7-p1.7 | vlcd将1k电阻连接到gnd-注:at89s51使用12m晶体振荡器=#定义lcm_rw p2_0 /定义引脚#定义lcm_rs p2_1#定义lcm _ p2 _ 2#定义lcm _数据p1#定义忙0x80 /用于检测lcm状态字中的忙标识#i包括void writedatalcm(无符号字符wddlcm);void writecommandlcm(无符号字符wclcm,buysc);无符号字符readdatalcm(无效);无符号字符readstatuslcm(无效);无效lcminit(无效);无效显示字符(无符号字符x、无符号字符y、无符号字符数据);无效显示字符(无符号字符x,无符号字符y,无符号字符代码*数据);无效延迟5毫秒(无效);无效延迟400毫秒(无效);无符号字符代码uctech= uctech ;无符号字符代码net= uctech . icp ;主空隙(空隙)延迟400毫秒(毫秒);/开始等待,等待lcm进入工作状态lcminit();/lcm初始化延迟5毫秒();/延迟一会儿(要不要)displa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论