单片机(三)__lcd1602显示屏

来源:互联网 发布:java工程师岗位工作 编辑:程序博客网 时间:2024/05/04 12:33

lcd显示屏,大家可以上找一下相关手册,我这边不细讲,它的写时序图:

根据时序图,我们可以写出程序:

void lcd_write(unsigned char byte,unsigned char flag)//
{
      if(flag)
        {
              RS = 1;
    }
        else
        {
              RS = 0;
    }
        RW = 0;//д
        E = 1;  //Ñ¡ÖÐlcd
        LCDPORT = byte;//
        delay_us(5);
        E = 0;
}

它写进去的东西分两种,一个是各种数字符号之类的,还有一种是命令。


void lcd_dis_char(unsigned char x,unsigned char y,unsigned char byte)//显示一个字符
{    
      if((x > 15) || (y > 1))//lcd1602一行只有15个位置可以写数字符号
        {
              return ;
    }
        if(0 == y)
        {
              lcd_write(0x80 + x,LCD_WRITE_COM);//lcd第一行的地址是从0x80开始
    }
        else
        {
              lcd_write(0x80 + 0x40 + x,LCD_WRITE_COM);//lcd第二行地址是从0x80+0x40开始
        
    }
      
       lcd_write(byte,LCD_WRITE_DATA);//写数据
}


上面写入一个字节,注意注释,下面看一下显示字符串。

void lcd_str(unsigned char x,unsigned char y,unsigned char *s)//显示字符串
{
      if((x > 15) || (y > 1))
        {
              return ;
    }
        if(0 == y)//只有两行
        {
              lcd_write(0x80 + x,LCD_WRITE_COM);
    }
        else
        {
              lcd_write(0x80 + 0x40 + x,LCD_WRITE_COM);
        
    }
        while(*s != '\0')
        {
        lcd_write(*s,LCD_WRITE_DATA);
        s++;            
    }
}


下面我们再来看一下lcd的初始化,根据手册就可知道:

根据手册我们可知:

void lcd_init()//lcd 初始化
{
      delay_ms(15);
      lcd_write(0x38,LCD_WRITE_COM);//
      delay_ms(5);
      lcd_write(0x38,LCD_WRITE_COM);//
      delay_ms(5);
      lcd_write(0x38,LCD_WRITE_COM);//
      delay_ms(5);
      lcd_write(0x38,LCD_WRITE_COM);//
    delay_ms(5);
      lcd_write(0x08,LCD_WRITE_COM);//
    delay_ms(5);
      lcd_write(0x01,LCD_WRITE_COM);
      delay_ms(5);
      lcd_write(0x06,LCD_WRITE_COM);
      delay_ms(5);
    lcd_write(0x0c,LCD_WRITE_COM);
    delay_ms(5);
}


到此,差不多lcd都讲完了,还有一些命令的含义,请大家自己查看lcd1602手册,若还有疑问,很高兴和大家讨论。

0 0
原创粉丝点击