17.[STM32]仅用三根线带你驱动LCD1602液晶

🍌🍌
作者简介:大家好啊,我叫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.数字电子技术基础 

资料已上传,需要自取

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依点_DW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值