液晶LCD1602驱动代码

液晶LCD1602驱动代码
液晶LCD1602简介
LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。为了降低成本,绝大多数制造商都直接将裸片做到板子上。
各引脚的功能介绍如下。 1、引脚1:VSS 为地电源。 2、引脚2
:VDD 接5V 正电源。
3、引脚3:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”现象,使用时可以通过一个10kQ 的电位器调整其对比度。
4、引脚4:RS 为寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器。
5、引脚5:R/W 为读/写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W 共同为低电平时可以写入指令或显示地址;当RS 为低电平,R/W 为高电平时,可以读忙信号;当RS 为高电平,R/W 为低电平时,可以写入数据。
6、引脚6:E 端为使能端,当E 端由高电平跳变为低电平时,液晶模块执行命令。
7、引脚7~14:D0~D7为8位双向数据线。 8、引脚15:背光源正极。 9、引脚16:背光源负极。
液晶LCD1602驱动源代码
/***********************LCD驱动基本代码***********************
*  单片机:51单片机
*  开发环境:keil uVision3
*  名称:1602驱动基本代码
**************************************************************/
#include<reg51.h>                    //包含头文件
#include<intrins.h>
#define LCD_Data P0
#define Busy 0x80
sbit LCD_RS = P1^0;
sbit LCD_RW = P1^1;
sbit LCD_E  = P2^5;
unsigned char code welcome[] = {"YOU ARE WELCOME"};
unsigned char code mcu[] = {"SL-51A"};
void Delay5Ms(void);
void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void Info_display(void);
/*************************5ms延时函数***************************/
void Delay5Ms(void)
{
unsigned int TempCyc = 3552;
while(TempCyc--);
}
/**************************写数据函数***************************/
void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD();                    //检测忙
LCD_Data = WDLCD;
LCD_E = 0;                          //若晶振速度太高可以在这后加小的延时 LCD_E = 0;                          //延时
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 1;
LCD_E = 0;
}
/*************************写指令函数****************************/
void WriteCommandLCD(unsigned char WCLCD,BuysC)  //BuysC为0时忽略忙检测{
琴谱架if (BuysC) ReadStatusLCD();                    //根据需要检测忙
LCD_Data = WCLCD;
LCD_E = 0;
LCD_E = 0;
LCD_RS = 0;
LCD_RW = 0;
LCD_E = 1;
LCD_E = 0;
}
/**************************读状态函数***************************/ unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;电脑视保屏
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
双面胶贴
LCD_E = 1;
while (LCD_Data & Busy);                //检测忙信号
return(LCD_Data);
}
/***************************LCD初始化***************************/
void LCDInit(void)                    //LCD初始化
{
LCD_Data = 0;
WriteCommandLCD(0x38,0);              //三次显示模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();
WriteCommandLCD(0x38,1);              //显示模式设置, 开始要求每次检测忙信
WriteCommandLCD(0x08,1);              //关闭显示
WriteCommandLCD(0x01,1);              //显示清屏
WriteCommandLCD(0x06,1);              //显示光标移动设置
WriteCommandLCD(0x0C,1);              //显示开及光标设置
服务器部署}
/**********************按指定位置显示一个字符*********************/
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF;                              //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40;                      //当要显示第二行时地址码+0x40;
X |= 0x80;                            //算出指令码
WriteCommandLCD(X, 0);                //这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}
/***********************按指定位置显示一串字符********************/
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF;                                  //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20)            //若到达字串尾则退出
{
if (X <= 0xF)                            //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
ListLength++;
X++;
堵漏工具}
}
座便器结构}

本文发布于:2024-09-23 15:18:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/257274.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:显示   驱动   低电平   液晶   字符
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议