开发平台:STM32codeMX、keil5。
仿真平台:proteus 8.15
芯片型号:STM32F103C8T6
第一个项目:共阳极七段数码管显示数字98
原理图:电阻为1K
思路:
第一步:数码管观察与供电
首先,仔细观察七段数码管的结构。这个数码管有两个控制端口,分别标记为1和2。这两个端口的作用是控制数码管的供电。通过给这两个端口供电,数码管就能够亮起,显示出相应的数字。
第二步:输入端与显示分组
接着,注意到数码管的输入端只有一个,但数码管上显示的是两组数字。这意味着我们需要一种方法来轮流控制两组数字的显示。由于只有一个输入端,我们需要通过延时的方式,先开启一组数字的显示,等待一段时间后关闭,然后再开启另一组数字的显示。
第三步:实现显示的循环过程
基于以上观察,我们可以得出实现数字显示的具体步骤如下:
- 首先开启控制端口1,为第一组数字提供供电。
- 在第一组数字显示后,立即清空显示内容,然后关闭端口1的供电。
- 紧接着开启控制端口2,为第二组数字提供供电。
- 在第二组数字显示后,同样清空显示内容,并关闭端口2的供电。
- 重复上述步骤,形成一个循环。在这个循环中,端口1和端口2交替开启和关闭,从而轮流控制两组数字的显示,实现连续的数字显示效果。
操作流程:
-
新建工程:
- 打开STM32CubeMX软件。
- 在菜单栏中找到“File”选项,点击“New project”来创建一个新的项目。
- 在弹出的窗口中,选择STM32F103C8T6作为你的目标芯片。
-
配置端口:
- 进入“RCC”(Reset and Clock Control)配置界面。
- 根据你的原理图,配置HSE(High Speed External)和LSE(Low Speed External)时钟源。如果原理图中没有这两个时钟源,则选择第三个选项。
- 在“System Core”配置中,选择“sys--Debug(serial Wire)”。
- 切换到“Pinout view”页面,将PA0到PA7以及PB0和PB1的引脚设置为GPIO输出模式。
- 在GPIO配置界面,依次给这些引脚命名为A、B、C、D、E、F、G、DP、K1、K2。
-
保存工程:
- 在“Project Manager”中,设置项目名称为“LED”。
- 选择项目保存的文件夹位置。
- 在“Toolchain”部分,选择“MDK”作为IDE,并选择最小版本V5。
- 勾选“Code generator”选项,确保只生成必要的库文件。
- 勾选“Generate peripheral initialization as a pair of .c/.h”文件,这样会生成相应的初始化代码文件。
- 点击“GENERATE CODE”按钮,生成项目代码。
-
打开工程:
- 生成代码后,关闭STM32CubeMX。
- 在你的IDE中打开刚刚生成的工程文件。
-
编写程序:
- 在主函数
main()
中,找到while(1)
循环部分。 - 在这个循环内,添加以下代码段:
- 在主函数