0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CW32生态社区 ? 来源:CW32生态社区 ? 作者:CW32生态社区 ? 2024-05-31 15:23 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

5.1.数码管动态显示原理

所谓动态扫描显示即轮流向各位数码管送出段码和位码,利用发光管的余辉和人眼视觉暂留作用,使人眼的感觉好像各位数码管同时都在显示。明确了原理,我们要使电压电流表的三个位同时显示不同的值需要用到CW32的定时器功能,在定时器的中断服务程序里面执行显示刷新的动作。有关CW32的定时器和中断的相关知识请查看链接:【CW32F003E4核心板】入门学习教程。本文只讲述如何配置定时器中断并执行数码管刷新函数。

5.2.定时器中断配置

在配置定时器之前需要注意是否将系统时钟树配置完成,定时器利用了高级外设时钟 PCLK,在之前的时钟配置中,我们将高级外设时钟 PCLK的频率配置成了6MHz,这将影响我们对定时器的预分频和装填计数值的配置。

在本次实验中,我们使用定时器BTIM1进行中断配置,代码如下:

#include "BTIM1.h"

void Btim1_Init(void)
{
    BTIM_TimeBaseInitTypeDef BTIM_TimeBaseInitStruct;
    __RCC_BTIM_CLK_ENABLE();          //使能BTIM的时钟
    NVIC_EnableIRQ(BTIM1_IRQn);       //使能BTIM1的中断

    BTIM_TimeBaseInitStruct.BTIM_Mode      = BTIM_Mode_TIMER;//将定时器配置为计时模式
    BTIM_TimeBaseInitStruct.BTIM_Period    = 6000 - 1;      // 1ms采集1次
    BTIM_TimeBaseInitStruct.BTIM_Prescaler = BTIM_PRS_DIV1; // 6MHZ÷1÷6000 = 1000Hz
    BTIM_TimeBaseInitStruct.BTIM_OPMode    = BTIM_OPMode_Repetitive;//配置定时器连续运行

    BTIM_TimeBaseInit(CW_BTIM1, &BTIM_TimeBaseInitStruct);  //初始化BTIM1
    BTIM_ITConfig(CW_BTIM1, BTIM_IT_OV, ENABLE); //配置BTIM1的中断,定时器溢出产生中断
    BTIM_Cmd(CW_BTIM1, ENABLE);                  //使能BTIM1           
}

5.3.数码管动态显示

在上一节的数码管显示数字的数码管显示模块Seg_Dis.c文件中,我们还需要添加三个函数和定义一个数组 Seg_Reg 来完成动态显示的功能。

uint8_t Seg_Reg[3] = {0,0,0};   //这个数组存放数码管显示三位的数字,0~9

void Close_Com(void)      //关闭所有数码管的显示,防止重影
{
  GPIO_WritePin(CW_GPIOB,GPIO_PIN_7,GPIO_Pin_SET);    //PB07,COM1
  GPIO_WritePin(CW_GPIOC,GPIO_PIN_3,GPIO_Pin_SET);    //PC03,COM2
  GPIO_WritePin(CW_GPIOC,GPIO_PIN_2,GPIO_Pin_SET);    //PC02,COM3
}

void Display(uint32_t value)
{
  uint8_t Hundreds;// 百位数
  uint8_t Tens;    // 十位数
  uint8_t Units;   // 个位数

  Units     = value % 10;      //分别取余获得位数的值
  Tens      = value / 10 % 10;
  Hundreds  = value / 100 % 10;

  Seg_Reg[0] = Hundreds;       //将个十百位的数字分别存放进数组等待调用  
  Seg_Reg[1] = Tens;
  Seg_Reg[2] = Units;
}

void Dis_Refresh(void)      //函数将在定时器中断里调用,不断刷新数码管
{
/*静态变量从作用域上分属于局部变量;从生命周期上来看,它与用户程序的生命周期相同。*/
  static uint8_t num = 0;      //这里的静态临时变量num,轮询Seg_Reg数组

  Close_Com();                 //先关闭公共端,防止重影
  Seg_Dis(num,Seg_Reg[num]);   //调用显示函数
  num++;
  if(num > 2)
  {
    num = 0;               
  }
}

最后在定时器中断里不断调用显示刷新函数完成数码管的刷新显示:

void BTIM1_IRQHandler(void)        //BTIM1的中断服务程序
{
  static uint32_t Cnt=0;           //Cnt作为计数标志位控制刷新函数是否执行
  if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV))
  {
    BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV);  //清除中断标志位
    Cnt++;
    if (Cnt > 2)                  //3ms显示一个数码管
    {
      Cnt = 0;
      Dis_Refresh();             //数码管扫描显示
    }
  }
}

5.4.实验效果

最终的实验效果如下图所示,人眼已经看不出闪烁,但实际上数码管是依次刷新显示。

图5-1 数码管动态显示效果图

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数码管
    +关注

    关注

    32

    文章

    1889

    浏览量

    92758
  • 电压电流表
    +关注

    关注

    0

    文章

    25

    浏览量

    2203
  • CW32
    +关注

    关注

    1

    文章

    256

    浏览量

    1286
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    数码管的结构与原理

    数码管,也被称作辉光或LED数码管,是一种能够显示数字、字母、符号等信息的电子设备。它广泛应用于各种电子设备中,如计算器、电子钟表、电子秤
    的头像 发表于 02-05 17:32 ?2027次阅读

    四位数码管12个引脚怎么分配

    在电子显示技术中,四位数码管作为一种常见的显示器件,广泛应用于各种数字显示系统。其通过控制不同段(A-G)的发光二极
    的头像 发表于 01-30 15:00 ?1.8w次阅读

    简述led数码管的类型和显示原理

    LED数码管 :这是最常见的LED数码管类型,由七个LED发光体组成,可以显示0-9的数字。 十四段LED数码管 :在七段LED
    的头像 发表于 08-29 09:11 ?2501次阅读

    数码管显示屏的静态显示编程是什么

    数码管显示屏的静态显示编程是一种简单的显示方式,它指的是在任意时刻,数码管上的所有段(a, b, c, d, e, f, g, dp等,具体
    的头像 发表于 08-28 17:14 ?1140次阅读

    数码管显示屏的作用和功能是什么

    )组成的数字显示设备。每个LED可以独立控制,通过不同的组合方式来显示数字、字母和一些特殊符号。 1.2 数码管的分类
    的头像 发表于 08-28 17:11 ?2866次阅读

    数码管显示屏在仿真软件中叫什么

    数码管显示屏,又称为七段显示器或七段LED显示器,是一种常见的数字显示设备,广泛应用于电子设备中
    的头像 发表于 08-28 17:08 ?3085次阅读

    数码管在仿真软件里面怎么找

    数码管,又称为七段显示器或七段显示器,是一种常用的数字显示设备,广泛应用于电子设备中,如电子钟、计算器、
    的头像 发表于 08-28 17:06 ?3674次阅读

    数码管在仿真软件中叫什么

    数码管是一种用于显示数字和字符的电子设备,广泛应用于各种电子设备中,如计算器、电子钟表、温度计等。在仿真软件中,数码管通常被称为“七段
    的头像 发表于 08-28 16:40 ?2601次阅读

    驱动器数码管显示不良原因

    驱动器数码管显示不良的原因可能有很多,涉及到硬件、软件、环境等多个方面。 一、引言 驱动器数码管是一种广泛应用于工业自动化、电子设备等领域的显示
    的头像 发表于 08-28 16:38 ?1819次阅读

    什么原因造成数码管显示错误

    数码管显示错误是一个常见的问题,可能由多种原因引起。 一、引言 数码管是一种常用的显示设备,广泛应用于各种电子设备中,如电子钟、计算器、温度计等。然而,在使用过程中,
    的头像 发表于 08-28 16:36 ?3730次阅读

    8位数码管怎么不显示数字

    8位数码管是一种常见的电子显示设备,用于显示数字或字符。然而,有时8位数码管可能无法正常显示
    的头像 发表于 08-28 16:34 ?1961次阅读

    总结七段数码管的分类和工作原理

    七段数码管是一种常见的电子显示设备,广泛应用于各种电子设备中,如计算器、电子钟、数字仪表等。 一、七段数码管的分类 按显示方式分类 七段
    的头像 发表于 08-28 16:27 ?4094次阅读

    7段数码管共阴共阳如何显示数字

    7段数码管是一种常见的显示设备,用于显示数字和部分字母。它由7个LED发光二极组成,每个LED可以独立控制,从而实现
    的头像 发表于 08-28 16:19 ?5380次阅读

    数码管驱动芯片引脚功能

    数码管驱动芯片是一种用于驱动数码管显示数字或字符的集成电路。数码管驱动芯片的引脚功能是实现数码管
    的头像 发表于 08-28 16:08 ?2184次阅读

    数码管驱动芯片原理是什么

    数码管驱动芯片是一种广泛应用于数字显示领域的电子元件,它能够将数字信号转换为可视的数字显示。 一
    的头像 发表于 08-28 16:07 ?2074次阅读