首页 > 编程知识 正文

lcd1602显示,单片机

时间:2023-05-04 03:04:45 阅读:121081 作者:2242

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






版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。