CW32数字电压电流表软件教程-实验三:数码管显示数字

2024-07-17 武汉芯源(CW32生态社区公众号)
MCU,CW32,武汉芯源 MCU,CW32,武汉芯源 MCU,CW32,武汉芯源 MCU,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 数码管显示实验效果

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由拾一转载自武汉芯源(CW32生态社区公众号),原文标题为:CW32数字电压电流表软件教程-实验三:数码管显示数字,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

武汉芯源半导体安全低功耗MCU CW32L010 | 新品使用初体验

CW32L010新品的正式发布,标志着嵌入式技术领域的又一次创新突破。今日,我们有幸进行该新品的首次使用体验,以一块L010核心板为例,体验一下这颗芯片

2024-10-18 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】武汉芯源CW32系列MCU PWM输出功能指南

脉冲宽度调制(PWM),是在数字电路中达到模拟输出效果的一种手段,常见应用电机调速,照明灯调光等。在MCU中,主要通过定时器单元来时实现PWM输出,以CW32L083VxTx为例,LPTIM,GTIM,ATIM都可以输出PWM信号。

2023-02-23 -  设计经验 代理服务 技术支持 现货查询 批量订货

武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南

本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。

2024-06-20 -  设计经验 代理服务 技术支持 现货查询 批量订货
2024/9/23  - 武汉芯源  - 用户指南  - Rev 1.0 代理服务 技术支持 现货查询 批量订货

【IC】武汉芯源CW32L010安全低功耗MCU,树立M0+产品行业新标杆!

近日,武汉芯源半导体CW32L010系列产品正式官方发布。这款产品以其卓越的产品性能,迅速在业界引起了广泛关注,并成功树立M0+产品行业的新标杆。产品是基于eFlash的单芯片低功耗微控制器,集成了主频高达48MHz的ARM®Cortex®-M0+内核、高速嵌入式存储器(多至64K字节FLASH和多至4K字节SRAM)以及一系列全面的增强型外设和I/O口。

2024-10-10 -  产品 代理服务 技术支持 现货查询 批量订货

精雕细琢打造MCU,武汉芯源开辟属于自己的Cortex-M0+新赛道!

物联网市场如火如荼,在大量基于Cortex™-M0+的MCU已经面市的情况下,Cortex™-M0+ MCU在以这片红海中还有发展的空间吗?答案是有,近日武汉芯源半导体推出的基于Cortex™-M0+内核CW32L010新品系列就是通过差异化的细节设计开辟了属于自己的新赛道。

2024-11-19 -  原厂动态 代理服务 技术支持 现货查询 批量订货

【应用】基于CW32L系列MCU的指夹式血氧仪,实现更高精度测量

主控芯片建议使用CW32F003(20pin)资源足够,还便宜。CW32抗干扰性能可轻松通过ESD 8KV认证,加之优秀的ADC性能,是血氧仪类产品的不二之选

2023-09-07 -  应用方案 代理服务 技术支持 现货查询 批量订货

【经验】芯源CW32系列MCU电容式触摸按键设计指南

芯源半导体的CW32系列MCU电容式触摸按键设计指南向客户提供利用CW32内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南内容重点在于工作原理、软件检测过程以及调试指引。通过本文可了解到如何利用内置电压比较器和内置定时器及软件配合,实现灵活方便的按键检测。在介绍标准演示板和演示软件的性能参数同时,还会给出详细的调试建议以及设计参数选择倾向分析,帮助客户快速自信地完成设计并实施调试。

2023-07-27 -  设计经验 代理服务 技术支持 现货查询 批量订货

CW32F030C8T6 MCU Supports an Ultra Wide Temperature Range of -40~105 ℃, Ensures Safe and Stable Operation of Portable Charging Gun

Wuhan Core Source Semiconductor‘s CW32F030C8T6 serves as the core control chip of the portable charging gun of Sihao New Energy Vehicle, indicating that CW32F030C8T6 microcontroller has been recognized by frontline host manufacturers.

2024-11-07 -  应用方案 代理服务 技术支持 现货查询 批量订货

ES32VF2264系列MCU的高效小尺寸TFT屏驱动方案——基于DMA外设到外设功能

在移动终端设备普及的当下,人们对日常用到产品的交互性提出了更多要求。交互界面从数码管、黑白屏逐步转向TFT屏。上海东软载波微电子提供基于ES32VF2264系列MCU产品的小尺寸TFT屏驱动方案,通过SPI到SPI的DMA数据搬运,完成外部Flash中的图片数据直接发送到TFT屏。

2024-10-10 -  应用方案 代理服务 技术支持 现货查询 批量订货

介绍MCU的ARM处理器——Cortex-M0+内核

ARM Cortex-M0+是2012年3月14日ARM公司发布的一款低功耗效率、能效最高的ARM处理器,可用于存在设计约束的嵌入式应用。它具有最小的硅面积和极少的代码量,从而使开发人员能够以16和8位的价位实现32位性能。处理器的低门数使其能够部署在需要简单功能的应用中。本文中武汉芯源来给大家介绍Cortex-M0+内核,希望对各位工程师有所帮助。

2024-05-31 -  技术探讨 代理服务 技术支持 现货查询 批量订货

M0+产品行业新标杆诞生,武汉芯源CW32L010安全低功耗MCU集合多项技术性能优势

2024年9月26日,武汉芯源半导体带着最新产品CW32L010安全低功耗MCU作客电巢直播间,举行了一场璀璨的XR技术新品发布会,此次直播,武汉芯源半导体技术总监 张亚凡、北中国区销售总监 孙秀艳与大家分享了武汉芯源半导体的发展历程和重要时刻,全面介绍和讲解了新品CW32L010实现的技术优势。

2024-11-05 -  原厂动态 代理服务 技术支持 现货查询 批量订货

【产品】武汉芯源CW32L083系列MCU中断系统介绍

本文针对武汉芯源CW32L083系列MCU,同系列产品亦可参考。ARM® Cortex®-M0+内核的嵌套向量中断控制器(NVIC),用于管理中断和异常。NVIC和处理器内核紧密相连,可以实现低延迟的异常和中断处理。

2022-12-02 -  产品 代理服务 技术支持 现货查询 批量订货

【技术】武汉芯源CW32定时器输入捕获的操作讲解

CW32系列MCU的GTIM、ATIM的每个定时器都带有至少4路独立的捕获/比较通道,输入捕获功能可以测量输入信号的脉冲宽度或者频率。本文进行武汉芯源CW32定时器输入捕获的操作讲解。

2023-02-16 -  技术探讨 代理服务 技术支持 现货查询 批量订货

The Application of CW32F030 Series MCU in Electric Welding Machines

Applying a microcontroller in an electric welding machine can achieve automated control, improve welding quality and efficiency by writing specific programs. This article introduces the application of Wuhan Core Source Semiconductor CW32F030 series microcontroller in arc welding machines.

2024-11-05 -  应用方案 代理服务 技术支持 现货查询 批量订货
展开更多

电子商城

查看更多

品牌:武汉芯源

品类:通用MCU

价格:¥8.4750

现货: 300,010

品牌:武汉芯源

品类:通用MCU

价格:¥7.0625

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥7.6275

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥4.8025

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥4.8025

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥7.6275

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥7.0625

现货: 300,000

品牌:武汉芯源

品类:通用MCU

价格:¥5.6500

现货: 300,000

品牌:武汉芯源

品类:MCU

价格:

现货: 200,000

品牌:武汉芯源

品类:MCU

价格:

现货: 100,000

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:RENESAS

品类:16-BIT MCU

价格:¥5.5190

现货:910,635

品牌:RENESAS

品类:MCU

价格:¥5.1500

现货:200,000

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:Advanced Digital Chips

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:MCU

价格:¥5.8041

现货:86,925

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:Advanced Digital Chips

品类:MCU

价格:¥9.0000

现货:64,841

品牌:ST

品类:MCU

价格:¥15.5600

现货:58,800

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥257.6400

现货:58,799

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

MCU烧录/Flash烧录/CPLD烧录

可烧录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 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面