1602的使用方法及3个代码.docx_第1页
1602的使用方法及3个代码.docx_第2页
1602的使用方法及3个代码.docx_第3页
1602的使用方法及3个代码.docx_第4页
1602的使用方法及3个代码.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1.接口信号说明1602型液晶接口信号说明如表7.2.1所示2.主要技术参数(见表7.2.2)3.基本操作时序4.RAM地址映射图 控制器内部有80B的RAM缓冲区,对应关系如图7.2.1所示。 当我们向图7.2.1中的00-0F、40-4F地址中的任一处写入显示数据时,液晶都可立即显示出来,当写入10-27或50-67地址处时,必须通过移屏指令将他们移入可显示区域方可正常显示,滚动显示字符就是利用这个特性。5.状态字说明表(见表7.2.3) 注意:原则上每次对控制器进行读/写操作之前,都必须进行读写检测,确保STA7为0.实际上,由于单片机的操作慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行短暂的延时即可。6.数据指针设置控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80B的RAM,如图7.2.4所示。7.其他设置(见表7.2.5)8.初始化设置(1)显示模式初始化设置(见表7.2.6)(2)显示开/关及光标设置(见表7.2.7)9.写操作时序(见图7.2.2)分析操作时序图可操作1602液晶的流程如下:(1)通过RS确定是写数据还是写命令,写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容。(2)读/写控制设置为写模式,即低电平。(3)将数据或命令送达数据线上。(4)将E一个高脉冲将数据送入液晶控制器,完成写操作。1602显示数字程序(显示1,2,3,4,5)/*程序功能:在1602液晶上显示1 2 3 4 5*/#include typedef unsigned char uchar; typedef unsigned int uint;sbit beep = P15; /定义蜂鸣器端口 sbit LCD_RS = P26; sbit LCD_RW = P25;sbit LCD_EP = P27;uchar code table = 1 2 3 4 5;void delay(uint xms) / 延时函数uint i,j;for(i = xms;i 0;i-)for(j = 110;j 0;j-);void lcd_wcmd(uchar cmd) / 写入指令数据到LCDLCD_RS = 0;LCD_RW = 0;LCD_EP = 0; P0 = cmd;delay(10);LCD_EP = 1;delay(10);LCD_EP = 0; void lcd_wdata(uchar dat) /写入字符显示数据到LCDLCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;delay(10);LCD_EP = 1;delay(10);LCD_EP = 0; void lcd_init() /LCD初始化设定初始化函数 lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0c); /设置开显示,不显示光标delay(1);lcd_wcmd(0x06); /写一个字符后地址指针加1delay(1);lcd_wcmd(0x01); /显示清0,数据指针清0delay(1);void main()uchar i;beep = 0;/蜂鸣器默认处于开启状态,所以关闭它lcd_init(); /LCD初始化delay(10);lcd_wcmd(0x80); /设置显示位置为第一行的第1个字符while(table i != 0) /显示字符1 2 3 4 5 lcd_wdata(tablei); i+; delay(200); /控制两字之间显示速度 while(1);字样滚动显示程序/*程序功能:在1602液晶上滚动显示字样*/#include typedef unsigned char uchar; typedef unsigned int uint;sbit beep = P15; / 定义蜂鸣器端口 sbit LCD_RS = P26; / 数据/命令选择端(H/L) sbit LCD_RW = P25; / 读写选择端(1/0)sbit LCD_EP = P27; / 使能信号uchar code table1 = Hello to world;uchar code table2 = Hello to life ;void delay(uint xms) / 延时函数uint i,j;for(i = xms;i 0;i-)for(j = 110;j 0;j-);/*/ /* /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /* /*/ void lcd_wcmd(uchar cmd) / 写入指令数据到LCD/while(lcd_bz();LCD_RS = 0;LCD_RW = 0;LCD_EP = 0; P0 = cmd;delay(1);LCD_EP = 1;delay(1);LCD_EP = 0; /*/ /* /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /* /*/ void lcd_wdata(uchar dat) /写入字符显示数据到LCD/while(lcd_bz();LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;delay(1);LCD_EP = 1;delay(1);LCD_EP = 0; void lcd_init() /LCD初始化设定初始化函数 lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0c); /设置开显示,不显示光标delay(1);lcd_wcmd(0x06); /写一个字符后地址指针加1delay(1);lcd_wcmd(0x01); /显示清0,数据指针清0delay(1);void main()uchar i;beep = 0;/蜂鸣器默认处于开启状态,所以关闭它lcd_init(); /LCD初始化delay(10);while(1)lcd_wcmd(0x01); /清屏i = 0;lcd_wcmd(0x80+0x10); /第1行第17列(屏幕之外,不显示)while(table1i != 0) /写入Hello to world lcd_wdata(table1i); i+; i = 0;lcd_wcmd(0x80+0x50); /第1行第17列(屏幕之外,不显示)while(table2i != 0) /写入Hello to life lcd_wdata(table2i); i+; i = 0;for(i = 0;i 30;i+) /向左移动30格 lcd_wcmd(0x18); /全屏字符同时左移一格,写在屏幕外的字符慢慢显示出来 delay(800); /控制移动时间 综合实验三:按键控制1602显示/*此程序功能:按下4个按键可在1602液晶上显示不同字样*/#include /52系列单片机头文件typedef unsigned char uchar; typedef unsigned int uint;sbit LCD_RS = P26; / 数据/命令选择端(H/L) sbit LCD_RW = P25; / 读写选择端(1/0)sbit LCD_EP = P27; / 使能信号sbit key1 = P32; /定义按键端口sbit key2 = P33; sbit key3 = P34; sbit key4 = P35; sbit beep = P15; /定义蜂鸣器端口 uchar code table1 = You Press Key1;uchar code table2 = You Press Key2;uchar code table3 = You Press Key3;uchar code table4 = You Press Key4;uchar i;void delay(uint xms) / 延时函数uint i,j;for(i = xms;i 0;i-)for(j = 110;j 0;j-);/*/ /* /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /* /*/ void lcd_wcmd(uchar cmd) / 写入指令数据到LCDLCD_RS = 0;LCD_RW = 0;LCD_EP = 0; P0 = cmd;delay(1);LCD_EP = 1;delay(1);LCD_EP = 0; /*/ /* /*写显示数据到LCD /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 /* /*/ void lcd_wdata(uchar dat) /写入字符显示数据到LCDLCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;delay(1);LCD_EP = 1;delay(1);LCD_EP = 0; void lcd_init() /LCD初始化设定初始化函数 lcd_wcmd(0x38); /16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0c); /设置开显示,不显示光标delay(1);lcd_wcmd(0x06); /写一个字符后地址指针加1delay(1);lcd_wcmd(0x01); /显示清0,数据指针清0delay(1);void keyscan() /按键扫描,根据扫描到的不同按键在1602上显示不同字样if(key1 = 0)delay(10); /利用软件延时坚决按键过程中的抖动问题lcd_wcmd(0x01); /清屏if(key1 = 0)while(!key1); /等待按键释放i = 0;lcd_wcmd(0x80); /第1行第1列while(table1i != 0) /按键1对应的字样 lcd_wdata(table1i); i+; if(key2=0)delay(10); /延时消抖lcd_wcmd(0x01); /清屏if(key2 = 0)while(!key2);i = 0;lcd_wcmd(0x80+0x40); /第2行第1列while(table2i != 0) /按键1对应的字样 lcd_wdata(table2i); i+; if(key3 = 0)delay(10);lcd_wcmd(0x01); /清屏if(key3 = 0)while(!key3);i = 0;lcd_wcmd(0x80); /第1行第1列while(table3i != 0) /按键1对应的字样 lcd_wdata(table3i); i+; if(key

温馨提示

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

评论

0/150

提交评论