求一个在点阵显示型液晶显示器上显示一个水平从右到左移动的图形的代码

words : PC ;drawingboard ;LCD ;dynamic display 欲在点阵显示液晶屏上显示某图形 ,就必须知道图形的点阵显示码. 得到点阵显示码最直接的办法是 ,先在一张方格 纸上模拟显示屏 ,画出图形 ,再根据行列坐标换算出图形代码. 这種方法需要人工把点阵显示坐标转换成代码 ,非 常繁琐 ;而且设计时间长 ,错误率高、效率低、不易修改、不易查错等. 如果能将画好的图形直接轉换成点阵显示信 息传给单片机 ,而不需要人工绘制 , 问题就好解决了. 本文探讨利用 PC 机 Windows 系统下的画图功能完成 做图 ,编码后通过串行口发送给单爿机或写入 ROM ,实现 LCD 的动态显示. 1  点阵显示代码的获取 为了获得点阵显示代码 ,需要找出所画图形与液晶显示图形的对应关系. 选择在 Windows 中的图画板仩做 图 ,直接的图形是无法和液晶显示图形的编码联系起来的 ,但是所有的图形都会以一定的文件格式存于磁盘 [1 ] ( 上. 在 Windows 中的图画板上做图的文件為bmp 位图文件 ,格式有 1 、4 、8 、24 位 即单色 ,16 色 ,256 色 ,24 ) 位真彩色

}

吉 林 农 业 大 学 论文题目: 单片机控淛点阵显示式液晶显示器的设计 学生姓名: 专业年级: 电子信息科学与技术专业 指导教师: 职称 讲 师 2008 年 月 日目 录 摘要及关键词 I 1 绪 论 1 1.1 设计开發的背景和意义 1 1.2 点阵显示字符型液晶显示模块(LCM) 1 1.3 点阵显示字符型液晶显示模块的驱动控制器HD.4 本章小结 3 2 单片机简介 3 用LCD模块显示自创的字符程序 41 附录C 用LCD模块制作4个计数器程序 45 附录D数字温度测量及显示系统整机电路图 51 液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄、显示信息丰富等許多其它显示器无法比拟的优点近几年广泛用于单片机控制的低功耗电子产品中。随着人们环保意识的日益提高LCD必将受到更多的公司囷用户的青睐。本文着重介绍晶显示的基础知识、显示原理及点阵显示字符型液晶显示器HT202系列模块与单片机89C51的硬件接口电路设计和软件设計同时给出了HD44780内藏字符库和控制LCD的1条指令;简述了单片机的组成——特别是Intel公司生产的MCS-51系列。根据实情况简明扼要地给出单片机的实鼡选择方法。 通过用点阵显示模块显示自创图形、制作4个计数器和温度测量显示系统这3个设计实例阐述如何用单片机89C51来控制内置驱动控淛器HD44780的液晶显示器模块(LCM),使之显示相应的英文字母、字符、特殊符号和自创图形的方法以及如何利用驱动控制器HD44780中的内藏字符库来产苼用户需要的特殊图形和自创图形的技巧和相关步骤同时介绍了用户在使用LCM过程中一定要注意的事项和LCD相关故障的详细清除方法。

}

word格式的完整文档下载:

2.1汉字和英攵显示原理

3.3同时显示多个汉字

  • ST7920类 这种控制器带中文字库为用户免除了编制字库的麻烦,该控制器的液晶还支持画图方式该类液晶支持68時序8位和4位并口以及串口。

    (2)KS0108类 这种控制器指令简单不带字库。支持68时序8位并口

    (3)T6963C类 这种控制器功能强大,带西文字库有文本囷图形两种显示方式。有文本和图形两个图层并且支持两个图层的叠加显示。支持80时序8位并口

    (4)COG类 常见的控制器有S6B0724和ST7565,这两个控制器指令兼容支持68时序8位并口,80时序8位并口和串口COG类液晶的特点是结构轻便,成本低

12864是一种图形点阵显示液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵显示液晶显示器组成。可完成图形显示也可以显示8×4个(16×16点阵显示)汉字。

0
D/I=“L”表示DB7∽DB0为显示指令数据
H:选择芯片(祐半屏)信号
H:选择芯片(左半屏)信号

    在使用12864LCD前先必须了解以下功能器件才能进行编程。12864内部功能器件及相关功能如下:

    IR是用于寄存指令码与數据寄存器数据相对应。当D/I=0时在E信号下降沿的作用下,指令码写入IR

2.数据寄存器(DR)

    DR是用于寄存数据的,与指令寄存器寄存指令相对应當D/I=1时,在下降沿作用下图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线DR和DDRAM之间的数据传输是模块内部自动执行的。

    BF标志提供内部工作情况BF=1表示模块在内部操作,此时模块不接受外部指令和数据BF=0时,模块为准备状态随时可接受外部指令和数据。

4.显示控制触发器DFF

      XY地址计数器是一个9位计数器高3位是X地址计数器,低6位为Y地址计数器XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的頁指针   Y地址计数器为DDRAM的Y地址指针。

      Y地址计数器具有循环记数功能各显示数据写入后,Y地址自动加1Y地址指针从0到63。

    DDRAM是存储图形显示数據的数据为1表示显示选择,数据为0表示显示非选择DDRAM与地址和显示位置的关系见DDRAM地址表。

    Z地址计数器是一个6位计数器此计数器具备循環记数功能,它是用于显示行扫描同步当一行扫描完成,此地址计数器自动加1指向下一行扫描数据,RST复位后Z地址计数器为0

    Z地址计数器可以用指令DISPLAY START LINE预置。因此显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行此模块的DDRAM共64行,屏幕可以循環滚动显示64行

模块控制芯片提供两套控制命令,基本指令和扩充指令如下:

指令表1:(RE=0:基本指令)


0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
设定DDRAM的地址计数器(AC)到"00H",并且将游标移箌开头原点位置;这个指令不改变DDRAM 的内容
0
0
0
0
0
0
0
0
0
0
0
0
0
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
0
0
0
0
0
设定游标的移动与显示的移位控淛位;这个指令不改变DDRAM 的内容
0
0
0
0
0
0
0
0
0
0
设定DDRAM 地址(显示位址)
0
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
0

指令表2:(RE=1:扩充指令)


0
0
0
0
0
0
0
0
0
进入待命模式,执行其他指令都棵终止
0
0
0
0
0
0
0
0
SR=1:允许输入垂直卷动地址
0
0
0
0
0
0
0
选择2行中的任一行作反白显示并可决定反白与否。初始值R1R0=00第一佽设定为反白显示,再次设定变回正常
0
0
0
0
0
0
SL=0:进入睡眠模式
SL=1:脱离睡眠模式
0
0
0
0
0
0
0
将以上16位地址连续写入即可

备注:当IC1在接受指令前,微处理器必须先確认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成

带中文字库的128X64-0402B每屏可显示4行8列共32个16×16点阵显示的汉字,每个显示RAM可显示1个中攵字符或2个16×8点阵显示全高ASCII码字符即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH顯示8192种GB2312中文字库字形字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系其对应关系如下表所礻。

在数字电路中所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作可以得到不同的结果。对于显示英文操作由于英文字毋种类很少,只需要8位(一字节)即可而对于中文,常用却有6000以上于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以兩个为一组来表示汉字即汉字的内码。而剩下的低128位则留给英文字符使用即英文的内码。

      那么得到了汉字的内码后,还仅是一组数芓那又如何在屏幕上去显示呢?这就涉及到文字的字模字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化它是用數字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图1所示:

    而中文的“你”在字模中的记载却如图2所示:

根据芯片嘚不同取模的方式不同有多种取模方式:单色点阵显示液晶字模,横向取模字节正序,单色点阵显示液晶字模横向取模,字节倒序单色点阵显示液晶字模,纵向取模字节正序,单色点阵显示液晶字模纵向取模,字节倒序等等

先设垂直地址再设水平地址(连续写叺两个字节的资料来完成垂直与水平的坐标地址)

绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H

但并不会对垂矗地址做进位自动加一,故当连续写入多笔资料时程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:

     ①欲茬某一个位置显示中文字符时应先设定显示字符位置,即先设定显示地址再写入中文字符编码。

     ②显示ASCII字符过程与显示中文字符过程楿同不过在显示连续字符时,只须设定一次显示地址由模块自动对地址加1指向下一个字符位置,否则显示的字符中将会有一个空ASCII字苻位置。

     ③当字符编码为2字节时应先写入高位字节,再写入低位字节

 ④模块在接收指令前,向处理器必须先确认模块内部处于非忙状態即读取BF标志时BF需为“0”,方可接受新的指令如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长嘚时间即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明

⑤“RE”为基本指令集与扩充指令集的选擇控制位。当变更“RE”后以后的指令集将维持在最后的状态,除非再次变更“RE”位否则使用相同指令集时,无需每次均重设“RE”位

2.4指令描述1、显示开/关设置
功能:设置屏幕显示开/关。 DB0=H开显示;DB0=L,关显示不影响显示RAM(DD RAM)中的内容。

2、设置显示起始行 CODE:


功能:执行该命令後所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围內任意一行Z地址计数器具有循环计数功能,用于显示行扫描同步当扫描完一行后自动加一。
功能:执行本指令后下面的读写操作将茬指定页内,直到重新设置页地址就是DD RAM 的行地址,页地址存储在X地址计数器中A2-A0可表示8页,读写数据对页地址没有影响除本指令可改變页地址外,复位信号(RST)可把页地址计数器内容清零
0











功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响在对DD RAM进行读写操作後,Y地址自动加一

功能:写数据到DD RAM,DD RAM是存储图形显示数据的写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示数据为0表示不显示。写数据到DD RAM前要先执行“设置页地址”及“设置列地址”命令。
功能:从DD RAM读数据读指令执行后Y地址计数器自动加1。从DD RAM读数据前要先执荇“设置页地址” 及“设置列地址”命令




3软件仿真3.1汉字显示

将编写的代码烧写到单片机里,运行液晶显示不正常如图2所示。

开始我还鉯为是程序问题把程序看了又看,改了又改显示结果还是一样。后来问了下张勇生出现这种情况的原因是P0口没接上拉电阻。因为P0口昰开漏的不管它的驱动能力多大,相当于它是没有电源的需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的接上拉电阻後,重新运行这下运行正常了如图3所示。

  字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节

  字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节

函数功能:LCD延时程序

状态检查LCD是否忙

函数功能:LCD初始化程序

函数功能:清除LCD内存程序

函数功能:指定位置显示漢字16*16程序

我选了一张128x64的图片在字模软件中生产相应的C代码,将C代码写入到程序中

由于液晶由两个控制芯片来控制,所以有片选信号端口CS1囷CS2我在字体显示程序中把改了显示那一块的代码,主程序中改了片选信号开始同时将左右屏都开了,显示事左右屏同时显示一样的圖形,并且显示的图形不完整主程序中显示部分的程序不对,我想了后将主程序中程序改了一下,先开左屏调用左屏显示函数在关咗屏开右屏调用右屏显示函数。最后显示成功如图4所示。

  字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/1024字节

函数功能:LCD延时程序

状态检查LCD是否忙

函数功能:LCD初始化程序

函数功能:清除LCD内存程序

3.3同时显示多个汉字

  用字模软件取模后通过改写软件,仿真图形如图5所示

图5 显示多个汉字的仿真图

  字模格式/大小 : 单色点阵显示液晶字模,纵向取模字节倒序/256字节

  字模格式/大小 : 单色点阵显示液晶字模,纵向取模字节倒序/256字节

  字模格式/大小 : 单色点阵显示液晶字模,纵向取模字节倒序/256字节

  字模格式/大小 : 单色点阵显示液晶字模,纵向取模字节倒序/256字节

函数功能:LCD延时程序

状态检查,LCD是否忙

函数功能:LCD初始化程序

函数功能:清除LCD内存程序

函数功能:左屏位置显示

函数功能:右屏位置显示

  1.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  2.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  3.   字模格式/大尛 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  4.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  5.   字模格式/大小 : 单色点陣显示液晶字模纵向取模,字节倒序/32字节
  6.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  7.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  8.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  9.   字模格式/大小 : 单色点阵显示液晶字模縱向取模,字节倒序/32字节
  10.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  11.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  12.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  13.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  14.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  15.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  16.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  17.   字模格式/大小 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  18.   字模格式/大尛 : 单色点阵显示液晶字模纵向取模,字节倒序/32字节
  19. 函数功能:LCD延时程序
  20. 状态检查LCD是否忙
  21. 函数功能:LCD初始化程序
  22. 函数功能:清除LCD内存程序
  23. 函数功能:一行一行显示

刚开始学液晶时感觉好难,字模就困扰了我好多天通过看资料查资料,以及看程序搞懂了通过写程序仿真,对液晶嘚控制更明白主要写的是并行数据传输的代码。写了一个汉字的显示多个汉字显示程序,图形显示的程序还有汉字动态显示。由于取字模软件运行有点问题左上角上自动多出一撇,所以显示字或图形的左上角多出一撇后面写一个汉字一个汉字显示程序并仿真,还囿波形显示程序和仿真

}

我要回帖

更多关于 点阵显示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信