当前位置:网站首页>17.[STM32]仅用三根线带你驱动LCD1602液晶
17.[STM32]仅用三根线带你驱动LCD1602液晶
2022-07-05 15:18:00 【依点_DW】
作者简介:大家好啊,我叫DW,每天分享一些我新学到的知识,期待和大家一起进步
系列专栏:STM32
小实验目标:三线驱动LCD1602液晶
如有写得不好的地方欢迎大家指正开发板:正点原子STM32F103Mini版
创作时间:2022年6月4日
不管是串行方式驱动LCD1602液晶还是并行方式驱动LCD1602液晶,都会占用STM32过多的IO口,那么有没有什么方式可以减少单片机IO口的使用呢?答案是有的。
我们可以把两片74HC595芯片以级联的方式驱动LCD1602,该方式只用到单片机的3个IO口就可以驱动LCD1602了。
在四位数码管的文章中已经详细介绍了74HC595这块芯片的使用方法,详细介绍见文章:15.[STM32]一篇文章教会你使用75HC595芯片驱动四位数码管
在该文章的基础上添加上一个写字节的函数。
写字节函数
//写字节函数
void LCD1602_Write_Byte(u8 dat,u8 dat1){
for(u8 i=0;i<8;i++){
((dat<<i)&0x80) ? DIO_High:DIO_Low;
SCK_High;
SCK_Low;
}
for(u8 i=0;i<8;i++){
((dat1<<i)&0x80) ? DIO_High:DIO_Low;
SCK_High;
SCK_Low;
}
RCK_High;
RCK_Low;
}
提示:两块74HC595采取级联方式,故需要发送两次数据。
接下来编写一个写指令和写数据的函数,该函数是本次例程的重点。我们需要写的是8位数据,但是我们只用到位:RS、RW、EN(对应位0~2),位3~7为0。
当我们需要写数据时E、RW、RS为:001,故需要写的指令为0000 0001(0x01)接下来需要将数据写到总线上,当E为高电平时数据会送到液晶内部,故需要写的指令为:0000 0101(0x05),之后需要释放EN,故需要重新写0x01;
当我们需要写指令时E、RW、RS为:000,故需要写的指令为0000 0000(0x00),接下来需要将指令写到总线上,当E为高电平时数据会送到液晶内部,故需要写的指令为:0000 0100(0x04),之后需要释放EN,故需要重新写0x00;
写指令和写数据的函数
void LCD1602_Write_Cmd_Data(u8 cmd,u8 data){
if(cmd){ //1 数据
LCD1602_Write_Byte(data,0x01); //0000 0001 // E = 0 RW = 0 RS = 1
delay_ms(3);
LCD1602_Write_Byte(data,0x05); //0000 0101 // E = 1 RW = 0 RS = 1
delay_ms(3);
LCD1602_Write_Byte(data,0x01); //0000 0001 // E = 0 RW = 0 RS = 1
}
else{ //0 指令
LCD1602_Write_Byte(data,0x00); //0000 0000 // E = 0 RW = 0 RS = 0
delay_ms(3);
LCD1602_Write_Byte(data,0x04); //0000 0100 // E = 1 RW = 0 RS = 0
delay_ms(3);
LCD1602_Write_Byte(data,0x00); //0000 0000 // E = 0 RW = 0 RS = 0
}
}
提示:
RS = 1:写数据 RS = 0:写指令
RW = 1:读操作 RW = 1:写操作
EN:读操作高有效 EN:高有效
接下来看硬件连接图吧。
第一片74HC595芯片的11、12、14引脚分别与单片机的PB0~PB2相连,74HC595的15、1、2引脚和LCD1602的RS、R/W、E引脚相连 。
第二片74HC595芯片的QA~QH引脚与LCD1602的D0~D7相连。
提示:
第一块芯片的9引脚和第二块芯片的14引脚相互连接
两块芯片的RCK、SCK相互连接
我们把上一篇DS18B20的文章的例程添加进去,就可以在LCD1602上显示温度了,大家一起来看看实验结果图吧。
今天的分享就到这里,谢谢大家的耐心阅读,如果觉得有用的话给个
本章结束,我们下一章见
参考资料:
1.STM32固件库手册
2.正点原子STM32不完全手册_库函数版本
3.参考视频
4.数字电子技术基础
资料已上传,需要自取
边栏推荐
- Bugku cyberpunk
- RepLKNet:不是大卷积不好,而是卷积不够大,31x31卷积了解一下 | CVPR 2022
- Hongmeng system -- Analysis from the perspective of business
- Detailed explanation of QT creator breakpoint debugger
- 做研究无人咨询、与学生不交心,UNC助理教授两年教职挣扎史
- What are CSRF, XSS, SQL injection, DDoS attack and timing attack respectively and how to prevent them (PHP interview theory question)
- F. Min cost string problem solving Report
- 数学建模之层次分析法(含MATLAB代码)
- Data communication foundation OSPF Foundation
- Optional parameters in the for loop
猜你喜欢
社区团购撤城“后遗症”
Common MySQL interview questions
[brief notes] solve the problem of IDE golang code red and error reporting
Data communication foundation OSPF Foundation
F. Min cost string problem solving Report
Nine hours, nine people, nine doors problem solving Report
keep-alive
Explanation report of the explosion
Data communication foundation smart_ Link_&_ Monitor_ Link
【简记】解决IDE golang 代码飘红报错
随机推荐
Common redis data types and application scenarios
Severlet learning foundation
Bubble sort, insert sort
F. Min cost string problem solving Report
Advanced level of static and extern
Write a go program with vscode in one article
Noi / 1.5 37: mercenaries
lvgl 显示图片示例
Memo 00
go学习 ------jwt的相关知识
Bugku's Ah Da
Bugku's Eval
mapper.xml文件中的注释
Common MySQL interview questions (1) (written MySQL interview questions)
vulnhub-Root_ this_ box
ICML 2022 | explore the best architecture and training method of language model
CSRF, XSS science popularization and defense
Appium自动化测试基础 — APPium基础操作API(一)
Redis distributed lock principle and its implementation with PHP (1)
sql server学习笔记