51单片机驱动LCD1602显示原理及例程
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显示原理及例程相关推荐
- 基于51单片机的LCD1602显示温湿度
51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...
- 51单片机驱动——LCD1602
51单片机驱动--LCD1602 1.描述 51单片机控制LCD1602屏幕显示测量数据.固定字符串等,大家复制过去可以直接使用,相关注释我已标明. 2.子文件 LCD1602.c #include ...
- 51单片机+驱动LCD1602模板范例+Proteus仿真
51单片机+驱动LCD1602模板范例+Proteus仿真 本示例可以作为驱动LCD1602屏幕模板来调用或使用,方便移植到其他需要使用到LCD1602显示上的工程项目当中.所以示例不涉及过多其他的代 ...
- 【Proteus仿真】51单片机+DS1302+lcd1602显示
[Proteus仿真]51单片机+DS1302+lcd1602显示 Proteus仿真 工程架构 项目工程 文件结构 主程序代码 #include <reg52.h> #include & ...
- 程序源码分享-51单片机用LCD1602显示MPU6050角度数据
硬件方面选择的是51单片机,显示屏LCD1602,姿态传感器MPU6050的型号为维特智能的JY60,具体设计思路见笔者的文章基于单片机的云台姿态测量系统设计. STM32将mpu6050的数据DAC ...
- 51单片机使用LCD1602显示DS18B20温度传感器温度
使用LCD1602显示DS18B20温度传感器温度.关于DS18B20和LCD的原理,我就不再叙述了,大家自行查找,网上可以找到好多. 使用Proteus仿真.(需要仿真和Keil工程文件的可 ...
- 【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
LCD1602显示字符和时间是最基本的实验,在综合前面所学知识并结合c语言程序设计,就可以通过独立按键,来对时间进行校准,计时等功能.或者通过矩阵键盘的按键进行输入,进而让LCD屏上显示的出我们想要的 ...
- 40、基于51单片机收音机 LCD1602显示系统设计
摘要 本文在具体分析了STC89C52单片机的技术特点与数字FM收音机的基础上,提出了采用单片机控制收音机实现数字调频的方法,并给出了具体的软硬件设计.该系统利主要由STC89C52单片机.液晶显示器 ...
- C51单片机驱动LCD1602显示字符串
之前做了好多外设,都只是玩玩,并不曾记录一下,时间久了,竟也都忘记了,周末无事,重新写了一下LCD1602的驱动函数,给有需要的人做一个参考: 硬件电路: 其中,RS:P1.0 RW:P1.1 EN: ...
- 51单片机用lcd1602显示两行字符串
本人打算写一个完整的万年历:这是开始的第一步 完整电路图: 完整代码: #include <reg51.h> #include <intrins.h> //包含_nop_( ) ...
最新文章
- 填报表中也可以添加 html 事件
- 计算机公共课考试试题,2019-度公共课计算机应用基础考试试题附答案.doc
- 计算机课真多,为什么有这么多的学习资源和在线课程,依然无法提升自己的能力...
- 解决springboot不扫描@repository的问题
- 开始Unity3D参观考察
- 监听localStorage变化(同页面监听)
- centos 生产 ssh-key
- truncate python是删除文件内容吗_在Python中操作文件之truncate()方法的使用教程
- [转]数据中心网络虚拟化 隧道技术
- Firefox 97.0.2 修复两个已遭利用的0day
- IOS开发基础知识--碎片14
- paper 108:系统学习数字图像处理之图像复原与重建
- 随机信号分析基础——例题篇(例题3.4)
- VLAN Trunk
- java房屋租赁系统-房东租客系统PHP小程序
- “Flash闪存”基础 及 “SD NAND Flash”产品的测试
- 林赛登《花花公子》后桃花旺 与神秘男车场约会_0
- 科学家揭开宿醉原因:酒后身体缺水导致
- 百变小鹿机器人金鸡奖登场,成为首个走上红毯的机器人
- 【IJCAI 2020】如何看待 IJCAI 2020 summary reject阶段拒稿近一半?
热门文章
- 软件使用疑难杂症解决记录篇——科瑞工程量计算簿
- 学完计算机绘图收获有哪些,概率论与数理统计热合买提江网课参考答案查询,画法几何及土木工程制图计算机绘图...
- java输出日志_Java日志打印方法
- java 服务器程序部署环境搭建
- SP 梦网masterSP模式下的sp生存
- linux 合并多个文本文件到一个文件*.txt1.txt,合并多个文本文件方法
- [译] 移动应用设计新趋势
- my ReadBook_wangluoyingxiaoyucehua / network marketing / wangluoyingxiao
- 通达信公式编写初中高级全套教程(附:通达信全部函数表)
- Linux学习基础一 【安装 目录 系统命令 常用vim操作】