收藏 分享(赏)

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

上传人:HR专家 文档编号:12067648 上传时间:2021-08-26 格式:DOCX 页数:15 大小:384.23KB
下载 相关 举报
从硬件到驱动程序完全掌握使用LED1206.docx_第1页
第1页 / 共15页
从硬件到驱动程序完全掌握使用LED1206.docx_第2页
第2页 / 共15页
从硬件到驱动程序完全掌握使用LED1206.docx_第3页
第3页 / 共15页
从硬件到驱动程序完全掌握使用LED1206.docx_第4页
第4页 / 共15页
从硬件到驱动程序完全掌握使用LED1206.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、LCD1206实用概述-by bangou 2013-7-14一、1602硬件架构主要特性如下: 8位并行数据接口,适配 M6800系列时序: 可选4位并行数据方式 具有字符发生器 ROM ,含10880位 192种5X8点字体字符 64种5X 10点字体字符 具有字符发生器 RAM,含512位 8种5X8点字体字符 4种5X 10点字体字符 低功耗,高可靠性对于单片机的学习而言,掌握1602的用法是每一个学习者必然要经历的过程。所i胃1602是指显示的内容为 16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多 数是基于HD44780液晶芯片的,控制原理是完全相同的, 因此基于

2、HD44780写的控制程序可以很方便 地应用于市面上大部分的字符型液晶。字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15 脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:弓1脚号引鹿名电平转入/输出作用1苞S地2Ucc电源3I对比调整电玩RSq/1|输入谶鬣5R/H输入0.印导人指管或载据1 从L读取信息6E111-*0输入柳褊据爵7M电输入/输出戮据总线Line削最低位)ftD618/1输入/输出数据总线9W2fl/t输入/输出数据总线1输福1QDB3输入/输出数据总线12四11DEI illfl/1输

3、入阳出数据总城1行超12口 B5o/l输入,输出数据总线班13DB6输入/输出载据总线1如诞UD078/1输入/输出数据总线Une*最高位)1S而+VccLC。背光电源亚搬16K接地一LG背光电源员极VO 10KVSS二、概述1602DDRAM、 CGROM和CGRAM 及其才旨令集HD44780 内置了 DDRAM、CGROM 和 CGRAM。 一、CGROM1602是一款最常用也是最便宜的液晶显示屏。最多可以显示两行标准字符,每行最多可以显示16个字符。1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符

4、号,图案等,最多可以产生8个自定义字符)。1602液晶模块内部的字符发生存储器(CGROM)已经存储了 160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一 个固定的代码,比如大写的英文字母 A的代码是01000001B (41H),显示时模块把地址 41H中的点阵 字符图形显示出来,我们就能看到字母“A”6%M中亍君鹤与字字特字理子第书朝花Jowtwn力如3151rm1111MU1511llfll11HV- 1nEJQDC小0)10PJF-夕0p0 eOCOI1inQaHIoI丁叶匕3qxiiOOIC1112|B|R|b

5、rI1KlMIXle6,rr i#|3IC|S|c|slJ1。斤匡*l4|D!T|d|t|iilHtuGN|5E|U|e|u| 1才由USTW u; 口&I6FUEU=?in12 3pZJHX lOI 1冏,TOWlgiwI7|15?17|gJL3g川(|8H|X|h|x|_小迺闰)l9IIIVIi|y|y口T闭*l:UIZ|j|zlWX1D11(4)+|5|K|k|(l才如巳口乂而,KIL|1IH10一|=M 口加)I 小户网小三辿I园?UU山注国切目。西上表中的字符彳t码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1=A这样的方法。PC在

6、编译时就把 “A先转为41H代码了。字符彳t码0x000x0F为用户自定义的字符图形 RAM(对于5X8点阵的字符,可以存放8组,5X10 点阵的字符,存放 4组),就是CGRAM 了。0x200x7F为标准的ASCII码,0xA00xFF为日文字符和希腊文字符,其余字符码(0x100x1F及0x800x9F)没有定义。二、DDRAM (Display Data RAM)DDRAM就是显示数据RAM ,用来寄存待显示的字符代码。LCD控制器的指令系统规定,在送待 显示字符代码的指令之前,先要送DDRAM的地址(即待显示的字符显示位置 )。16X2的字符型LCD的DDRAM地址与显示位置的对应关

7、系如下:共80个字节,其地址和屏幕的对应关系如下表:DDRAM地址与显示位置的对应关系显示位置123456 I7* * * * itDDRAI4地址第一行Q1H93H ! 27H第一行4你42HW3H5HMH ,上餐 67H设定 DDRAM 地址指令 0X80+x(00H-2FH,40H-67H) x (0,63 )27=128I指令劫能指令褊码杭行 时也 /USRSB/WDDBG I DB5 DBM DB3DB2 0B1设定GORRM 地址01E&R的毗地址位)lie功傕:设置DDRAM地址0N二0,一行显示A6fAO=。4FH;M = L两行显示,首行A6fAO=OOHf2FH,次行A6A

8、0=40H767H 功能:设定下一个要存入数据的CGRAM的地址。DDRAM地址与显示位置的对应关系0x800x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8A 0x8B 0x8C 0x8D 0x8E 0x8F0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 0xC8 0xC9 0xCA 0xCB 0xCC 0xCD 0xCE0xCFf1:BOH 01H 02H UH OSH CI6H 67H OSH 09H OAH 6BH 6CH 0DH 9EH HFH:4DH 41H 42H 43H45H 46H 147H49H

9、4nH 4BH 4CH 14DH EH 4FH jIJ第一行的显示地址是 0x80 0x8F ,第二行的显示地址是 0xC0 0xCF 。(0xC0=0x90+0x40=0xc0H)(注意这里我们送地址的时候应该是0x80+Address ,这也是前面说到写地址命令的时候要加上0x80的原因)0x800jt8F15也就是说想要在 LCD1602屏幕的第一行第一列显示一个 A字,就要向DDRAM的00H地址写入“A字的代码就行了。那么一行可有40个地址呀?是的,在 1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:譬如0x31(数字1的代码)并不能显示1出DDRAM 的00

10、H地址处显示数据,(事实上我们往DDRAM里的00H地址处送一个数据, 来。这是一个令初学者很容易出错的地方,原因就是如果你要想在 则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。、CGRAM功能:设定下一个要存入数据的CGRAM的地址。00C11111x(0,63)26=64指令功能指令编研执行 /USR/WDB7DB6号DB4D83DB2DB0|设定CGRM 地址001的地址(6位)40设定 CGRAM 地址指令 0X40+x A5-A0=(0,3FH)0001000100611111ooo acofloOQC11111t

11、onGxWCtxtlttxllQXlf字节存储空间,可以生成8个自定义字符点阵/ 8 个字节生成1个字符点阵操彳CGRAM的命令码+写入CGRAM地址./写入数据十进制十大进制ASCII字符0000自定义字符10101自定义字符202皿自定义字符30303自定义字符40404自定义字符50505自定义字簿6期期自定义字符70707自定义字符808院自定义钠1四09自定义字符2100A自定义字符311%自定义字内4120C自定义字符513UD自定义字将614呢自定义字符715QF|甘 www eehomc将生成的点阵数组保存到 CGRAM存储器中,生成自定义字符。1602内部CGRAM用于自定义

12、的字符点阵的存储,总共64字节。由点阵提取可知,每一个字符由8个字节数据组成。所以64字节CGRAM 存储器,能够存储 8组自定义字符的点阵数组。按照CGRAM地址划分为 0 7为第一组,8 15为第二组,依次类推56 63为第8组数据1、首先取得想要的中文或者图形的字模数组。通过字模软件不能直接提取5*8点阵的字模数据,可以通过手动提取的方法。如下图所示,对应一个字符显示区域。每 8个字节,组成一个点阵数组。日”的点阵数组即为 0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x002个点阵组成一个汉字取模举例:军”字取模数组为:0x00,0x0f,0x02,0x04,

13、0x07,0x00,0x0f,0x00,0x10,0x1e,0x00,0x10,0x1c,0x10,0x1e,0x10将生成的点阵数组保存到 CGRAM存储器中,生成自定义字符。1602内部CGRAM用于自定义的字符点阵的存储,总共 64字节。由上一步点阵提取可知,每一个字符由8个字节数据组成。所以 64字节CGRAM存储器,能够存储8组自定 义字符的点阵数组。 按照CGRAM地址划分为 07为第一组,8-15 为第二组,依次类推56 -63为第8组数据。把自定义字符的数组按 8 个字节一组存储到 CGRAM中,程序代码参考如下。功能:将自定义字符的编码数组写入到CGRAM中./输入:自定义字

14、符的编码数组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;j8;j+)64for(i=0;i8;i+)Write_com(tmp+i); Write_dat(pkk);kk+;tmp += 8;上一步中,自定义字符存储到CGRAM的任意一组以后,每一个组(8个字节)也有一个显示编码。按顺序依次为00H -07H 。显示时,只要调用每一组的编码,即

15、可以显示相应的字符。注:内部常用字符显示时,显示编码是从0x20开始白0x00 0x0f是专门留给自定义字符显示的。0x00 -0x07和0x08 0x0f内容是一样的。例如:调用0x01 位置和0x09位置,显示的内容是一样的。直接按照单个字符的显示方式调用显示函数,就可以显示自定义字符了。代码参考如下:/在第1行,第7个位置显示自定义汉字年”DisplayOneChar(6,00);显示年CGRAM 码 00说明:此时 年”的8个字节点阵数组 ,存储空间为 CGRAM的00 07地址也就是CGRAM的第1组数据存储区域,编码为 0。如果存储在 CGRAM的0815地址,那么编码就 应该是1

16、 了。很多资料中,都没有详细介绍过CGRAM和CGROM的区别和用法,在 1602调试过程中经常会被搞混。四、1602指令集那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。共 11条指令:6,1602液晶模块内部的控制器共有11条控制指令,如下表所示序号指令RSR/WO7D6D5D4D3D2D1DO1清显示0000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00H01DL

17、NF*7置字符发生存贮器地 址0001字符发生存贮器地址8置数据存贮器地瓦一001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容光标归位,即将光标撤回液晶显示屏的左上方将地址计数器(AC)的值设为0。2.光标归位指令0x02指令功能指令辨碣强至RSR/VDB7口 B5DB9GR2DB100 0光标归位000堪090411X1.6U功能:1把光标撤回到显示器的左上方2把地址计数器(AC)的值设置为0;3保持DDRAM的内容不变3.输入方式设置(Enter Mode Set,代码04H07H

18、)=进入模式设置指令指令功能指令编码麻 时间 /U5RS2IB6DBS厂DB3062DB106 0迸人模式设置*.EZ* |0I 1I/D40该指令的功能在于设置显示字符的输入方式,即在CPU读/写DDRAM 或CGRAM 后,地址指针1t数器 AC的修改方式,反应在显示效果上,当写入一个字符后画面或光标的移动。 该指令的两个参数 I/D和S确定四种字符的输入方式,如下表所示:输入方式指令代码I/D (设置AC修改方式)S(控制画面是否滚动)画面不动光标左移04HMAC为减一计数器)0禁止谈动画面右潼动05Hr为减一计数器)1允许滚动画面不动光标右移06EI1AC为加一计数器)0禁止滚动画面左

19、滚动07HMAC为加一计数器)1允许凝动注意:画面滚动方式在 CPU读DDRAM 数据时,或在读/写CGRAM 时无效,也就是说该指令 主要应用在 CPU写入DDRAM数据的操作时。功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名设置I/D0=写入新数据后光标左移 =AC自动-11 =写入新数据后光标右移 =AC自动+1S0=写入新数据后显示屏不移动=画面不动1 =写入新数据后显示屏整体右移 1个字=画面平移指令硼指令编的FtSR/MDB7DB5DSDK30B2DB108 U显不开关控制0001 .UC指令代码画面显示状态位光标显示

20、状奇位闪爆显示状态位功能DCB(08H-OBH)0画面关关显示0CH1画面开0光标消失0闪烁禁止画面显示0DH1画面开。光标消失1闪烁开启画面闪烁显示0EH1画面开1光标显示。闪烁禁走画面光标显示0FH1画面开1光标显示1闪烁开启画面光标闪烁显示4.显示开关设置(Display on/off Control ,代码 08H 0FH)5.显光标或画面滚动设置(Cursor or Display Shift ,代码10H、14H、18H、1CH)光标、画面移位指令功能指令编码噩 /U5RSR/HDB7DD6QR3D睚DB1DBO雄定显示屏变 动方而B01 18B1S/CR/LXX48执行该指令将产

21、生画面或光标向左或右滚动一个字符位。如果定时间隔地执行该指令 将关闭画面或光标的平滑滚动。画面滚动是在一行内循环进行的,也就是说一行的第一个 单元和最后一个人连接起来,形成闭环式滚动。画面滚动的显示效果如下所示:.字符显示位置1231 383940第一行DDRAM的地址000102r 252627第二行DDRAM的地址404142656667两行显示DDRAM单元与显示字符位原始位置关系字将显示位置12338394。第一行DDRAM的地址270001242526第二行DDRAM的地址674。41646566b.画面向右谖动时DDRAM单元与显示字符位的关系变化字符显示位置123383940第一

22、行DDRAM的地址010203r 262700 1第二行DDRAM的地址414243666740u,画面向左谈动时D口RAM单元与显示字符位的关系变化当未开光标显示时,执行画面滚动指令时不修改地址指针计数器AC的值,当有光标显示时,由于执行任意一条滚动指令时都将使光标产生移位,所以地址指针计数器AC都需要被修改。如果用光标的指针 一地址指针计数器 AC加一和减一功能来解释,就能理解光标从第一显示位左移至第 80显示位。或从第 80显示位右移至第 1显示位的原理。该指令有2个参数位,组合功能如下表所示二指令代码滚动对象选择凝动方向选择功能S/CR/L10H。光标0左移光标左滚动14H。光标1右移

23、光标右滚动18H1画面。左移画面左滚动1CH1画面1右移画面右滚动该指令与输入方式设置指令都可以产生光标或者画面的滚动,区别在于该指令专用于 滚动功能,执行一次,显示呈现一次滚动效果。而输入方式设置指令仅是完成了一种字符 输入方式的设置,仅在 CPU对DDRAM 等进行操作时才能产生滚动的效果。6.功能设定指令指令功能指令编码时间 /USR/UDBZDB6DB5DH4DB3DB20B1功能设定00带Q1DLH-1!参数 说明接口形式设置字符行数设置字符的字体设置DLNF0101014位总线g位总线1行字符2行字符5X7字体5X10字体指令代码38H数据总线长度为8位,2行字符,显示字体为5X7

24、, 占空比为1/16 (由N,F组合设置)0x30 DL =1 , 8bit,显示1行,5次点阵/每字符0x31 DL =1 , 8bit,显示1行,5M0点阵/每字符0x32 DL =1 , 8bit,显示2行,5X7点阵/每字符x33 DL =1 , 8bit,显示1行,5M0点阵/每字符功能:设定数据总线位数、显示的行数及字型。参 数设定的情况如下:位名设置DL0=数据总线为4位1=数据总线为8位N0=显示1行1=显示2行F0=5X7点阵/每字符1=5 10点阵/每字符该指令设置了控制器的工作方式,是唯一的软件复位指令。SPLC780虽然具有复位电路,但为了可靠的工作,SPLC780要求

25、CPU在操作时首先进行软件复位。也就是说控制字符型液晶显示模块工作时 首先要进行软件复位。7. CGRAM 地址设置(40H 7FH)设定 CGRAM 地址指令 0X40+ A5-A0=(0,3FH) x (0,63)指令期能指令编码执行 时间 /USR/WDB7DBADB5DB4DB3DB2DB1DBO设定区RAM 地址01(:酊AM的地址(6位)4D功能:设定下一个要存入数据的CGRAM的地址。该指令将6位的CGRAM地址写入地址指针计数器AC内,随后计算机对数据的操作是对CGRAM的读/写。8. DDRAM 地址设置(80H FFH)0X80+x(00H-2FH,40H-67H) x (

26、0,63)I指令劫能指令编狷I鹤智 时间Al 5R/W096 DB5 。的 M3岫 1I设壶口时端| 地址0e1(:*UH的地址口位)|青。(注意这里我们送地址的时候应该是0x80+Address ,这也是前面说到写地址命令的时候要加上0x80的原因)该指令将7位的DDRAM地址写入地址指针计数器AC内,随后计算机对数据的操作是对DDRAM 的读/写。9.读取忙信号或AC地址指令揖令功能指令要碣蛰行 时间 /USKSR/WDB7DB6 DB5 DBi DB3 DH? DB1 DBS谬取忙球信号 或M地址01位内容(7位)|4H功能:1读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接

27、收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;2读取地址计数器(AC)的内容。计算机对指令寄存器通道读操作即RS为0R/W为1时,将读出此格式的忙标志 BF值和7位地址指针计数器AC的值。揖令功能指令编码RSDB7 0日 6 BBS DB4 0B3 DB2 DH1 DBO数据写入到DDRAM或CGRAN1a要写人的数据8DB)10.数据写入DDRAM或CGRAM指令一览52将使用者自己设计的图形存入CGRAM。/US功能:1将字符码写入 DDRAM ,以使液晶显示屏显示出相对应的字符指令功能:指令编码即 /USRSR/WDB7DB6D65DB4DB3DH20

28、B1DB从仃RRM或 DRRHi臾田 数据.11要谀出的数据8口11.从CGRAM或DDRAM 读出数据的指令一览功能:读取DDRAM或CGRAM中的内容。基本操作时序:读状态输入:RS=L,RW=H , E=H输出:DB0DB7=状态字写指令输入:RS=L,RW=L, E=下降沿脉冲,DB0人-DB7=指令码输出:无读数据输入:RS=H,RW=H , E=H输出:DB0DB7=数据写数据输入:RS=H,RW=L, E=下降沿脉冲,DB0-DB7=数据输出:无/1602写命令函数控制器接口时序说明CHD44720及兼容芯片); t读操作时序/1602写数据函数时序参数符号超限值单位测试条件小值

29、鹿型佰最大值E信号周期400=ns引脚EE脉冲亮度t150一三nsE.t升沿,下降沿时间t% tF-25ns地址it.在时间30w三ns引脚 E、RS. R/N地址保持时间tpl10三三ns教擅逞立时间困损作)to-100HE引脚 DB0-DB7数据保持时间该撮作)t曲20二DB数据邃立时间写操作)40ns数据保持时间写投作;tx*10-*H3.时序参数四、1602驱动程序void lcd_wcom(uchar com) 一rs=0;rw=0;P2=com;delay(5);/ en=1; / en=0; void lcd_wdat(uchar dat) 一rs=1; rw=0; / P2=d

30、at; delay(5);/ en=1;/ en=0; void_rdat(uchar data) 2 读数据函数 一rs=1; rw=1; /P2=dat;delay(5);/en=1;/ en=0;,状态输入RS=L, R/ff=H, E=H输出DOD7=状态字写指令输入怦L, R/W=LS DOD7二指令码,二高输出 脉冲无 1读数据输入RS=H, R/W=H, E=H输出DOD7=数据写数据输入RS=H, R/W=L, DOD7=数据,E=高脉 冲输出无 1下面我们来驱动1602吧在1602的上排显示 “LCD1602 check ok下排显示“study u附序中没有用到忙检测,而是

31、用的是延时函数来替代忙检测#include包含头文件,这个嘛,就不用多说了#define uint unsigned int/预定义一下#define uchar unsigned charsbit rs=P3A5;/1602的数据/指令选择控制线sbit rw=P3A6;/1602的读写控制线sbit en=P3A7;/1602 的使能控制线/*P2 口接1602的D0D7,注意不要接错了顺序,我以前可在这上面吃过亏*/uchar code table=LCD1602 check ok; / 要显示的内容1 放入数组tableluchar code table1=study up;/要显示的

32、内容2 放入数组 table1void delay(uint n)/延时函数 uint x,y;for(x=n;x0;x-)for(y=110;y0;y-);void lcd_wcom(uchar com) /1602 写命令函数rs=0;/选择指令寄存器rw=0;/选择写P2=com;/把命令字送入P2delay(5);/延时一小会儿,让1602 准备接收数据en=1;/使能线电平变化,命令送入 1602 的 8 位数据口en=0;void lcd_wdat(uchar dat)/1602 写数据函数rs=1;/选择数据寄存器rw=0;/ 选择写P2=dat; / 把要显示的数据送入P2de

33、lay(5);/延时一小会儿,让1602准备接收数据en=1;/ 使能线电平变化,数据送入 1602 的 8 位数据口en=0;void lcd_init()lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);lcd_wcom(0x01);void main()uchar n,m=0;/1602 初始化函数/8 位数据,双列, 5*7 字形/开启显示屏,关光标,光标不闪烁/ 显示地址递增,即写一个数据后,显示位置右移一位/ 清屏/主函数lcd_init();lcd_wcom(0x80);/ 液晶初始化/显示地址设为 80H (即 00H , )上排第一位f

34、or(m=0;m16;m+)/将 table 中的数据依次写入 1602 显示lcd_wdat(tablem);delay(200);lcd_wcom(0x80+0x44); 重新设定显示地址为0xc4,即下排第5位for(n=0;n8;n+)/将tablel 口中的数据依次写入1602显示lcd_wdat(table1n);delay(200);while(1);动态停机程序写好后烧写进单片机,现在让我们看看效果吧这就是显示的效果,你做成功了吗?五、熟练自定义字符 CGRAM下面让我们来看看如何显示一个自定义的字符吧我们从CGROM表上可以看到,在表的最左边是一列可以允许用户自定义的CGRA

35、M ,从上往下看着是16个,实际只有 8个字节可用。它的字符码是 0000000000000111这8个地址,表的下面还有 8个字 节,但因为这个 CGRAM的字符码规定 02位为地址,3位无效,47全为零。因此 CGRAM的字符码 只有最后三位能用也就是 8个字节了。等效为 0000X111, X为无效位,最后三位为 000 111共8个。如果我们要想显示这 8个用户自定义的字符,操作方法和显示CGROM的一样,先设置 DDRAM位置,再向DDRAM写入字符码,例如 A就是41H。现在我们要显示 CGRAM的第一个自定义字符,就向 DDRAM 写入00000000B(00H),如果要显示第

36、8个就写入00000111(08H),简单吧!好!现在我们来看怎么向这八个自定义字符写入字模。有个设置CGRAM地址的指令大家还记得吗?赶快再找出来看看。指令功能指令编码/USRSft/WDA70&6D* DOH DB3 DB2 DB1 DBO设定CGRRM 地址&01CGR蝴的地址(脸)从这个指令可以看出指令数据的高2位已固定是01,只有后面的6位是地址数据,而这 6位中的高3位就表示这八个自定义字符,最后的3位就是字模数据的八个地址了。例如第一个自定义字符的字模地址为01000000 01000111八个地址。我们向这 8个字节写入字模数据,让它能显示出七”地址:01000000 数据:0

37、0010000 图示:。OOOOOBBO OOOOBOOB OOOOBOOO OOOOBOOO OOOOBOOB OOOOOBBO oooooooo0100000101000010010000110100010001000101010001100100011100000110 00001001 00001000 00001000 00001001 00000110 00000000下面我们写一段程序让这 8 个自定义字符显示出一个心的图案: (由于上面那个显示程序已经有很详细的注释了,因此这个程序只对与上个程序不同的地方写注释)#include#define uint unsigned int

38、#define uchar unsigned charsbit rs=P3A5;sbit rw=P3A6;sbit en=P3A7;uchar code table=0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f, 0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E, 0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00, 0x1f,0x1f,0x1

39、f,0x1f,0x1f,0x0f,0x07,0x01, 0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00;/ 心图案/*uchar code table1=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/ 字符 */ void delay(uint n)uint x,y;for(x=n;x0;x-)for(y=110;y0;y-);void lcd_wcom(uchar com)rs=0;rw=0;P2=com;delay(5);en=1;en=0;void lcd_wdat(uchar dat)rs=1;rw=0;P2=dat;delay(5);en=1;en=0;void lcd_init()lcd_wcom(0x38);lcd_wcom(0x0c);lcd_wcom(0x06);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报