引言
今天偶然发现我的小收纳盒里有一个八段LED显示,那我就灵感突发回忆起我当时学习STM32时的第一天。学习了它我明白了非常多的GPIO的知识以及基础电子元件的使用。
8段LED
话不多说原理图拿上来。
共阴/共阳
首先我来讲解一下大家在买元件时显示的共阳极/共阴极
一块接到GND的叫做共阴极,例如:
黑色框里的是我们的LED里面的一个“段” 我们的IO口提供高电平时,经过电阻,发光二极管导通而发光。这个电阻不是八段LED中的,是为了保护我们的引脚和元件的!所以在使用LED时我们都需要自己接上一个500——1000Ω的电阻!!!!!!(千万要接,二极管导通后相当于一根导线直接帮你短路,然后你就能闻到元件的体香了)
那么共阳极就肯定是,LED直接接到VCC端(老元件时5V,现在买到的基本都是3.3V),记得发光二极管的方向一定要变一下!
引脚定义
位选
3引脚接GND,8引脚接VCC时你的LED显像管才可以被点亮,这就是位选。我这么说你可能还是一知半解,那么我再详细点,如果你这个是3位的LED显像管,一下可以显示3个数字,那么你需要先将第一位的显像管的第八引脚的电平拉高,其他显像管的八号引脚拉低(选位)。再将我们需要的数字写入!循环这样的操作将三个位填满。
那么我们在操作时该如何写呢!进入代码学习。
选位代码
我们以共阴极为例,引脚输出高电平点亮(包括后面的教程都使用共阴极)。我们将八号引脚接到GPIOC_Pin_0端。
我不喜欢使用GPIO库里的函数,因为太依赖库会使自己对C++的熟练度大大降低!!
这里我着重讲讲我们的速度不能为50Hz,这个速度会使自己的LED显示出来的数字频闪,自己可以去试试,在探索中进步。
通过以上代码我们成功实现了使GPIOC的引脚0输出高电平,实现了选位!
选段
当我们打开LED显示后我们该如何显示我们所需要的数字呢,这就是选段的任务。
一定记得要在IO口与LED显像管之间加入一个电阻哈,我们也是控制IO口输出高电平(共阳极为低电平)来控制显示的数字。【知识点dp表示高位截至代表我们的引脚从低位到高位分别是a,b,c,d,e,f,g,dp】
八个引脚控制数字显示,那么就需要查看你的元件手册了。我也是翻了好久才找到。
来给你举个例子哈,我要显示“1”,我就需要设置为二进制的0000 0000 0000 0110
a | 0 |
b | 1 |
c | 1 |
d | 0 |
e | 0 |
f | 0 |
g | 0 |
dp | 0 |
选段代码
我们选取GPIOC的8-15引脚。其他同上!
这样就可以显示“1”了。
封装
我们每次都这么写就把我们给累死了。所以我们干脆将这些数字封装起来。
记得加上const。zimaku[ ]如果出现指针错误里面的值就会改变,会使显示错误。加上const就会使zimaku[ ]转换成常量存入FLASH中!!! 保证值不会突变。
zimaku[0]就是“0”.zimaku[i]就是“i”。
作业
如果我们是四位八段LED,我们选择PC0-3为控制位,PC8-15为控制段。要求可以显示变量var=124。需要有设计图以及代码图。写完需要检查@我。