LCD1602作为常见的并口数据屏幕,因为驱动简单,相较数码管可以显示更多的内容,所以应用很多,当然了,不及LCD单色液晶屏和彩色LCD屏,可以操控每个像素点。
这里分享的是2个IO口驱动LCD1602,当前市面上是有这样的方案的,不过用的是IIC芯片扩展IO口,本质上还是增加了IO口数量。当然了,移位寄存器也是扩展IO口,这里扩展的是输出类型。
回归正题,原理图,时序图如下,具体的原理分析,可以阅读原文,观看视频。
主要函数代码,此代码用于STC8单片机,其他单片机可能需要修改部分内容,尤其是延时部分,LCD1602数据处理需要时间,延时不够,是会出问题的。
底层驱动函数
//LCD1602写入数据或指令
//0指令,1数据
void LCD1602_Write_Data(bit CD,u8 dat)
{
u8 i;
//先传输高4位
//第一步,低电平
for(i=0;i< 6;i++)
{
HC164_CP=0;
HC164_DI=0;//先传输最高位;
HC164_CP=1;
}
HC164_CP=0;
HC164_DI=1;//E高电平
HC164_CP=1;
HC164_CP=0;
HC164_DI=CD;//传输命令位
HC164_CP=1;
for(i=0;i< 4;i++)//传输数据高4位
{
HC164_CP=0;
HC164_DI=dat&0x80;//先传输最高位;
HC164_CP=1;
dat< <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收数据
//如果DI=0;那么此时DI=1;DI=0即可
//如果DI=1;那么DI=0即可
//传输低4位数据,操作同上
for(i=0;i< 6;i++)
{
HC164_CP=0;
HC164_DI=0;
HC164_CP=1;
}
HC164_CP=0;
HC164_DI=1;//E高电平
HC164_CP=1;
HC164_CP=0;
HC164_DI=CD;//传输命令位
HC164_CP=1;
//这里的移位可以接着传输
for(i=0;i< 4;i++)//传输低4位数据
{
HC164_CP=0;
HC164_DI=dat&0x80;//先传输高位;
HC164_CP=1;
dat< <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收数据
}
延时函数
void Delay100us() //@24.000MHz
{
unsigned char i, j;
i = 4;
j = 27;
do
{
while (--j);
} while (--i);
}
//测试600us延时能用
void LCD1602_Delay()
{
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
}
初始化代码
void LCD1602_Init()//LCD1602初始化
{
LCD1602_Write_Data(0,0x02);//光标复位
LCD1602_Delay();
LCD1602_Write_Data(0,0x28);//四位总线,双行显示
LCD1602_Delay();
LCD1602_Write_Data(0,0x01);//清除显示
LCD1602_Delay();
LCD1602_Write_Data(0,0x06);//光标移动方向
LCD1602_Delay();
LCD1602_Write_Data(0,0x0c);//整体显示开,无光标
LCD1602_Delay();
LCD1602_Write_Data(0,0x14);//光标随着字右移
LCD1602_Delay();
}
以上代码差不多了,工程代码分享到粉丝群了,公众号后台可以加粉丝群下载。
PCB工程分享,此工程本人没有测试打样。
总结:使用74HC164+与门,2个IO口就能控制LCD1602了,但是驱动效率低一些。没有74HC595的3线控制快。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6001文章
43973浏览量
620834 -
lcd
+关注
关注
34文章
4278浏览量
164097 -
数码管
+关注
关注
31文章
1827浏览量
89948 -
LCD1602
+关注
关注
14文章
606浏览量
51937 -
IO口
+关注
关注
3文章
164浏览量
23756
发布评论请先 登录
相关推荐
51单片机仅用SDA,SCL两个口怎样控制IIC LCD1602显示
` 本帖最后由 763439226 于 2013-8-3 12:04 编辑
各位发烧友们,请帮个忙看看啊,手里有一IIC LCD模块,用的是PCF8574T控制LCD1602,51单片机
发表于 08-03 12:02
51单片机lcd1602程序详解
51单片机lcd1602程序详解,LCD1602是我们常用的一种显示屏,一直想写一些关于元器件的介绍和使用。今天就来从LCD1602开始。
发表于 07-19 09:20
LCD1602什么意思?
一行可以显示16个字符,一共有两行。现在我们来看看如何使用简单的IO控制和延时来实现操作LCD1602液晶模块。既然是用单片机控制LCD1602
发表于 07-21 09:24
熟悉LCD1602与单片机的电路连接
一、实验目的:(一)熟悉 LCD1602 与单片机的电路连接;(二)熟悉 LCD1602 的引脚功能;(三)掌握 LCD1602 的时序;(四)掌握
发表于 11-18 06:23
基于51单片机的LCD1602四数据线驱动程序,LCD1602单片机驱动程序
基于51单片机的LCD1602四数据线驱动程序,LCD1602单片机驱动程序
单片机:LCD1602 的应用实验
一、实验目的:(一)熟悉 LCD1602 与单片机的电路连接;(二)熟悉 LCD1602 的引脚功能;(三)掌握 LCD1602 的时序;(四)掌握
发表于 11-11 15:21
•16次下载
51单片机驱动——LCD1602
51单片机驱动——LCD16021.描述51单片机控制LCD1602屏幕显示测量数据、固定字符串等,大家复制过去可以直接使用,相关注释我已标
发表于 11-21 09:06
•22次下载
51单片机 LCD1602驱动显示(模板)+Proteus
51单片机 LCD1602驱动显示(模板)+Proteus本项目工程篇,只展示LCD1602驱动显示,不涉及其他外设
发表于 11-23 17:06
•30次下载
评论