需要用的LCD1602;
一.LCD1602模块简介
是一种工业字符型液晶,16列2行.
引脚:VSS为电源地GND;VDD为电源正极5V;RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器;R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同 为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当 RS为高电平R/W为低电平时可以写入数据;E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;D0~D7为8位双向数据线;
二. 代码功能实现
lcd.h
#include "lcd.h"
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //选择发送命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择输入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //写入数据
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
void LcdInit()
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0xC0); //设置数据指针起点
}
lcd.h
#ifndef __LCD_H_
#define __LCD_H_
#include<reg52.h>
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^6;
sbit LCD1602_RS=P2^5;
void Lcd1602_Delay1ms(uint c);
void LcdWriteCom(uchar com);
void LcdWriteData(uchar dat);
void LcdInit();
#endif
main.c
#include "reg52.h"
#include "lcd.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8 Disp[]=" hello work! ";
u8 Disp2[]=" 2024-05-20 ";
void main(void)
{
u8 i,j;
LcdInit();
LcdWriteCom(0x80); //设置数据指针起点
for(i=0;i<16;i++)
{
LcdWriteData(Disp[i]);
}
LcdWriteCom(0xC0); //设置数据指针起点
for(j=0;j<16;j++)
{
LcdWriteData(Disp2[j]);
}
while(1);
}
三.总结
以上就是液晶屏的功能实现.