1602液晶显示屏显示A
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1602液晶显示屏显示
一、1602液晶显示屏简介
液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。
本文以常见的1602CD模块为例,介绍该模块的简单使用。1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。
该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。本文将使用Atmega16并采用四位数据方式来控制1602。
1.1 1602封装尺寸图
1.2 1602外观如下图所示
1.3 1602引脚说明
注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明)。
VDD:电源正极,4.5-5.5V,通常使用5V电压;
VL:LCD对比度调节端,电压调节范围为0-5V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;
RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;
R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;
E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。
D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;
BLA: LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;
BLK: LED背光地端。
1.4 1602操作时序
(1)读操作时序
(2)写操作时序
(3)基本操作时序
二、实例
2.1 proteus仿真
2.2 程序
*LCD.h文件------------------------------------------------------------- LCD引脚定义
1---GND
2---VCC
3---VO
4---RS
5---RW
6---EN
7到14--D0-D7
15--背景灯+
16--背景灯-
-----------------------------------------------------------------*/
#include
#include
/*---------------------------------------------------------------
下面是AVR与LCD连接信息
PA2 ->RS
PA3 ->EN
地 ->RW
PA4 ->D4
PA5 ->D5
PA6 ->D6
PA7 ->D7
要使用本驱动,改变下面配置信息即可
-----------------------------------------------------------------*/
#define LCD_EN_PORT PORTA //以下2个要设为同一个口
#define LCD_EN_DDR DDRA
#define LCD_RS_PORT PORTA //以下2个要设为同一个口
#define LCD_RS_DDR DDRA
#define LCD_DATA_PORT PORTA //以下3个要设为同一个口
#define LCD_DATA_DDR DDRA //一定要用高4位
#define LCD_DATA_PIN PINA
#define LCD_RS (1< #define LCD_EN (1< #define LCD_DATA ((1< /*------------------------------------------------------------------------------ 函数说明 ------------------------------------------------------------------------------*/ void LCD_init(void); void LCD_en_write(void); void LCD_write_command(unsigned char command) ; void LCD_write_data(unsigned char data); void LCD_set_xy (unsigned char x, unsigned char y); void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s); void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data); void delay_nus(unsigned int n); void delay_nms(unsigned int n); =============================================================== =============== #include "LCD.h" void LCD_init(void) //液晶初始化 { LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出 LCD_EN_DDR|=LCD_EN; //设置EN方向为输出 LCD_RS_DDR|=LCD_RS; //设置RS方向为输出 LCD_write_command(0x28); LCD_en_write(); delay_nus(40); LCD_write_command(0x28); //4位显示 LCD_write_command(0x0c); //显示开 LCD_write_command(0x01); //清屏 delay_nms(2);