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液晶显示屏驱动文件相关推荐

  1. 外设驱动库开发笔记33:LCD1602液晶显示屏驱动

      LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形.在这一章我们就来讨论LCD ...

  2. LCD1602液晶显示屏模块资料

    模块实例https://blog.csdn.net/qq_38393591/article/details/108643827 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符. ...

  3. 和12岁小同志搞创客开发:如何驱动LCD1602液晶显示屏?

     目录 1.简介和驱动原理 2.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/cate ...

  4. 51单片机——LCD1602液晶显示屏

    如下图:红框就是LCD1602液晶显示屏,他是可插拔的,插上去后数码管就会乱码无效了,因为他两共用了MCU的8个P0口 LCD1602原理图 从上面两幅图可以看出来 LCD1602的LCD_D0~LC ...

  5. STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创

    STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创 A0,A1,A2全部悬空,那么PCF8574的IIC地址为0x4e.(具体原因,看PCF ...

  6. 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...

    描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...

  7. JLX12864G液晶显示屏驱动

    晶联迅液晶显示屏驱动 型号:JLX12864G-109 Ver2.0 单片机:STM32F103C8T6(72MHz) 开发平台:STM32CubeMX+Keil 硬件连接: LCD_CS --> ...

  8. STC89C52单片机 LCD1602液晶显示屏

    LCD1602显示 VVcat #include <reg52.h>typedef unsigned char uchar; typedef unsigned int uint;sbit ...

  9. DbVisualizer 数据库连接工具:添加数据库驱动方法。dbvis搜索不到驱动文件夹下的驱动解决方法

    它默认会扫描指定文件夹下的所有驱动,但是有时候即使你放到它的驱动文件夹里也不一定能扫出来. 原因有很多种,比如不是常规驱动,或者版本问题等等.这种情况下一般我们都手动添加驱动. 步骤一: 点击 too ...

  10. Clover 驱动文件夹_四叶草Clover文件夹结构功能+快捷键——墨涩网

    四叶草Clover引导主要的作用就是把你普通的PC电脑模拟成一台真实的苹果电脑,他是安装黑苹果的引导工具,是目前使用最多的黑苹果引导方式,当然四叶草Clover也可以引到windows等其他操作系统, ...

最新文章

  1. 【开源】接口管理平台eoLinker AMS 开源版3.1.5同步线上版!免费增加大量功能!...
  2. Linux路由界面设置,nuxt中如何配置页面路由
  3. 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...
  4. 深入理解C++的动态绑定和静态绑定
  5. 如何使用RST来解决TCP断开问题
  6. 谱比法计算岩石的品质因子的c语言程序,地层品质因子计算方法及系统与流程...
  7. EasyRecovery的高级设置如何使用
  8. c++获取ctrl+v内容_处理文档时,快捷键「Ctrl+E」的 8 大妙用
  9. 基于SSM开发的房屋租赁系统 JAVA
  10. Client network socket disconnected before secure TLS connection was establishedView in Conso
  11. 华为手机一直android,华为手机内存不够用?这5个文件夹常清理,可以腾出近10个G内存...
  12. 【opencv-ml】支持向量机简介
  13. ALive:淘宝双11直播,技术同学却可以“偷懒”?
  14. 说说我出道后的处女作:剪贴板神器 iPaste
  15. python operator用法_说说 Python 中的 Operator 模块
  16. 2022 美亚杯 团体赛AGC部分+资格赛服务器部分 所有服务器部分解题思路
  17. 2022P气瓶充装判断题及在线模拟考试
  18. Utorrent 设置
  19. c 语言解析png图片文件信息,使用CImage加载PNG图片文件
  20. 滴滴出行开具行程发票用于企业报销

热门文章

  1. TMS320C6678+Kintex-7开发板——DSP程序固化操作手册
  2. DbgView 显示OutputDebugString 输出内容 不能显示问题总结
  3. 基于STM32的串口通信详解
  4. 关于BT.709标准
  5. 将Word转换成Pdf
  6. matlab sqrtm,zz矩阵开方sqrt()和sqrtm()的区别
  7. 《编译原理及实践教程》第一章学习笔记
  8. html按钮调用php函数,如何在html按钮上执行php函数点击
  9. 大学计算机实践教程在线阅读,计算机基础实践教程.pdf
  10. 实时IP语音通信流程简介