51单片机驱动LCD1602显示原理及例程

  • 1.LCD1602A介绍
  • 2.LCD1602A中文手册 下载
  • 3.LCD1602A接线
  • 4. 51单片机使用lcd1602A显示例程

1.LCD1602A介绍


①LCD1602A 可以显示两行字符,一行显示16个;
②只能显示数字和字母(5X7的点阵)不能显示汉字;
③每个字符之间有间隔;
④引脚图

2.LCD1602A中文手册 下载

3.LCD1602A接线

4. 51单片机使用lcd1602A显示例程

lcd1602A.c文件▼

#include "lcd1602A.h"
#include "reg51.h"
/*******************************************************************************
* 函 数 名         : Lcd1602_Delay1ms
* 函数功能         : 延时函数,延时1ms
* 输    入         : c
* 输    出         : 无
* 说    名         : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/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--);}      }}/*******************************************************************************
* 函 数 名         : LcdWriteCom
* 函数功能         : 向LCD写入一个字节的命令
* 输    入         : com
* 输    出         : 无
*******************************************************************************/
#ifndef     LCD1602_4PINS    //当没有定义这个LCD1602_4PINS时
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;
}
#else
void LcdWriteCom(uchar com)   //写入命令
{LCD1602_E = 0;     //使能清零LCD1602_RS = 0;  //选择写入命令LCD1602_RW = 0;    //选择写入LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;     //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = com << 4; //发送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1;     //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 数 名         : LcdWriteData
* 函数功能         : 向LCD写入一个字节的数据
* 输    入         : dat
* 输    出         : 无
*******************************************************************************/
#ifndef     LCD1602_4PINS
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;
}
#else
void LcdWriteData(uchar dat)            //写入数据
{LCD1602_E = 0;      //使能清零LCD1602_RS = 1;      //选择写入数据LCD1602_RW = 0;    //选择写入LCD1602_DATAPINS = dat;    //由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1;      //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; //写入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1;     //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 数 名       : LcdInit()
* 函数功能       : 初始化LCD屏
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/
#ifndef     LCD1602_4PINS
void LcdInit()                        //LCD初始化子程序
{LcdWriteCom(0x38);  //开显示LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0x80);  //设置数据指针起点
}
#else
void LcdInit()                        //LCD初始化子程序
{LcdWriteCom(0x32);  //将8位总线转为4位总线LcdWriteCom(0x28);     //在四位线下的初始化LcdWriteCom(0x0c);  //开显示不显示光标LcdWriteCom(0x06);  //写一个指针加1LcdWriteCom(0x01);  //清屏LcdWriteCom(0x80);  //设置数据指针起点
}
#endif

lcd1602A.h 文件▼

22#ifndef __LCD1602A_H_
#define __LCD1602A_H_
#include<reg52.h>//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endif
//io口定义
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;//函数声明
void Lcd1602_Delay1ms(uint c);   //在51单片机12MHZ时钟下的延时函数 误差 0us
void LcdWriteCom(uchar com);     //LCD1602写入8位命令子函数
void LcdWriteData(uchar dat);   //LCD1602写入8位数据子函数
void LcdInit();     //LCD1602初始化子程序
#endif

把上面两个文件放到项目更目录里面。在要显示的文件里面包含 lcd1602A.h 这个头文件,然后调用 lcd1602A.h 里面的函数就可以使用了。

51单片机驱动LCD1602显示原理及例程相关推荐

  1. 基于51单片机的LCD1602显示温湿度

    51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...

  2. 51单片机驱动——LCD1602

    51单片机驱动--LCD1602 1.描述 51单片机控制LCD1602屏幕显示测量数据.固定字符串等,大家复制过去可以直接使用,相关注释我已标明. 2.子文件 LCD1602.c #include ...

  3. 51单片机+驱动LCD1602模板范例+Proteus仿真

    51单片机+驱动LCD1602模板范例+Proteus仿真 本示例可以作为驱动LCD1602屏幕模板来调用或使用,方便移植到其他需要使用到LCD1602显示上的工程项目当中.所以示例不涉及过多其他的代 ...

  4. 【Proteus仿真】51单片机+DS1302+lcd1602显示

    [Proteus仿真]51单片机+DS1302+lcd1602显示 Proteus仿真 工程架构 项目工程 文件结构 主程序代码 #include <reg52.h> #include & ...

  5. 程序源码分享-51单片机用LCD1602显示MPU6050角度数据

    硬件方面选择的是51单片机,显示屏LCD1602,姿态传感器MPU6050的型号为维特智能的JY60,具体设计思路见笔者的文章基于单片机的云台姿态测量系统设计. STM32将mpu6050的数据DAC ...

  6. 51单片机使用LCD1602显示DS18B20温度传感器温度

      使用LCD1602显示DS18B20温度传感器温度.关于DS18B20和LCD的原理,我就不再叙述了,大家自行查找,网上可以找到好多.   使用Proteus仿真.(需要仿真和Keil工程文件的可 ...

  7. 【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。

    LCD1602显示字符和时间是最基本的实验,在综合前面所学知识并结合c语言程序设计,就可以通过独立按键,来对时间进行校准,计时等功能.或者通过矩阵键盘的按键进行输入,进而让LCD屏上显示的出我们想要的 ...

  8. 40、基于51单片机收音机 LCD1602显示系统设计

    摘要 本文在具体分析了STC89C52单片机的技术特点与数字FM收音机的基础上,提出了采用单片机控制收音机实现数字调频的方法,并给出了具体的软硬件设计.该系统利主要由STC89C52单片机.液晶显示器 ...

  9. C51单片机驱动LCD1602显示字符串

    之前做了好多外设,都只是玩玩,并不曾记录一下,时间久了,竟也都忘记了,周末无事,重新写了一下LCD1602的驱动函数,给有需要的人做一个参考: 硬件电路: 其中,RS:P1.0 RW:P1.1 EN: ...

  10. 51单片机用lcd1602显示两行字符串

    本人打算写一个完整的万年历:这是开始的第一步 完整电路图: 完整代码: #include <reg51.h> #include <intrins.h> //包含_nop_( ) ...

最新文章

  1. 填报表中也可以添加 html 事件
  2. 计算机公共课考试试题,2019-度公共课计算机应用基础考试试题附答案.doc
  3. 计算机课真多,为什么有这么多的学习资源和在线课程,依然无法提升自己的能力...
  4. 解决springboot不扫描@repository的问题
  5. 开始Unity3D参观考察
  6. 监听localStorage变化(同页面监听)
  7. centos 生产 ssh-key
  8. truncate python是删除文件内容吗_在Python中操作文件之truncate()方法的使用教程
  9. [转]数据中心网络虚拟化 隧道技术
  10. Firefox 97.0.2 修复两个已遭利用的0day
  11. IOS开发基础知识--碎片14
  12. paper 108:系统学习数字图像处理之图像复原与重建
  13. 随机信号分析基础——例题篇(例题3.4)
  14. VLAN Trunk
  15. java房屋租赁系统-房东租客系统PHP小程序
  16. “Flash闪存”基础 及 “SD NAND Flash”产品的测试
  17. 林赛登《花花公子》后桃花旺 与神秘男车场约会_0
  18. 科学家揭开宿醉原因:酒后身体缺水导致
  19. 百变小鹿机器人金鸡奖登场,成为首个走上红毯的机器人
  20. 【IJCAI 2020】如何看待 IJCAI 2020 summary reject阶段拒稿近一半?

热门文章

  1. 软件使用疑难杂症解决记录篇——科瑞工程量计算簿
  2. 学完计算机绘图收获有哪些,概率论与数理统计热合买提江网课参考答案查询,画法几何及土木工程制图计算机绘图...
  3. java输出日志_Java日志打印方法
  4. java 服务器程序部署环境搭建
  5. SP 梦网masterSP模式下的sp生存
  6. linux 合并多个文本文件到一个文件*.txt1.txt,合并多个文本文件方法
  7. [译] 移动应用设计新趋势
  8. my ReadBook_wangluoyingxiaoyucehua / network marketing / wangluoyingxiao
  9. 通达信公式编写初中高级全套教程(附:通达信全部函数表)
  10. Linux学习基础一 【安装 目录 系统命令 常用vim操作】