嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > 双十一不孤独,小巴陪你搞技术-STM32驱动1602时钟

双十一不孤独,小巴陪你搞技术-STM32驱动1602时钟

好久都没有更新微信公众号了,今日闲暇,搞了一个1602的时钟,特此分享给大家,共同学习。废话就不多说了

咱们先来看看LCD1602的引脚

1602的引脚十分简单,三根信号线,8跟数据线,两根背光电源线,一个背光调节线,在上表中也解释的很详细,对于1602的引脚就介绍到这里


下面主要来看看它的时序图,分为“写时序”和“读时序”


写时序

由时序图可知,写指令时,EN引脚需要一个下降沿,RS = 0;RW = 0;

故我们的写指令函数可以这样写:



读时序

同理:根据时序图我们可以写出写数据的函数





读写操作都配置好以后我们来看一下如何初始化LCD1602

在初始化之前呢,我们还是要先来看看1602的指令集,看懂了指令集才知道如何去配置


先举个“栗”子:

如果我们想要对1602进行清屏操作的话,根据指令集我们改发送什么指令呢

在1602的数据手册上就找到了他的指令集,如下图,清屏指令

知道这个以后有啥用呢,怎么实现清屏呢


这个就需要用我们刚写的写指令函数,for exampl:

LCD_1602_WriteCmd(0x01);//清屏

写入0x01就可以啦,


同样我们还可以配置1602显示方式,移屏、光标闪烁等操作,根据指令集都可以实现

只要按照提示就可以配置1602


下面分享一下lcd1602的初始化函数(可以根据个人喜好配置)我这里配置成不移屏显示



完成后我们就可以向1602写数据啦


LCD_1602_WriteCmd(0x80);//光标定位到第一行第0列,故0x81就是第一列

LCD_1602_WriteCmd(0xC0);//光标定位到第二行第0列,故0xC1就是第一列


比如我们想往1602的第一行最后一列写入一个字符“!”

我们的程序就可以这么写

LCD_1602_WriteCmd(0x8F);//光标定位到第一行最后一列

LCD_1602_WriteDat('!'); //显示‘!’


如果想显示一个数的话,需要来点骚操作

LCD_1602_WriteCmd(0x80);//光标定位到第一行第0列

LCD_1602_WriteDat(0x30 + dat); //显示dat数据

因为我们要显示的数是ASCII码,当要显示显示数字时,必须要加上0x30,不过还可以这样写:LCD_1602_WriteDat(‘0’+dat);这两种方式是一样的


写字符和写数据都说完啦,大家感兴趣可以试一下如何写一个字符串,自己定义一个子函数,往1602里写入一个字符串,这就可以用指针,有兴趣的可以研究一下


下一节分享基于Stm32的上位机控制步进电机的程序