八位数码管+流水灯(BSP版本)
因为不是专业的单片机专家,所以既然提供了带有BSP库的版本,自然就用BSP版本。这里介绍一下BSP版本的代码。
文件说明
文件的主题部分如上图,除了main函数以外,我们看到STC15F2K60S2.H
和前面一样是端口的地址定义的头文件
然后是displayer.h
头文件,
这一部分就是显示功能的相关接口,STC单片机上的显示主要是数码管和LED灯。
DisplayerInit
是显示模块初始化函数,会对对应的函数的硬件,以及相关针脚进行初始化,具体可以看看前面的博文,就是作P0、P2端口等以及其他相关寄存器的初始化SetDisplayerArea
是设置有效显示区域,根据[begin, end]设置数码管显示范围。如果begin = 0,end = 7,显示的就是所有的数码管。但是范围不仅仅是这样,如果你的end大于7,比如是255,这也是能够正常工作的,只是硬件地址只有0-7,但是其他的无效地址会消耗一定的时间,这样总体显示时间变长了,由于是动态扫描的,所以8个有效数码管显示会出现闪烁,亮度下降的现象。Seg7Print
参数是输入8个要显示的数据,这个可以根据输入的参数作为在decode_table[]
中的索引,可以显示对应灯管的组合LedPrint
控制8个数码管开关,一个位对应一个数码管,1是亮,0是暗。
还有一个文件是sys.h
,这个是用来执行系统级别的操作,旨在对于用户以及系统的事件做出响应
上面是系统相关的函数,注释写的很清楚,主要是初始化系统,并且定义了事件,以及响应事件的函数。这里不详细展开,用到的时候再进行说明。
上面头文件涉及的函数,在STCBSP_V3.6.LIB
静态库中进行定义,因此可以直接使用。
主函数逻辑说明
main.c
中需要将SysClock
设置成和下载的IRC
一样的频率
1 | /* 显示数码管和LED等需要的头文件,其中前面两个是必须的 */ |
C语言版本
整体和上一个版本差不多,这里不做赘述。
1 | /********************** |