美文网首页
2020-03-27/驱动LCD1602

2020-03-27/驱动LCD1602

作者: LH大牛 | 来源:发表于2020-03-29 16:45 被阅读0次

两天没有写了,原因有二:1.嵌入式课程开始了;2。被i²c总线难住了;
对于i²c总线来说,不适合先学,因为看不懂时序图,所以先学LCD1602;
—————————————————————————————————————————————
LCD1602点亮显示
1602 液晶一共 16 个引脚


1602引脚tu

LCD时序图:


LCD时序图
时序要求时间

对LCD1602 点亮操作步骤
1.初始化:
包括初始化设定使能信号位低电平,对于R/W的选择,对于 RS的初始化
2.写命令:给定起始地址,设置显示坐标
3.写数据:RS=H;

LCD几个指令:
1.开启显示,固定0x38;

点亮LCD程序:
主函数

#include <reg51.h>
#include <lcd.h>

//1.initialize 2.write commond 3.write data

char Dis []="this is lcd1602";
int main()
{
    int i;
    LCD_inti(); //initialize
    for(i=0;i<16;i++)
    {
        LCD_writedata(Dis[i]);//write data 
    }
    while(1);
    return 0;
}

LCD1602函数:

#include<reg51.h>
#include "lcd.h"

void dalay1ms(int c)//delay function;0ms error
{
    int a,b;
    for (; c>0; c--)
    {
         for (b=199;b>0;b--)
         {
            for(a=1;a>0;a--);
         }      
    }   
}
void LCD_writecom(char com) //write commod
{
    LCD1602_E=0;//使能E,开始时拉低
    LCD1602_RS=0;//先择命令模式
    LCD1602_RW=0;//选择写模式
    Write_nu=com;//写的内容为调用时的实参
    dalay1ms(1);//tsp2:数据建立时间
    
    LCD1602_E=1;//拉高使能,进入vilia data;
    dalay1ms(5);//tpw,脉冲宽度,保持高电平
    LCD1602_E=0;//发送完,拉低
}

void LCD_writedata(char dat)
{
    LCD1602_E=0;
    LCD1602_RS=1;
    LCD1602_RW=0;
    Write_nu=dat;//传入调用时的实参dat
    dalay1ms(1);
    
    LCD1602_E=1;
    dalay1ms(5);
    LCD1602_E=0;
}

void LCD_inti()
{
    LCD_writecom(0x38);//固定模式0x38会打开显示屏
    LCD_writecom(0X0C);//打开显示,设置光标闪烁等其他显示
    LCD_writecom(0x06);//每次写一个数据,指针加1;
    LCD_writecom(0x01);//清屏幕,准备写入
    LCD_writecom(0x85);//设置起始地址
}

lcd 的头文件

#include<reg51.h>

#define Write_nu P0
sbit LCD1602_E = P2^7;
sbit LCD1602_RW = P2^5;
sbit LCD1602_RS = P2^6;

void dalay1ms(int c);
void LCD_inti();
void LCD_writecom(char com);
void LCD_writedata(char dat);

—————————————————————————————————————————————
实现LCD 滚动效果:

相关文章

网友评论

      本文标题:2020-03-27/驱动LCD1602

      本文链接:https://www.haomeiwen.com/subject/avpluhtx.html