CW32数字电压电流表软件教程-实验三:数码管显示数字
4.1.数码管显示原理
(来源:CSDN,原文链接:https://blog.csdn.net/qq_42189951/article/details/133347707)
数码管的显示原理是由多个发光的二极管共阴极或者共阳极组成的成“8”字形的显示器件。数码管通过不同的组合可用来显示数字0~9、字符A ~ F及小数点“.”。数码管的工作原理是通过控制外部的I/O端口进行驱动数码管的各个段码,使用不同的段码从而形成字符显示出我们要的数字。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母A、B、C、D、E、F、G、DP来表示。
当数码管特定的引脚加上高电平后,这些特定的发光二极管就会发亮,以形成我们眼睛看到的字样了。如:在一个共阴极数码管上显示一个“8”字,那么就对A、B、C、D、E、F、G对应的引脚置高电平。发光二极管的阳极共同连接至电源的正极称为共阳极数码管,这种类型的数码管点亮需要对引脚置低电平;发光二极管的阴极共同连接到电源的负极称为共阴极数码管,点亮共阴极数码管需要对相应的引脚置高电平。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
图4-1 数码管模型图
共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
4.2.数码管原理图与实物图
如果数码管可以显示多位数字,如我们的电压电流表所示。那么除了控制段码来选择要显示的内容,还要选择位码来控制某一个数码管的亮灭。
图4-2 电压电流表三位数码管
数码管的原理图如下,可以看出除了上述的段码引脚之外,还有COM1、COM2、COM3的位码引脚,三个位码引脚分别控制三个数码管的亮灭情况,且低电平有效。
图4-3 三位数码管原理图
4.3.数码管驱动显示
驱动显示数码管的思路是:先将A、B、C、D、E、F、G所代表的引脚从低到高编号,列出数码要显示数字的段码值。比如要显示数字5,则段码值为0x6d,二进制表示为01101101,这说明G置1,F置1,E置0,D置1,C置1,B置0,A置1,最高位则是DP的值。将要显示的数字以段码值的方式储存在数组里以供调用,可以简化程序。接着以循环的方式结合switch语句对A、B、C、D、E、F、G的亮灭情况进行单独计算,先将段码值确定后再进行位码的选择,可以避免因单片机执行程序的时间而造成显示效果的不足。
具体程序如下,将所有与数码管显示相关的函数保存在新建的 Seg_Reg.c 文件
1. 管编码表:
2. 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f
3. 0 1 2 3 4 5 6 7 8 9
4. 0xbf 0x86 0xdb 0xcf 0xe6 0xed 0xfd 0x87 0xff 0xef
5. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. */
6
7
8. uint8_t Seg_Table[20] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
9. 0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef};
10. /*对段码值进行存储*/
11
12. void Seg_Init(void) //查找原理图对数码管相关引脚进行初始化
13. {
14. __RCC_GPIOA_CLK_ENABLE();//打开GPIOA的时钟
15. __RCC_GPIOB_CLK_ENABLE();//打开GPIOB的时钟
16. __RCC_GPIOC_CLK_ENABLE();//打开GPIOC的时钟
17
18. GPIO_InitTypeDef GPIO_InitStruct;
19
20. GPIO_InitStruct.Pins = GPIO_PIN_0 | GPIO_PIN_4; //PA00,E;PA04,G
21. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
22. GPIO_InitStruct.IT = GPIO_IT_NONE;
23. GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
24. GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
25
26. GPIO_InitStruct.Pins = GPIO_PIN_6 | GPIO_PIN_4 | GPIO_PIN_2 | GPIO_PIN_0 | GPIO_PIN_3 | GPIO_PIN_7; //PB06,B;PB04,C;PB02,D;PB00,F;PB03,DP //PB07,COM1
27. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
28. GPIO_InitStruct.IT = GPIO_IT_NONE;
29. GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
30. GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
31
32. GPIO_InitStruct.Pins = GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2; //PC04,A; //PC03,COM2;PC02,COM3
33. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
34. GPIO_InitStruct.IT = GPIO_IT_NONE;
35. GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
36.GPIO_Init(CW_GPIOC, &GPIO_InitStruct);
37. }
1. void Seg_Dis(uint8_t Pos,uint8_t Num) //Pos表示指定哪一个数码管亮,Num表示要显示的数字
2. {
3. int i;
4. uint8_t Dis_Value,Location;
5. Location = Pos;
6. Dis_Value = Seg_Table[Num];
7
8. for(i = 0; i < 8; i++) //通过循环确定每一个段码引脚的亮灭情况
9. {
10. switch(i)
11. {
12. /*将Dis_Value右移i位,再和0x01(00000001)相与消除其他位的影响,可以确定该位的写入值,
13. 学员可以自己用一个实例比如0x6d(01101101)进行分析*/
14. case 0:
15. GPIO_WritePin(CW_GPIOC,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PC04,A
16. break;
17. case 1:
18. GPIO_WritePin(CW_GPIOB,GPIO_PIN_6,(Dis_Value >> i) & 0x01); //PB06,B
19. break;
20. case 2:
21. GPIO_WritePin(CW_GPIOB,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PB04,C
22. break;
23. case 3:
24. GPIO_WritePin(CW_GPIOB,GPIO_PIN_2,(Dis_Value >> i) & 0x01); //PB02,D
25. break;
26. case 4:
27. GPIO_WritePin(CW_GPIOA,GPIO_PIN_0,(Dis_Value >> i) & 0x01); //PA00,E
28. break;
29. case 5:
30. GPIO_WritePin(CW_GPIOB,GPIO_PIN_0,(Dis_Value >> i) & 0x01); //PB00,F
31. break;
3.2 case 6:
33. GPIO_WritePin(CW_GPIOA,GPIO_PIN_4,(Dis_Value >> i) & 0x01); //PA04,G
34. break;
35. case 7:
36. GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,(Dis_Value >> i) & 0x01); //PB03,DP
37. break;
38. default:
39. break;
40. }
41. }
42
43. switch(Location) //确定段码后再选择位码
44. {
45. case 0:
46. GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_RESET); //PB07,COM1
47. GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET); //PC03,COM2
48. GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET); //PC02,COM3
49. break;
50. case 1:
51. GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET); //PB07,COM1
52. GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_RESET); //PC03,COM2
53. GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET); //PC02,COM3
54. break;
55. case 2:
56. GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET); //PB07,COM1
57. GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET); //PC03,COM2
58. GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_RESET); //PC02,COM3
59. break;
60. default:
61. break;
62. }
63. }
在主函数里调用Seg_Dis函数即可在对应位置显示相应数字(别忘了初始化),各位学员熟练之后可以通过define定义每个引脚的写入,使代码更加简洁美观。
程序下载接线如图4-4所示:
图4-4 电压电流表程序下载接线
4.4.实验效果
最终的实验效果如下图所示:
图4-5 数码管显示实验效果
- |
- +1 赞 0
- 收藏
- 评论 0
本文由拾一转载自武汉芯源(CW32生态社区公众号),原文标题为:CW32数字电压电流表软件教程-实验三:数码管显示数字,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】武汉芯源CW32系列MCU PWM输出功能指南
脉冲宽度调制(PWM),是在数字电路中达到模拟输出效果的一种手段,常见应用电机调速,照明灯调光等。在MCU中,主要通过定时器单元来时实现PWM输出,以CW32L083VxTx为例,LPTIM,GTIM,ATIM都可以输出PWM信号。
设计经验 发布时间 : 2023-02-23
武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南
本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。
设计经验 发布时间 : 2024-06-20
【经验】武汉芯源CW32系列MCU芯片低功耗模式的特性介绍
武汉芯源CW32系列芯片支持3种工作模式,运行模式、休眠模式以及深度休眠模式,本文以CW32L083为例介绍低功耗模式的特性。
设计经验 发布时间 : 2023-01-03
【应用】基于CW32L系列MCU的指夹式血氧仪,实现更高精度测量
主控芯片建议使用CW32F003(20pin)资源足够,还便宜。CW32抗干扰性能可轻松通过ESD 8KV认证,加之优秀的ADC性能,是血氧仪类产品的不二之选
应用方案 发布时间 : 2023-09-07
基于CW32F003E4P7的数字电压电流表产品方案
本文介绍了采用CW32F003E4P7芯片片作为核心控制单元,负责整个系统的数据处理和控制的数字电压电流表产品方案。
应用方案 发布时间 : 2024-08-20
沁恒(WCH)通讯接口芯片和全栈MCU选型指南
描述- 南京沁恒微电子股份有限公司专注于连接技术和微处理器内核研究,是一家基于自研专业接口IP、微处理器内核IP构建芯片的集成电路设计企业。公司致力于为客户提供万物互联、上下互通的芯片及解决方案,主要产品包括USB/蓝牙/以太网接口芯片和连接型/互联型/无线型MCU,产品侧重于连接联网和控制。
型号- CH24X,CH233P,CH36X,CH32X035F8U6,CH32X035G8R6,CH32V103C6T6,CH32F205RBT6,CH370,CH372,CH251,CH343G,CH374,CH132,CH253,CH252,CH376,CH343K,CH375,CH254,CH32V006F8P6,CH378,CH377,CH440G,CH32X035,CH25X,CH32V208WBU6,CH583M,CH341T,CH32V003J4M6,CH32F103C6T6,CH233A,CH342F,CH382,CH32V006E8R6,CH384,CH342K,CH233K,CH37X,CH9374B,CH237,CH236,CH58X,CH32F103C8U6,CH340K,CH231K,CH22X,CH238,CH34X,CH340N,CH582M,CH340T,NET-SER-DT TTL,CH341B,CH341A,CH592,CH341F,CH591,CH231,CH486F,CH230,CH233,CH235,CH35X,CH32X035F7P6,CH368,CH484M,CH230K,CH23X,CH231A,CH32V203G6U6,CH340E,CH582F,CH482,CH481,CH340C,CH484,CH340B,CH483,CH365,CH486,CH364,CH340G,CH246,CH367,CH59X,CH4XX,CH366,CH578,CH334R,CH457,CH577,CH32V303VCT6,CH335,CH334Q,CH456,CH334P,CH338,CH579,CH32V,CH56X,CH334U,CH339,CH32X,CH564Q,CH334S,CH32V003A4M6,CH32X033F8P6,CH32F,CH335F,CH347F,CH32M,CH335J,CH32L,CH565M,CH451,CH571,CH450,CH444G,CH238P,CH453,CH573,CH452,CH334,CH455,CH454,CH347,CH226,CH57X,CH225,CH348,CH32X035G8U6,CH237D,CH9342G,CH334F,CH581,CH583,CH564L,CH334H,CH341,CH220,CH462,CH582,CH32F208WBU6,CH340,CH32X035R8T6,CH564F,CH343,CH342,CH221,CH463,CH334L,CH345,CH224,CH443K,CH344,CH223,CH344Q,CH555,CH557,CH315,CH318,CH54X,CH559,CH317,CH438,NET-485-9120,CH235S,CH32V002系列,CH32M007,CH236D,CH442E,CH552,CH551,CH554,CH432,CH567,CH343P,CH446,CH445,CH569,CH55X,CH448,CH568,CH440R,CH31X,CH449,CH440P,CH9340K,CH9340C,CH32F207VCT6,CH561,CH440,CH563,CH442,CH344L,CH565,CH323,CH444,CH564,CH443,CH412,CH64X,CH338X,CH52X,CH32V103R8T6,CH448F,CH32V203F8U6,CH9103M,CH32V203G8R6,CH532,CH531,CH545,CH423,CH547,CH546,CH446Q,CH53X,CH549,CH446X,CH548,CH32F103R8T6,BLE-DONGLE,CH338F,CH9104L,CH338L,CH541,CH543,CH422,CH32V003F4P6,CH9101Y,CH445P,CH9101N,CH9101R,CH9101U,CH9101H,CH32V307RCT6,CH347T,CH643,CH522,CH9102X,CH525,CH444P,CH645,CH524,CH527,CH528,CH565W,CH9344L,CH348L,BLE-SER-A-ANT,CH348Q,CH32V203F6P6,CH521,CH641,CH9102F,CH645W,CH32F203CBT6,CH32V006K8U6,CH32F207,CH32F205,CH32F203,CH32V003F4U6,CH32F208,CH645F,BLE2U-C-ANT,CH643U,CH643W,CH643Q,CH449X,CH32V303CBT6,CH32L103F8U6,CH32V305FBP6,CH569W,CH32F103,CH449F,CH32L103G8R6,CH643L,CH32X035系列,CH32F203C8T6,CH32V208RBT6,CH32V203系列,CH32V305RBT6,CH32V007系列,NET-232-9120,CH32V208GBU6,CH32L103F8P6,CH32V203C8T6,CH32V307,CH32V305,CH32F203C8U6,CH32V203C8U6,CH32V303,CH9160-DG-R0,BLE-TPT-A-ANT,CH32F203C6T6,BLE2U-A-ANT,CH9343,NET-TTL-9120,CH9328,CH9329,CH9326,CH9445,CH32L103C8T6,CH32F208RBT6,CH32F203VCT6,CH32V005F6U6,CH182H,CH182F,CH32V305GBU6,CH9434,CH32V203C6T6,CH32V307VCT6,CH181H,CH32L103系列,CH32V203F8P6,BLE-TPT-B-ANT,CH32V005D6U6,CH912X,CH32V303RCT6,CH32V005E6R6,CH32V003系列,CH32F203K8T6,NET-SER-DT RS232,CH9143,CH93XX,CH9140,CH9142,CH9141,CH9126,CH32V005F6P6,CH32F203RCT6,NET-SER-DT RS485,CH32L103,CH32V006,CH32V007,CH32V005,CH32V002,CH32V003,CH32X035C8T6,CH32V303RBT6,CH32V203K8T6,CH9121,CH9120,CH32V307WCU6,CH32V303系列,CH32F203RBT6,CH32V203RBT6,CH9350,CH483M,CH32V103C8T6,CH32V005系列,CH592X,CH483X,CH32M系列,CH230A,CH32V317,CH581F,CH32F103C8T6,CH32V103C8U6,CH482X,CH32L103K8U6,CH591R,CH32V208,CH182,CH592F,CH32V103系列,CH32V203,CH592D,CH32V208CBU6,CH914X,CH390,CH32V203K6T6,CH392,CH271,CH591D,CH482D,CH591F,CH275,CH395,CH397,CH38X,BLE232-NEP,CH32V006F8U6,CH32V103,CH39X,CH481D
持续奋进,快速完善自有32位超低功耗MCU产品阵容
7月25日,2024全球MCU生态发展大会在深圳隆重召开,武汉芯源半导体在现场为电子行业参观者展示了多款MCU典型应用方案。,武汉芯源半导体技术总监张亚凡发表了主题演讲《持续奋进,快速完善自有32位超低功耗MCU产品阵容》,在宏观方面展示现有产品布局和未来产品计划,在微观方面展示产品外设细节功能的改进。
厂牌及品类 发布时间 : 2024-08-16
【经验】芯源CW32系列MCU电容式触摸按键设计指南
芯源半导体的CW32系列MCU电容式触摸按键设计指南向客户提供利用CW32内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南内容重点在于工作原理、软件检测过程以及调试指引。通过本文可了解到如何利用内置电压比较器和内置定时器及软件配合,实现灵活方便的按键检测。在介绍标准演示板和演示软件的性能参数同时,还会给出详细的调试建议以及设计参数选择倾向分析,帮助客户快速自信地完成设计并实施调试。
设计经验 发布时间 : 2023-07-27
武汉芯源CW32系列荣获“2023年度最佳MCU芯片奖”,众多产品应用在慕尼黑华南电子展精彩亮相!
武汉芯源半导体展示了CW32众多产品应用,比如智能指纹锁、智能燃气表、LED调光板、可燃气体探测器、料位开关、温控器、无线麦克风、筋膜枪、血氧仪、以太网模块、无刷电机等多款MCU典型应用方案,吸引众多用户驻足参观了解。
厂牌及品类 发布时间 : 2023-11-03
【经验】解析武汉芯源半导体MCU CW32L083模拟电压比较器的使用方法
武汉芯源半导体MCU CW32L083内部集成2个模拟电压比较器(VC),用于比较两路模拟输入电压,并将比较结果从引脚输出。本文中将为大家解析武汉芯源半导体MCU CW32L083模拟电压比较器的使用方法。
设计经验 发布时间 : 2022-12-21
CW32携手生态伙伴举行乐清线下交流会,解读MCU更多信息,诠释CW32超强特性及生态资源
低功耗、高性能以及高可靠性正在成为嵌入式MCU的核心竞争力。2024年,武汉芯源半导体不断突破产品性能及应用边界,持续为用户提供负责任的好产品,并积极为客户高效赋能。8月15日,CW32携手生态伙伴将会在乐清与大家深入交流。武汉芯源半导体部门领导、市场大咖、资深技术专家将空降现场,为大家解读MCU更多信息,诠释CW32超强特性及生态资源等,并结合方案Demo,解析CW32的应用优势。
厂牌及品类 发布时间 : 2024-08-14
【产品】武汉芯源CW32L083系列MCU中断系统介绍
本文针对武汉芯源CW32L083系列MCU,同系列产品亦可参考。ARM® Cortex®-M0+内核的嵌套向量中断控制器(NVIC),用于管理中断和异常。NVIC和处理器内核紧密相连,可以实现低延迟的异常和中断处理。
产品 发布时间 : 2022-12-02
【应用】武汉芯源MCU CW32F030用于可燃气体探测器,内置12位ADC,具备高可靠强抗静电性
可燃气体探测器采用武汉芯源的CW32F030C8T6作为主控芯片,主要是基于CW32F030C8T6高精度的ADC,转换速度快,高可靠强抗静电,强抗干扰等特点,为系统提供了很好的保护功能,能确保系统能在恶劣的电磁干扰环境下安全运行。
应用方案 发布时间 : 2022-09-28
CW32L031 ARM® Cortex®-M0+ Low-power 32-bit MCU Reference Manual
型号- CW32L031,CW32L031C8T6-LQFP48,CW32L031 SERIES
【技术】一文介绍使用CW32系列MCU实现电池备份(VBAT)功能
本文档介绍了如何基于CW32系列MCU,通过增加简单的外部电路配合软件实现VBAT功能,在系统电源掉电后仍能保持RTC时钟正常计时,以及如何降低系统功耗,从而延长后备电池的使用寿命。
技术探讨 发布时间 : 2023-09-14
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论