串行数码管显示模块是以MAX7219芯片来控制8位的7段数码管,它在芯片内部集成了一个B型的BCD码编码多路扫描回路、段字驱动器。而且还含有一个8*8的静态RAM来存储显示数据,且有一个外部寄存器用来设置各LED的段电流。它也同样允许用户对每个数据选择编码或是不编码。在显示过程中,它没有抖动和闪烁现象,支持级联方式进行显示位数的扩展。
该模块的外观如图1所示,在使用时只需3个GPIO口即可驱动其显示。
图1 8位串行数码管模块
要使用CW32F030来驱动串行数码管模块,其首要要确定开发板与显示模块的连接关系,其引脚使用情况如下:
DIN--- PB4
CLK--- PB5
CS --- PB3
其中:DIN为串行数据输入端、CLK为串行时钟输入端、CS为片选引脚。
使引脚输出高低电平的引脚定义为:
#define SMG_CLK_Set() PB05_SETHIGH()
#define SMG_CLK_Clr() PB05_SETLOW()
#define SMG_DIN_Set() PB04_SETHIGH()
#define SMG_DIN_Clr() PB04_SETLOW()
#define SMG_CS_Set() PB03_SETHIGH()
#define SMG_CS_Clr() PB03_SETLOW()
由于是以GPIO口来模拟串行数据发送,其串行数据发送的函数为:
向寄存器写入数据的函数为:
该模块的初始化函数为:
利用串行数码管显示模块实现计时器模拟显示的主程序为:
经程序的编译和下载,其运行效果如图2所示。
图2计数状态
若在主程序中添加ADC的配置函数ADC_Test_Init(),则可进行A/D数据采集。
通过对函数ADC_Test()的效果,则可显示数据采集值,效果后的内容如下:
经程序的编译和下载,其运行效果如图3所示。其中,左侧的为电压值,右侧为采集值。
图3电压检测
相较于常规的数码管显示,该显示模块具有占用引脚资源少的特点,故适用于工业控制方面。
|