LCD1602液晶显示屏驱动文件
1、LCD1602.h文件,进行管脚定义和函数声明
#ifndef _LCD1602_H_
#define _LCD1602_H_#include <reg52.h>/* 定义单片机的管脚 */
#define LCD1602_DATAPINS P0 //P0口用来发送数据,一整个字节地发送
sbit LCD1602_RS = P2^6; //P26口声明P0口发的是数据还是命令,1为数据,0为命令
sbit LCD1602_RW = P2^5; //P25口声明现在是将数据写入LCD显示屏,还是从LCD读出数据。1为读,0为写
sbit LCD1602_E = P2^7; //P27口为LCD的使能端,高电平有效/* 定义LCD使用4位数据管脚的宏,如果使用4位数据管脚的LCD,就打开下面的注释 */
// #define LCD1602_4DATAPINS/* 函数声明 */
void LCD1602_WriteInstrucion(unsigned char i);
void LCD1602_Init();
void LCD1602_WriteData(unsigned char dat);
void LCD_Delay(unsigned int i);#endif
2、LCD1602.c 驱动程序
#include <LCD1602.H>
#include <intrins.h>/*
*函数名称:LCD_Delay(unsigned char i)
*函数功能:延时函数,延时时间 t = 6i+11 us
*输入: int i ,延时参数
*输出: 无
*/
void LCD_Delay(unsigned int i)
{while(i--);
}/*
*函数名称:LCD1602_WriteInstrucion(unsigned char i)
*函数功能:向LCD1602发送1个字节的命令
*输入: unsigned char i ,需要写入的命令
*输出: 无
*/
#ifndef LCD1602_4DATAPINS
void LCD1602_WriteInstrucion(unsigned char com) //用于8位数据传输的LCD
{LCD1602_E = 0; //使能LCD1602_RS = 0; //声明写命令LCD1602_RW = 0; //声明接下来是写操作LCD1602_DATAPINS = com; //把需要写入的命令放到端口LCD_Delay(200); //y延时约1ms,等待数据稳定,51单片机反应比较慢LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0; //使能端置低电平
}
#else
void LCD1602_WriteInstrucion(unsigned char com) //用于4位数据传输的LCD,4位数据接口接的是P0的高4位
{LCD1602_E = 0; //使能LCD1602_RS = 0; //声明写命令LCD1602_RW = 0; //声明接下来是写操作LCD1602_DATAPINS = com; //*先传高4位,4位数据接口接的是P0的高4位LCD_Delay(200); //等待数据稳定LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0; //使能端置低电平LCD1602_DATAPINS = com<<4; //*再传低4位LCD_Delay(200); //等待数据稳定LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0;
}
#endif/*
*函数名称:LCD1602_WriteData(unsigned char dat)
*函数功能:向LCD1602发送一个字节的显示数据
*输入: unsigned char dat ,需要显示字符的ASCII码
*输出: 无
*/
#ifndef LCD1602_4DATAPINS
void LCD1602_WriteData(unsigned char dat)
{LCD1602_E = 0;LCD1602_RS = 1; //声明写数据LCD1602_RW = 0; //声明接下来是写操作LCD1602_DATAPINS = dat; //把需要写入的命令放到端口LCD_Delay(200); //等待数据稳定LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0;
}
#else
void LCD1602_WriteData(unsigned char dat)
{LCD1602_E = 0;LCD1602_RS = 1; //声明写数据LCD1602_RW = 0; //声明接下来是写操作LCD1602_DATAPINS = dat; //先写高4位LCD_Delay(200); //等待数据稳定LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0;LCD1602_DATAPINS = dat<<4; //再写低4位LCD_Delay(200); //等待数据稳定LCD1602_E = 1; //使能端置高电平_nop_(); //等待一个机器周期,令LCD接收数据LCD1602_E = 0;
}
#endif/*
*函数名称:LCD1602_Init()
*函数功能:LCD1602初始化,配置相关的显示功能和数据传输带宽,具体见注释。其他模式按照PPT设置
*输入: 无
*输出: 无
*/
#ifndef LCD1602_4DATAPINS
void LCD1602_Init()
{LCD1602_E = 0; LCD1602_WriteInstrucion(0x38); //先声明数据总线位数,为8位,屏幕显示两行,5×7点阵每字符LCD_Delay(10); //等待约60us,看芯片手册该命令的执行时间LCD1602_WriteInstrucion(0x0c); //显示功能开,有光标,光标闪烁LCD_Delay(10); LCD1602_WriteInstrucion(0x06); //光标右移,屏幕不滚动显示LCD_Delay(10);LCD1602_WriteInstrucion(0x01); //清屏指令LCD_Delay(400); //等待约2ms,看芯片手册清屏命令的执行时间LCD1602_WriteInstrucion(0x80); //把第一个显示地址定在第一行第一个字符位LCD_Delay(10);
}
#else
void LCD1602_Init()
{LCD1602_E = 0; LCD1602_WriteInstrucion(0x22); //*先声明采用4位数据总线。LCD_Delay(10);LCD1602_WriteInstrucion(0x28); //设置显示行数位两行,5×7点阵每字符LCD_Delay(10);LCD1602_WriteInstrucion(0x0c); //显示功能开,无光标,光标不闪烁LCD_Delay(10); //等待约60us,看芯片手册该命令的执行时间LCD1602_WriteInstrucion(0x06); //光标右移,屏幕不滚动显示LCD_Delay(10);LCD1602_WriteInstrucion(0x01); //清屏指令LCD_Delay(400); //等待约2ms,看芯片手册清屏命令的执行时间LCD1602_WriteInstrucion(0x80); //把第一个显示地址定在第一行第一个字符位LCD_Delay(10);
}
#endif
LCD1602液晶显示屏驱动文件相关推荐
- 外设驱动库开发笔记33:LCD1602液晶显示屏驱动
LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形.在这一章我们就来讨论LCD ...
- LCD1602液晶显示屏模块资料
模块实例https://blog.csdn.net/qq_38393591/article/details/108643827 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符. ...
- 和12岁小同志搞创客开发:如何驱动LCD1602液晶显示屏?
目录 1.简介和驱动原理 2.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/cate ...
- 51单片机——LCD1602液晶显示屏
如下图:红框就是LCD1602液晶显示屏,他是可插拔的,插上去后数码管就会乱码无效了,因为他两共用了MCU的8个P0口 LCD1602原理图 从上面两幅图可以看出来 LCD1602的LCD_D0~LC ...
- STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创
STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创 A0,A1,A2全部悬空,那么PCF8574的IIC地址为0x4e.(具体原因,看PCF ...
- 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...
描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...
- JLX12864G液晶显示屏驱动
晶联迅液晶显示屏驱动 型号:JLX12864G-109 Ver2.0 单片机:STM32F103C8T6(72MHz) 开发平台:STM32CubeMX+Keil 硬件连接: LCD_CS --> ...
- STC89C52单片机 LCD1602液晶显示屏
LCD1602显示 VVcat #include <reg52.h>typedef unsigned char uchar; typedef unsigned int uint;sbit ...
- DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法
它默认会扫描指定文件夹下的所有驱动,但是有时候即使你放到它的驱动文件夹里也不一定能扫出来. 原因有很多种,比如不是常规驱动,或者版本问题等等.这种情况下一般我们都手动添加驱动. 步骤一: 点击 too ...
- Clover 驱动文件夹_四叶草Clover文件夹结构功能+快捷键——墨涩网
四叶草Clover引导主要的作用就是把你普通的PC电脑模拟成一台真实的苹果电脑,他是安装黑苹果的引导工具,是目前使用最多的黑苹果引导方式,当然四叶草Clover也可以引到windows等其他操作系统, ...
最新文章
- 【开源】接口管理平台eoLinker AMS 开源版3.1.5同步线上版!免费增加大量功能!...
- Linux路由界面设置,nuxt中如何配置页面路由
- 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...
- 深入理解C++的动态绑定和静态绑定
- 如何使用RST来解决TCP断开问题
- 谱比法计算岩石的品质因子的c语言程序,地层品质因子计算方法及系统与流程...
- EasyRecovery的高级设置如何使用
- c++获取ctrl+v内容_处理文档时,快捷键「Ctrl+E」的 8 大妙用
- 基于SSM开发的房屋租赁系统 JAVA
- Client network socket disconnected before secure TLS connection was establishedView in Conso
- 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...
- 【opencv-ml】支持向量机简介
- ALive:淘宝双11直播,技术同学却可以“偷懒”?
- 说说我出道后的处女作:剪贴板神器 iPaste
- python operator用法_说说 Python 中的 Operator 模块
- 2022 美亚杯 团体赛AGC部分+资格赛服务器部分 所有服务器部分解题思路
- 2022P气瓶充装判断题及在线模拟考试
- Utorrent 设置
- c 语言解析png图片文件信息,使用CImage加载PNG图片文件
- 滴滴出行开具行程发票用于企业报销