lcd1602指令解读及基本程序.doc_第1页
lcd1602指令解读及基本程序.doc_第2页
lcd1602指令解读及基本程序.doc_第3页
lcd1602指令解读及基本程序.doc_第4页
lcd1602指令解读及基本程序.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

/*HD44780内置了DDRAM、CGROM和CGRAM。CGROM和CGRAM就是内置192个常用字符产生器,用户自定义的字符产生器RAM DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:显示位置: 1 2 3 4 5 6 7 8 . 40 第一行: 00H 01H 02H 03H 04H 05H 06H 07H . 27H 第二行: 40H 41H 42H 43H 44H 45H 46H 47H . 67H*/1602LCD的RAM地址映射液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在,哪里显示字符,图是1602的内部显示地址。也就是说想要在LCD1602屏幕的第一行第一列显示一个A字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:DDRAM地址与显示位置的对应关系 图五:LCD1602内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。/*1602液晶模块内部的控制器共有11条控制指令,如下表序号指令 RS R/W D7 D6 D5 D4 D3 D2D1 D01 清显示 0 0 0 0 0 0 0 00 12 光标返回 0 0 0 0 0 0 0 01 *3 置输入模式 0 0 0 0 0 0 0 1I/D S4 显示开/关控制 0 0 0 0 0 0 1 DC B5 光标或字符移位 0 0 0 0 0 1 S/C R/L* * D3=1移字符 D3=0移光标 D2=1右移 D2=0左移6 功能设置 0 0 0 0 1 DL N F* * DL=1总线8位 DL=0总线4位 N=0显单行 N=1显双行 F=0 5X7点阵 F=1 5X10点阵7 置字符发生器地址 0 0 0 1 -字符发生存贮器地址(6位)-8 置数据存贮器地址 0 0 1 -显示数据存贮器地址(7位)-9 读忙标志或地址 0 1 BF -计数器地址(7位)-10 写CGRAM或DDRAM 1 0 -要写的数据内容(8位-11 读CGRAM或DDRAM 1 1 -读出的数据内容(8位)-*/ 51单片机对lcd1602一些基础程序/* 基本操作时序:写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0DB7=指令码 输出:无写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0DB7=数据 输出:无读状态 输入:RS=0,RW=1,E=1 输出:DB0DB7=状态字读数据 输入:RS=1,RW=1,E=1 输出:DB0DB7=数据/*/*lcd_1602指令:指令位 D7 D6 D5 D4 D3 D2D1 D0功能设置 0 0 1 DL N F* * DL=1总线8位 DL=0总线4位 N=0显单行 N=1显双行 F=0 5X7点阵 F=1 5X10点阵lcd_1602指令汇总0x28 设置16*2显示,5*7点阵,4位数据接口0x38 设置16*2显示,5*7点阵,8位数据接口0x01 清屏,光标复位到地址00H位置0x02 光标归原点,DDRAM中内容不变,地址计数器AC=0;(此时地址为0x80) 0x0F 开显示,显示光标,光标闪烁0x0e 开显示,显示光标,光标不闪烁0x0c 开显示,不显示光标0x08 只开显示0x06 地址加一,当写入数据的时候光标右移 设定显示屏或光标移动方向指令0x18 字符全部左移一格,但光标不动0x1c 字符全部右移一格,但光标不动0x10 光标左移1格,且AC值减10x14 光标右移1格,且AC值加1*/#include #define dataport P1sbit RS=P2 6;sbit RW=P25;sbit EN=P24;void waitfor() /检测忙信号函数 dataport=0xff; RS=0;RW=1; /选择指令寄存器 读操作 RS=0指令 RS=1数据; RW=0写 RW=1读 EN=1; /使能操作 while(dataport&0x80); /如果最高位是1 表示1602正忙 原地踏步 忙完后芯片会将高位拉低 EN=0;void writedata(unsigned char dataw) /写数据到LCD1602 waitfor(); /测忙 RS=1;RW=0; /选择数据寄存器 写操作 RS=0指令 RS=1数据; RW=0写 RW=1读 dataport=dataw; /将数据送到数据口 EN=1; EN=0; /使能下降沿脉冲void writecmd(unsigned char cmd) /写命令到LCD1602 waitfor(); /测忙 RS=0;RW=0; /选择指令寄存器 写操作 dataport=cmd; /将数据送到数据口 EN=1; EN=0; /使能下降沿脉冲void init(void) / 初始化函数 writecmd(0x38); /功能设定 8位数据传输 双行显示 设置工作方式:0x28=4位总线字符两行显示,0x38=8位总线字符两行显示 writecmd(0x0c); /显示器开关 writecmd(0x01); /清屏 writecmd(0x06); /字符进入模式 每进入一个字符光标向右移动一格 原有字符不动 void location(unsigned char x,unsigned char y) /坐标函数 unsigned char temp; temp=x&0x0f; /只要x数据的后四位 if(y) temp=temp|0x40; /第一行为0 第二行为1 如果y=1则地址加0x40 temp|=0x80; /DDRAM地址的命令DB7为一 writecmd(temp);void DisplayOneChar(unsigned char x,unsigned char y,unsigned char dataw) /显示一个字符函数 location(x,y); writedata(dataw);void displaylistchar(unsigned char x,unsigned char y,unsigned char *p) /显示字符串 while(*p) /当一个字符型数组读完时*P指的为零 displayonechar(x,y,*(p+); x+; void WriteCgram(unsigned char address,unsigned char *p) /写CGRAM的数据 unsigned char i=8; writecmd(address); /CGRAM里的地址 初始值0x40 每次加0x80 while(i-) writedata(*p); p+; void DisplayOneChar(unsigned char x,unsigned char y,unsigned char address,unsigned char *p) /显示一个自定义字符 unsigned char i=8; writecmd(address); /CGRAM里的地址 初始值0x40 每次加0x08 while(i-) writedata(*p); p+; location(x,y); /设定要显示的位置 writedata(address&=0x3f)/0x08); /要从CGRAM中读出数据在1602上显示 搞了半天发现CGRAM里的地址 /和DDRAM里的地址有上面的转换关系void displynumber(unsigned char x,unsigned char y,unsigned long num) /显示一个整数 unsigned int number8; int k,gh; for(k=0;k+) *(number+k)=(unsigned int)(num%10);/强制类型转换 num=num/10; if(num=0)break; for(gh=k;gh=0;gh-) displyonechar(x,y,(*(number+gh)+48); x+; /字型码uchar code nian=0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02;/ 年 uchar code yue=0x0f,0x09,

温馨提示

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

评论

0/150

提交评论