我在高职教STM32——LCD液晶显示(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。 对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正因如此,才有了借助 CSDN 平台寻求认同感和成就感 的想法。在这里,**我准备陆续把自己花了很多心思的教学设计分享出来,主要面向广大师生朋友,**单片机老鸟就略过吧。欢迎点赞+关注,各位的支持是本人持续输出的动力,多谢多谢!


前边我们讲解了LED、按键和蜂鸣器的应用,这三类器件本身工作原理十分简单,因此我们的重点是放在STM32的GPIO上面。这一章我们来学习一下开发板配套的那块厚厚的液晶屏------LCD1602,聚焦的是这个器件本身的特点和工作时序。 因此,我们需要熟读它的数据手册,因为手册里告诉了编程的要点、参数、时序等。阅读器件手册是做单片机和嵌入式开发必备的基本能力, 我们就从这一章开始锻炼起来吧。为了不让篇幅太长,本章打算分四个部分来讲解,本文是第一部分。

【学习目标】

  1. 了解LCD1602的工作原理
  2. 掌握LCD1602的工作时序
  3. 领悟软件模拟时序的思路和方法

一、观察外部认识LCD1602

大家学习这些电子器件,头脑中要逐渐形成一种意识,不管是强大复杂的STM32,还是简单的LED、三极管等等,都是有数据手册的。不管是设计电路还是编写程序,器件的数据手册是我们最好的参考资料。LCD1602的数据手册大家可以在网上很方便的找到,这里我们只挑手册的重点讲。

1.1 产品外观

图1所示的就是LCD1602的正面和背面,从它的名字我们就可以看出它的显示容量,就是可以显示2行,每行16个字符的液晶。至于它为什么那么厚,因为它不单纯是块屏,屏下还集成了驱动电路、背光电路以及显示RAM。
图1 LCD1602的产品外观

1.2 电气参数

接着来看它主要的技术参数,如下表所示。表中有两个地方需要解释一下:第一,LCD1602最佳工作电压是5.0V,而STM32的工作电压是3.3V,这就意味着它们不能共用一组电源 。第二,在5V工作电压下测量它的工作电流是2mA,这仅仅是指液晶消耗的电流,而它的背光是用LED做的,所以功耗不会太小,一二十毫安还是有的。基于这两方面的需求,当连接LCD1602时,我们需要使用配套的电源适配器,并接到开发板DC5V的插座上,如图2所示。
表1 LCD1602的主要技术参数
图2 使用电源适配器给LCD1602供电

1.3 硬件接口

LCD1602一共16个引脚(编号已在图1中标出),每个引脚的功能,我们都可以在它的数据手册上找到。而这些基本的信息,在我们设计电路和编写代码之前,必须先看明白,如表2所示。
表2 LCD1602引脚功能

1.3.1 电源和背光

电源1脚2脚以及背光电源15脚16脚,不用多说,正常接就可以了,1脚和16脚接地,2脚和15脚接5V电源。

1.3.2 显示偏压

3脚叫做显示偏压信号。大家注意到屏里的小黑块没有,如图3所示,当我们要显示一个字符的时候,有的黑点显示,有的黑点就不能显示,这样就可以实现我们想要的字符了。
图3 液晶屏的点阵字符

3脚就是用来调整显示的黑点和不显示的之间的对比度,调整好了对比度,就可以让我们的显示更加清晰一些。在进行电路设计实验的时候,通常的办法是在这个引脚上接个电位器。通过调整电位器的分压值,来调整3脚的电压。而当产品批量生产的时候,我们可以把调好的阻值直接用简单电路来实现。观察我们开发板上LCD1602部分的原理图4,就直接使用了一个4.7K的定值电阻。
图4 开发板上的LCD1602原理图

1.3.3 数据/命令选择端口

4脚是数据/命令选择端。对于液晶,**有时候我们要发送一些命令,让它实现我们想要的一些状态,有时候我们要发给它一些数据,让它显示出来,**液晶就通过这个引脚来判断接收到的是命令还是数据。大家注意学会读手册,看到这个引脚描述里:数据/命令选择端,而后跟了(H/L)。它的意思就是当这个引脚是H(High)高电平时,是数据;当这个引脚是L(Low)低电平的时候,是命令。

1.3.4 读/写选择端

5脚和4脚用法类似,功能是读/写选择端。我们既可以写给液晶数据或者命令,也可以读取液晶内部的数据或状态,就是控制这个引脚。因为液晶本身内部有RAM,实际上我们送给液晶的命令或者数据,液晶需要先保存在缓存里,然后再写到内部的寄存器或者RAM中,这个就需要一定的时间。所以我们进行**读写操作之前,首先要读一下液晶当前状态,是不是在"忙",**如果不忙,我们可以读写数据,如果在"忙",我们就需要等待液晶忙完了,再进行操作。读状态是常用的,不过读液晶数据很少用,大家了解这个功能即可。

1.3.5 使能信号

6脚是使能信号,很关键,液晶的读写命令和数据,都要靠它才能正常读写,我们后边结合时序再详细讲这个引脚怎么用。

1.3.6 数据端口

7到14脚就是8个数据引脚了,我们就是通过这8个引脚读写数据和命令的。最后来看一下LCD1602与STM32引脚连接的原理图和实物图,分别如图5和6所示。
图5 引脚连接原理图
图6 实物连接

关于LCD1602与STM32连接的端口,需要注意以下三个问题:

第一,RS接的是PC6,RW接的是PA11,使能E接的是PC3,8位数据端口由高到低依次连接的是PC2 ~ PC0、PB9 ~ PB5,也就是说我们在做端口初始化的时候需要分别对GPIOA、GPIOB、GPIOC进行初始化配置。

第二,由于8位数据端口占了GPIOC的3位和GPIOB的5位,因此我们在读写数据的时候需要**分别读写这两组I/O口指定位上的数据,再把两组数据组合起来。**在编程时涉及了多处C语言的位操作,请大家后面阅读代码时注意。

第三,使能E连接的是PB4,而STM32在复位时,PA13/14/15 & PB3/4这些引脚默认配置为JTAG功能。这里我们只是把PB4当做普通I/O口来用,即禁用JTAG功能。因此,我们在对GPIO进行初始化的时候,需要额外再做两项配置,如代码清单1所示。
代码清单1 初始化GPIO的额外配置

(第一部分完,共四部分)

相关推荐
LateBloomer7771 小时前
FreeRTOS——信号量
笔记·stm32·学习·freertos
wenchm2 小时前
细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法
stm32·单片机·嵌入式硬件
编码追梦人3 小时前
如何实现单片机的安全启动和安全固件更新
单片机
电子工程师UP学堂3 小时前
电子应用设计方案-16:智能闹钟系统方案设计
单片机·嵌入式硬件
飞凌嵌入式3 小时前
飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
人工智能·嵌入式硬件·嵌入式·risc-v·飞凌嵌入式
blessing。。5 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
嵌新程6 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012306 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
电工小王(全国可飞)6 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件
maxiumII7 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件