液晶显示器(LCD )液晶显示器的缩写,液晶本身不发光,可以通过处理液晶来改变光的通过方向,是以白地黑字或黑地白字显示为目的的无源型显示器。
液晶显示器具有低功耗、抗干扰能力强等优点,广泛应用于仪器仪表和控制系统中。
液晶屏分类:
根据数组形状的不同,可以分为字段类型、点阵字符类型和点阵图形。
字段类型:广泛用于电子表、数字表、计算器。
点阵字符类型:显示字母、数字和符号。 它由57或54光栅组成,广泛应用于单片机应用系统中。
圆点图案型:位于笔记本电脑和彩色电视机等设备中。
1602液晶也被称为1602字符型液晶,是专门用于显示文字、数字、符号等的点矩阵型液晶模块,构成有5X7和5X11等几个点矩阵字符位,每个点矩阵字符位能够显示一个字符各行之间有点间的间隔,各行之间也有间隔,起到文字间隔和行间的作用
16X2液晶屏表示显示的内容为16X2,每行可显示两行16个字符的液晶模块(显示字符和数字)。 目前市面上的文字液晶大部分基于HD44780液晶芯片,控制原理完全相同,所以基于HD44780编写的控制程序很容易适用于市面上大部分的文字型液晶
接口电路示例
第一条腿: VSS是接地电源。
针2 )将正极电源5V连接到VDD。
(引脚3 ) VL是液晶显示器的对比度调整端,与正电源连接时对比度最弱,接地时对比度最高,
对比度过高时会产生“重影”,但一个10K的卷就可以调整对比度。
引脚4 ) RS选择寄存器,高电平时选择数据寄存器,低电平时选择指令寄存器。
(引脚) R/W为读写信号线,高电平时进行读取动作,低电平时进行写入动作。 RS和R/W都是
在相同l电平时可以写入命令或显示地址,在RS为l电平的R/W为h电平时可以读出
繁忙信号可以在RS为高电平且R/W为低电平时写入数据。
(引脚) e端子为使能端子,e端子从高电平跳到低电平时,液晶模块执行命令。
第7~14针: D0~D7是8位双向数据线。
第15脚:背光正极。
第16条腿:背光负极。
LCD1602的写入定时:
LCD1602代码模板
#定义数据端口P0
sbit RS=P2^4; 定义//端口
sbit RW=P2^5;
sbit EN=P2^6;
voidLCD_write_com(uchardat ) /写入命令函数
{
dlayms(5;
RS=0;
0px"> RW = 0;DataPort= dat;
EN = 0;
_nop_();
_nop_();
EN= 1;
}
void LCDWRITEDAT(uchar dat) //写数据函数
{
DelayMs(5);
RS = 1;
RW = 0;
DataPort= dat;
EN = 0;
_nop_();
_nop_();
EN= 1;
}
void LCDwritestring(uchar x,uchar y,uchar*s) //写字符串s函数
{
if(y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xc0 + x);
}
while(*s)
{
LCDWRITEDAT(*s);
s++;
}
}
void LCDINIT() /初始化函数
{
DelayMs(15);
LCD_Write_Com(0x38); /*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x38); /*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x38); /*显示模式设置*/
DelayMs(5);
LCD_Write_Com(0x08); //关显示
DelayMs(5);
LCD_Write_Com(0x01); /*显示清屏*/
DelayMs(5);
LCD_Write_Com(0x06); //指针自加
DelayMs(5);
LCD_Write_Com(0x0c); /*显示光标移动设置*/
DelayMs(5);
}
int main()
{
LCDINIT();
LCD_Write_Com(0x88); //在第一行第8个位置
LCDWRITEDAT(‘a’); //显示字符a;
LCDwritestring(0,1,”Hello World!”); //在第二行第0个位置起显示“Hello World!”字符串
扩展:LCD1602扩展功能
uchar tflag[8] = {0x01,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //℃
void LCD_FILLCGRAM(void) //在自定义第一个字符填充℃符号
//{
// int i = 0;
// LCD_Write_Com(0x40);
// for(i=0;i<8;i++)
// {
// LCDWRITEDAT(tflag[i]);
// }
//}
voidLCD_Show_CGRAM(uchar x,uchar y,uchar dat) //在第y行的第x位置显示位置为//dat的字符
//{
// if(y == 0)
// {
// LCD_Write_Com(0x80 + x);
// }
// else
// {
// LCD_Write_Com(0xc0 + x);
// }
// LCDWRITEDAT(dat);
//}
LCD_Show_CGRAM(3,1,0); //0代表填充域的第一个字符,是“℃”符号。