好文档 - 专业文书写作范文服务资料分享网站

从硬件到驱动程序完全掌握使用LED1206

天下 分享 时间: 加入收藏 我要投稿 点赞

. . . .

LCD1206实用概述

---by bangou 2013-7-14

一、1602硬件架构 主要特性如下:

◆8 位并行数据接口,适配 M6800 系列时序: ◆可选 4 位并行数据方式

◆具有字符发生器 ROM,含 10880 位 ◇192 种 5×8 点字体字符 ◇64 种 5×10 点字体字符

◆具有字符发生器 RAM,含 512 位 ◇8 种 5×8 点字体字符 ◇4 种 5×10 点字体字符 ◆低功耗,高可靠性

对于单片机的学习而言,掌握1602的用法是每一个学习者必然要经历的过程。

所谓1602是指显示的容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:

. . . .

. . . .

二、概述1602DDRAM、CGROM和CGRAM及其指令集 HD44780置了DDRAM、CGROM和CGRAM。 一、 CGROM

1602是一款最常用也是最便宜的液晶显示屏。最多可以显示两行标准字符,每行最多可以显示16个字符。1602可以显示部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。

1602液晶模块部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

.

上表中的字符代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。PC在编译时就把“A”先转为41H代码了。 字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。

0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。

. . . .

. . . .

二、DDRAM (Display Data RAM)

DDRAM就是显示数据RAM,用来寄存待显示的字符代码。LCD控制器的指令系统规定,在送待显示字符代码的指令之前,先要送DDRAM的地址(即待显示的字符显示位置)。16×2的字符型LCD的DDRAM地址与显示位置的对应关系如下:共80个字节,其地址和屏幕的对应关系如下表: DDRAM地址与显示位置的对应关系

设定DDRAM地址指令 0X80+x(00H-2FH,40H-67H) x(0,63) 2=128

7

功能:设定下一个要存入数据的CGRAM的地址。 DDRAM地址与显示位置的对应关系

0x80 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0x8E 0x8F 0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 0xC8 0xC9 0xCA 0xCB 0xCC 0xCD 0xCE 0xCF

第一行的显示地址是0x80-0x8F,第二行的显示地址是0xC0-0xCF。(0xC0=0x90+0x40=0xc0H) (注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因)

也就是说想要在LCD1602屏幕的第一行第一列显示一个\字,就要向DDRAM的00H地址写入“A”字的代码就行了。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:

(事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码)并不能显示1出来。这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。

三、CGRAM

. . . .

. . . .

功能:设定下一个要存入数据的CGRAM的地址。

设定CGRAM地址指令 0X40+x A5--A0=(0,3FH) x(0,63) 2=64

6

将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。1602部CGRAM用于自定义的字符点阵的存储,总共64字节。由点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM存储器,能够存储8组自定义字符的点阵数组。按照CGRAM地址划分为 0-7为第一组,8-15为第二组,依次类推56-63为第8组数据

1、首先取得想要的中文或者图形的字模数组。通过字模软件不能直接提取5*8点阵的字模数据,可以通过手动提取的方法。如下图所示,对应一个字符显示区域。每8个字节,组成一个点阵数组。 “日”的点阵数组即为 {0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00} 2个点阵组成一个汉字取模举例:

“车”字取模数组为:{0x00,0x0f,0x02,0x04,0x07,0x00,0x0f,0x00,

0x10,0x1e,0x00,0x10,0x1c,0x10,0x1e,0x10}

将生成的点阵数组保存到CGRAM存储器中,生成自定义字符。1602部CGRAM用于自定义的字符点阵的存储,总共64字节。由上一步点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM存储器,能够存储8组自定义字符的点阵数组。按照CGRAM地址划分为 0-7为第一组,8-15为第二组,依次类推56-63为第8组数据。把自定义字符的数组按8个字节一组存储到CGRAM中,程序代码参考如下。

//功能:将自定义字符的编码数组 写入到CGRAM中. //输入:自定义字符的编码数组

void Write_CGRAM(unsigned char *p)

{

unsigned char i,j,kk,p[]={0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00}; unsigned char tmp=0x40; //操作CGRAM的命令码 kk=0;

for(j=0;j<8;j++) //64 字节存储空间,可以生成 8 个自定义字符点阵 {

for(i=0;i<8;i++) // 8 个字节生成 1 个字符点阵 {

Write_(tmp+i); //操作CGRAM的命令码+写入CGRAM地址. Write_dat(p[kk]); //写入数据 kk++; }

tmp += 8; }

}

上一步中,自定义字符存储到CGRAM的任意一组以后,每一个组(8个字

节)也有一个显示编码。按顺序依次为00H-07H 。显示时,只要调用每一组的编码,即可以显示相应的字符。

注:部常用字符显示时,显示编码是从0x20开始的。0x00-0x0f是专门留给自定义字符显示的。0x00-0x07和0x08-0x0f容是一样的。例如:调用0x01 位置和0x09位置,显示的容是一样的。

. . . .

. . . .

直接按照单个字符的显示方式调用显示函数,就可以显示自定义字符了。代码参考如下: //在第1行,第7个位置显示自定义汉字 “年”

DisplayOneChar(6,00); //显示 \年\ //CGRAM 码 00

说明:此时“年”的8个字节点阵数组 ,存储空间为CGRAM的 00-07地址

也就是CGRAM的第1组数据存储区域,编码为0。 如果存储在CGRAM的08-15地址,那么编码就应该是 1了。

很多资料中,都没有详细介绍过CGRAM和CGROM的区别和用法,在1602调试过程中经常会被搞混。

四、1602指令集

那么如何对DDRAM的容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的容和地址进行操作的指令。共11条指令:

1.清屏指令 0x01

功能:<1> 清除液晶显示器,即将DDRAM的容全部填入\空白\的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。

2.光标归位指令 0x02

. . . .

从硬件到驱动程序完全掌握使用LED1206

....LCD1206实用概述---bybangou2013-7-14一、1602硬件架构主要特性如下:
推荐度:
点击下载文档文档为doc格式
5x1s81kohh9lpyv23wwc1symv1joq10076v
领取福利

微信扫码领取福利

微信扫码分享