LZY825597017 发表于 2023-7-11 18:34:26

数码管直驱库

本帖最后由 LZY825597017 于 2023-7-13 13:40 编辑

数码管的各个段选 A-B-C-D-E-F-G-DP ,让对应段选的灯亮,数码管就会显示不同的数字或者字母

对于直驱数码管,最好不要直接使用IO驱动,芯片的输出电流比较有限,数码管的亮度会受影响。如有需求请参考下面的电路(以4位共阴数码管驱动为例)



数码管扩展库说明
ASRPRO数码管扩展库


TW32F003数码管扩展库


CH32V003数码管扩展库

CH32V103数码管扩展库


扩展库都比较类似,初始化存在一些差异,故一起讲解。

注意:使用库时,某一些IO被复用成特殊功能,不建议用作GPIO口,源文件中并未做处理,如有需求,请在源文件中的smg_init()函数中将复用功能IO设置成普通IO。初始化函数带有扫描位的需要特别注意,要根据选择数码管的位确定,否则编译会报错。这里的扫描位的指的是程序中选择重复扫描的有那几位数码管

CH32V103初始化

1、首先确认好自己的数码管是共阴还是共阳数码管,选择对应的选项;
段输出:可以选择PA、PB或者PC口的高8位(PA0-PA7)或者低8位(PA8-PA15)作为数码管的段选,且使用低8位时PA0对应数码管的段A,PA1对应数码管的段B,以此类推,使用高8位时PA8对应数码管的段A,PA9对应数码管的段B,以此类推.
第x位:位选择位,勾选择使能对应的数码管,初始默认4位数码管。每一位可以选择任意空闲GPIO口;
扫描位:根据勾选的数码管选择,使用1-4,则选择低四位,使用5-8,选择高4位,若同时使用则选择整8位;
注意:如果使能低4位未满4个同时使能高4位未满4个,则扫描位必须为整8位,且必须使能8个位。(没有用到的可以选择空闲IO)

CH32V003初始化

1、对比V103,数码管的段选固定PC口,且PC0->数码管段A,PC1->数码管段B...PC7->数码管段DP;
第x位:位选择位,勾选择使能对应的数码管,初始默认4位数码管。每一位可以选择任意空闲GPIO口;

TW32F003初始化

1、对比V003,TW32F003每一个端口(PA、PB)都有16个IO(0-15),因此可以选择高8位(0-7)或者低8位(8-15)作为数码管的段选,其他和上面的一样。

ASRPRO初始化

1、段选只有PA和PB,带扫描位。

后面则通用:


2、数码管清屏:可以选择1-8位中的任意一位或者全部清除



3、数码管从x位显示整数:从选择的位开始显示给出的整数。注:超出位限制,则取低位。



4、数码管指定x位显示:从选择的位开始显示给出的数字或字母



5、数码管从x位显示小数:从选择的位开始显示给出的小数。注:小数显示精度为0.1,超出位限制,则取低位。



6、数码管指定x位小数点亮:将选择的位对应的小数点点亮。



7、数码管扫描1ms调用:可以使用定时器或者多线程调用此函数块,定时周期为1ms。


以CH32V103举例:                   注:不要使用PA高8位,SWJ和USB占用



常见问题解析:
数码管显示乱码:1、检查数码管共阳、共阴是否选择错误。2、

数码管显示的数字共同缺少某一位:1、检查线路是否松动、连接是否有误。2、该PXx引脚被复用成其他特殊功能,不能作为普通IO,可以选择换端口,或者将复用的IO调用库里面的函数变成普通IO。

数码管显示的数字缺少某一位:1、检查线路是否松动、连接是否有误。2、该PXx引脚被复用成其他特殊功能,不能作为普通IO,可以选择换IO口,或者将复用的IO调用库里面的函数变成普通IO。





LZY825597017 发表于 2023-7-12 08:57:11

TW32F003数码管直驱库与CH32V103相似,完全可以借鉴

海宁电脑520 发表于 2023-7-24 00:19:39

我用TWF003,直驱,会和那个串口冲突

海宁电脑520 发表于 2023-7-24 00:35:46

TWF003,数码管和串口会冲突,啥问题,

LZY825597017 发表于 2023-7-31 17:52:22

海宁电脑520 发表于 2023-7-24 00:19
我用TWF003,直驱,会和那个串口冲突

已经修改完毕,您可以更新最新版本
页: [1]
查看完整版本: 数码管直驱库