单片机外设LCD1602液晶屏的介绍

时间:2024-03-26 16:23:56

LCDLiquid CrystalDisplay):液晶显示器的缩写,一种被动式的显示器,即液晶本身并不发光,而是经液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。

  液晶显示器具有功耗低、抗干扰能力强等优点,广泛用在仪器仪表和控制系统中。

 

LCD的分类:

按排列形状分:字段型、点阵字符型和点阵图形。

字段型:广泛用于电子表、数字仪表、计算器中。

点阵字符型: 显示字母、数字、符号。它是由5×75×4点阵组成,广泛应用在单片机应用系统中。

点阵图形型:笔记本电脑和彩色电视等设备中。

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔 起到了字符间距和行间距的作用

 

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶

接口电路示例

单片机外设LCD1602液晶屏的介绍

1脚:VSS为地电源。

2脚:VDD5V正电源。

3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,

      对比度过高时会产生鬼影,使用时可以通过一个10K的电位器调整对比度。

4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSR/W

      同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读

      忙信号,当RS为高电平R/W为低电平时可以写入数据。

6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

714脚:D0D78位双向数据线。

15脚:背光源正极。

16脚:背光源负极。

 

LCD1602的写操作时序:

单片机外设LCD1602液晶屏的介绍


单片机外设LCD1602液晶屏的介绍


单片机外设LCD1602液晶屏的介绍单片机外设LCD1602液晶屏的介绍


LCD1602代码模板

#define DataPort P0

sbit RS = P2^4;   //定义端口

sbit RW = P2^5;

sbit EN = P2^6;

 

void LCD_Write_Com(uchar dat) //写命令函数

{

   DelayMs(5);

        RS = 0;

        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代表填充域的第一个字符,是“℃”符号。