lcd1602使用手册,LCD1602的使用详解http://www.elecfans.com/uploads/allimg/1 | 您所在的位置:网站首页 › 液晶屏是怎么显示的呢视频 › lcd1602使用手册,LCD1602的使用详解http://www.elecfans.com/uploads/allimg/1 |
LCD1602接线图 一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。我手里这块LCD1602的型号是HJ1602A,是绘晶科技公司的产品,它有16条引脚。 LCD1602实物图2、LCD1602的基本操作 1. 读状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。 2. 读数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。 3. 写命令:输入RS=0,RW=0,E=低脉冲。输出:无。(写完置E=高脉冲) 4. 写数据:输入RS=1,RW=0,E=低脉冲。输出:无。 3、分析时序图 (1)写操作(单片机至HD44780) LCD1602写操作时序图 首先要对寄存器的选择和读、写操作选择进行配置。RS是寄存器选择,RS = 1对数据进行操作;RS = 0对指令进行操作。 接着对读写操作选择进行配置,RW = 0 写操作。 打开使能端,输入使能信号 E = 1。 数据总线,对DB0~DB7赋值,进行数据的传输 【注】如果先打开使能,再进行其他配置的话,有可能传输的数据不是自己想要的。 (2)读操作(HD44780至单片机)
LCD1602读操作时序图 显示的位置设置DDRAM 显示的位置设置DDRAM显示模块的指令集,根据自己的显示需要进行相应的配置 显示模块的指令集,根据自己的显示需要进行相应的配置显示在第一行某一列的数据可以写命令:0x80 | 0x,0x80是因为在设置DDRAM地址时,DB7固定是为1的。 LCD1602写入自己的字符及显示汉字 1、由于LCD是外部设备,处理速度比CPU速度慢,向LCD写入命令到完成功能需要一定的时间,在这个过程中,LCD处于忙状态,不能向LCD写入新的内容。LCD是否处于忙状态可以通过读忙标志命令来了解。 用state = LCDPORT来读取IO端口的状态,将state & 0x80来判断LCD是否处于忙状态,若IO口bit7为1,则表示LCD处于忙状态,反之则空闲。 2、要让LCD1602显示自定义字符,就得用到CGRAM指令,CGROM字码表实际只有8个字节可供使用,writecom(0x40)表示将要在CGRAM中写入数据,设置字库CGRAM地址命令是0100 0000. 1602能存储8个自定义字符(即8个字节的使用),这8个自定义字符存储空间的首地址分别是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。 使用时读取自定义字符的地址即为0X40-0X78 对应为 00H-07H。一个地址(如00H)存放1B的一个字符(1B = 8bit,一个字符由8个0x**组成) 如果使用5*7字符的话,那么最左3位和最后一行的数据实际上是没用的,通常置0。 这样我们就得到每个地址需要写入的数据: 地址 : 数据 0x40 : 0x16 0x41 : 0x09 0x42 : 0x08 其他类推。将这8个数据写入到对应地址即可。(有红格子的即为1,白格子即为0) 案例 首先,1602液晶显示屏除了电源、地以外,有3个控制引脚 RS R/W E 和8个数据引脚DB0-7。建议8个数据引脚接在同一组上,程序写起来比较简单。硬件连接参考如图。 LCD1602原理图连接连接上硬件电路,就要写程序了,从名字可以看出来,1602显示两行,每行16个字符,一个字符包含的点阵可以自己设置(后边介绍)。 首先显示内容分为两种,一种是常用字符,存储在CGROM中,用户可以直接调用,另一种是自定义的字符,比如自己设计的一些奇怪的图形之,存储在CGRAM。当时被这两个名词和DDRAM搞得很乱,这里详细解释一下。 DDRAM是显示用的,从RAM可以看出来,是读的意思,地址与显示位置如下,每行40个地址,1602只用到前16个,共两行,对应关系如下。 DDRAM地址与显示位置的对应关系当我们想在指定位置写入内容时,要先指定地址,如在第一行第一位写入,地址位是00H,再加上DB7的1,即80H(0010000000),第二行第一位是40H,再加上DB7的1,即C0H(0011000000),依次类推。 LCD的已有的字模存储在CGROM中,自定义的存储在CGRAM,留给自定义的位置只有8个地址,字模地址为01000000-01000111八个地址,也就是最多自定义8个符号或者图形。 根据这条指令,来写一个摄氏度℃的自定义符号,对应图如下 ℃显示字符对应的数组为table【】={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00},将℃写入指定的位置之前,要先把对应数组写入CGRAM存储,再写入DDRAM显示。如果直接用已有的字符,可以直接把数组写入DDRAM显示。 区分清楚自定义字符和已有字符,程序就简单了。主要步骤是延时函数、写指令、写数据、初始化、主函数。 下面举两个例子,写入常规字符串12345,写入字符串℃。 实操程序一(写入常规字符串12345) #include //包含头文件 #define uint unsigned int //预定义 #define uchar unsigned char sbit rs=P2^6; //1602的数据/指令选择控制线 sbit rw=P2^5; //1602的读写控制线 sbit en=P2^7; //1602的使能控制线 /*P0口接1602的D0~D7*/ uchar code table[]="1234"; //要显示的内容放入数组table void delay(uint n) //延时函数 { uint x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); } void lcd_wcom(uchar com) //1602写命令函数 { rs=0; //选择指令寄存器 rw=0; //选择写 P0=com; //把命令字送入P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,命令送入1602的8位数据口 en=0; } void lcd_wdat(uchar dat) //1602写数据函数 { rs=1; //选择数据寄存器 rw=0; //选择写 P0=dat; //把要显示的数据送入P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,数据送入1602的8位数据口 en=0; } void lcd_init() //1602初始化函数 { lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁 lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位 lcd_wcom(0x01); //清屏 } void main() //主函数 { uchar m=0; lcd_init(); //液晶初始化 lcd_wcom(0x80); //显示地址设为80H(即00H,)上排第一位 for(m=0;m0;x--) for(y=110;y>0;y--); } void lcd_wcom(uchar com) //1602写命令函数 { rs=0; //选择指令寄存器 rw=0; //选择写 P0=com; //把命令字送入P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,命令送入1602的8位数据口 en=0; } void lcd_wdat(uchar dat) //1602写数据函数 { rs=1; //选择数据寄存器 rw=0; //选择写 P0=dat; //把要显示的数据送入P2 delay(5); //延时一小会儿,让1602准备接收数据 en=1; //使能线电平变化,数据送入1602的8位数据口 en=0; } void lcd_init() //1602初始化函数 { lcd_wcom(0x38); //8位数据,双列,5*7字形 lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁 lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位 lcd_wcom(0x01); //清屏 } void main() //主函数 { uchar m; lcd_init(); //液晶初始化 lcd_wcom(0x40);//设定CGRAM地址,把自定义字符存储进去 for(m=0;m |
CopyRight 2018-2019 实验室设备网 版权所有 |