0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何配置定時(shí)器中斷并執(zhí)行數(shù)碼管刷新函數(shù)?

jf_qE49KoVBr8 ? 來(lái)源:CW32生態(tài)社區(qū) ? 2024-05-14 14:22 ? 次閱讀

5.1.數(shù)碼管動(dòng)態(tài)顯示原理

所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出段碼和位碼,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人眼的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。明確了原理,我們要使電壓電流表的三個(gè)位同時(shí)顯示不同的值需要用到CW32的定時(shí)器功能,在定時(shí)器的中斷服務(wù)程序里面執(zhí)行顯示刷新的動(dòng)作。

5.2.定時(shí)器中斷配置

在配置定時(shí)器之前需要注意是否將系統(tǒng)時(shí)鐘樹(shù)配置完成,定時(shí)器利用了高級(jí)外設(shè)時(shí)鐘 PCLK,在之前的時(shí)鐘配置中,我們將高級(jí)外設(shè)時(shí)鐘 PCLK的頻率配置成了6MHz,這將影響我們對(duì)定時(shí)器的預(yù)分頻和裝填計(jì)數(shù)值的配置。

在本次實(shí)驗(yàn)中,我們使用定時(shí)器BTIM1進(jìn)行中斷配置,代碼如下:

#include "BTIM1.h"


void Btim1_Init(void)
{
    BTIM_TimeBaseInitTypeDef BTIM_TimeBaseInitStruct;
    __RCC_BTIM_CLK_ENABLE();          //使能BTIM的時(shí)鐘
    NVIC_EnableIRQ(BTIM1_IRQn);       //使能BTIM1的中斷


    BTIM_TimeBaseInitStruct.BTIM_Mode      = BTIM_Mode_TIMER;//將定時(shí)器配置為計(jì)時(shí)模式
    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;//配置定時(shí)器連續(xù)運(yùn)行


    BTIM_TimeBaseInit(CW_BTIM1, &BTIM_TimeBaseInitStruct);  //初始化BTIM1
    BTIM_ITConfig(CW_BTIM1, BTIM_IT_OV, ENABLE); //配置BTIM1的中斷,定時(shí)器溢出產(chǎn)生中斷
    BTIM_Cmd(CW_BTIM1, ENABLE);                  //使能BTIM1           
}

5.3.數(shù)碼管動(dòng)態(tài)顯示

在上一節(jié)的數(shù)碼管顯示數(shù)字的數(shù)碼管顯示模塊Seg_Dis.c文件中,我們還需要添加三個(gè)函數(shù)和定義一個(gè)數(shù)組 Seg_Reg 來(lái)完成動(dòng)態(tài)顯示的功能。

uint8_t Seg_Reg[3] = {0,0,0};   //這個(gè)數(shù)組存放數(shù)碼管顯示三位的數(shù)字,0~9


void Close_Com(void)      //關(guān)閉所有數(shù)碼管的顯示,防止重影
{
  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;// 百位數(shù)
  uint8_t Tens;    // 十位數(shù)
  uint8_t Units;   // 個(gè)位數(shù)


  Units     = value % 10;      //分別取余獲得位數(shù)的值
  Tens      = value / 10 % 10;
  Hundreds  = value / 100 % 10;


  Seg_Reg[0] = Hundreds;       //將個(gè)十百位的數(shù)字分別存放進(jìn)數(shù)組等待調(diào)用  
  Seg_Reg[1] = Tens;
  Seg_Reg[2] = Units;
}


void Dis_Refresh(void)      //函數(shù)將在定時(shí)器中斷里調(diào)用,不斷刷新數(shù)碼管
{
/*靜態(tài)變量從作用域上分屬于局部變量;從生命周期上來(lái)看,它與用戶程序的生命周期相同。*/
  static uint8_t num = 0;      //這里的靜態(tài)臨時(shí)變量num,輪詢Seg_Reg數(shù)組


  Close_Com();                 //先關(guān)閉公共端,防止重影
  Seg_Dis(num,Seg_Reg[num]);   //調(diào)用顯示函數(shù)
  num++;
  if(num > 2)
  {
    num = 0;               
  }
}

最后在定時(shí)器中斷里不斷調(diào)用顯示刷新函數(shù)完成數(shù)碼管的刷新顯示:

void BTIM1_IRQHandler(void)        //BTIM1的中斷服務(wù)程序
{
  static uint32_t Cnt=0;           //Cnt作為計(jì)數(shù)標(biāo)志位控制刷新函數(shù)是否執(zhí)行
  if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV))
  {
    BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV);  //清除中斷標(biāo)志位
    Cnt++;
    if (Cnt > 2)                  //3ms顯示一個(gè)數(shù)碼管
    {
      Cnt = 0;
      Dis_Refresh();             //數(shù)碼管掃描顯示
    }
  }
}

5.4.實(shí)驗(yàn)效果

最終的實(shí)驗(yàn)效果如下圖所示,人眼已經(jīng)看不出閃爍,但實(shí)際上數(shù)碼管是依次刷新顯示。

5b121adc-11a8-11ef-a297-92fbcf53809c.png

圖5-1 數(shù)碼管動(dòng)態(tài)顯示效果圖



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1882

    瀏覽量

    91243
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3251

    瀏覽量

    115013
  • 時(shí)鐘樹(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    10779
  • 定時(shí)器中斷
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    11232
  • 電壓電流表
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    2087

原文標(biāo)題:CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:數(shù)碼管動(dòng)態(tài)顯示

文章出處:【微信號(hào):武漢芯源半導(dǎo)體,微信公眾號(hào):武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    定時(shí)器中斷實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)掃描!

    /21/2013 * 修改時(shí)間: * 功能說(shuō)明:用定時(shí)器中斷實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)掃描,大家可以對(duì)比用普通的delay()函數(shù)來(lái)實(shí)現(xiàn)動(dòng)態(tài)掃描有什么區(qū)別
    發(fā)表于 11-21 20:57

    如何解決無(wú)緣蜂鳴器頻率 被數(shù)碼管刷新干擾

    中斷會(huì)影響無(wú)緣蜂鳴器的聲音頻率。調(diào)試過(guò)程:一:定時(shí)器0刷新數(shù)碼管,主函數(shù)中判斷時(shí)間,如果時(shí)間到就鬧鐘。結(jié)果:蜂鳴器頻率被
    發(fā)表于 12-12 15:42

    如何解決 無(wú)緣蜂鳴器頻率 被 數(shù)碼管刷新干擾

    無(wú)緣蜂鳴器響。(鬧鈴2秒鐘)4、通過(guò)按鍵調(diào)整DS1302的初始值,來(lái)更改當(dāng)前時(shí)間(或鬧鐘時(shí)間)遇到問(wèn)題:刷新數(shù)碼管定時(shí)器中斷會(huì)影響無(wú)緣蜂鳴器的聲音頻率。調(diào)試過(guò)程:一:
    發(fā)表于 12-12 16:13

    請(qǐng)問(wèn)定時(shí)刷新數(shù)碼管出現(xiàn)亮暗不一是為什么?如何解決?

    我采用使用定時(shí)器刷新數(shù)碼管的辦法,但是有個(gè)別的位顯示發(fā)亮,有的顯示發(fā)暗。有時(shí)不穩(wěn)定。硬件檢測(cè)無(wú)問(wèn)題。程序在開(kāi)始編程的時(shí)候還算穩(wěn)定。但是在主函數(shù)中又加入些代碼后。變成這個(gè)樣子。加入的代碼
    發(fā)表于 07-06 16:24

    STM32F103RBT6定時(shí)器是怎樣去刷新LED數(shù)碼管更新數(shù)碼管顯示的

    STM32F103RBT6定時(shí)器是怎樣去刷新LED數(shù)碼管更新數(shù)碼管顯示的?調(diào)整LED亮度的方式有哪些?
    發(fā)表于 12-15 06:59

    基于單片機(jī)的綜合應(yīng)用程序數(shù)碼管【C語(yǔ)言】定時(shí)器控制數(shù)碼管

    基于單片機(jī)的綜合應(yīng)用程序數(shù)碼管【C語(yǔ)言】定時(shí)器控制數(shù)碼管
    發(fā)表于 01-06 13:44 ?27次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用
    發(fā)表于 02-18 18:21 ?0次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用

    數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用 可以給初學(xué)者學(xué)習(xí)使用 如果有需要可以下載。
    發(fā)表于 03-14 10:40 ?1次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用。
    發(fā)表于 04-29 16:50 ?5次下載

    LESSON3_數(shù)碼管靜態(tài)顯示及定時(shí)器中斷應(yīng)用

    數(shù)碼管是如何顯示出字符的 數(shù)碼管靜態(tài)顯示與動(dòng)態(tài)顯示原理 中斷概念 單片機(jī)的定時(shí)器應(yīng)用
    發(fā)表于 07-01 17:17 ?1次下載

    基于8051的Proteus仿真-定時(shí)器控制數(shù)碼管動(dòng)顯示

    基于8051的Proteus仿真-定時(shí)器控制數(shù)碼管動(dòng)顯示
    發(fā)表于 09-01 23:33 ?19次下載

    數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機(jī)的定時(shí)器應(yīng)用視頻教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)碼管顯示的原理靜態(tài)顯示及中斷概念單片機(jī)的定時(shí)器應(yīng)用視頻教程包括了:1.數(shù)碼管是如何顯示出字符的,2.數(shù)碼管靜態(tài)
    發(fā)表于 03-26 14:35 ?15次下載
    <b class='flag-5'>數(shù)碼管</b>顯示的原理靜態(tài)顯示及<b class='flag-5'>中斷</b>概念單片機(jī)的<b class='flag-5'>定時(shí)器</b>應(yīng)用視頻教程

    藍(lán)橋杯開(kāi)發(fā)板CT107D---使用定時(shí)器中斷動(dòng)態(tài)刷新數(shù)碼管的消隱

    CT107D開(kāi)發(fā)板的定時(shí)器中斷刷新數(shù)碼管的消隱名詞位選:選擇第幾個(gè)數(shù)碼管亮段暄:選擇數(shù)碼管亮什么
    發(fā)表于 11-23 16:21 ?15次下載
    藍(lán)橋杯開(kāi)發(fā)板CT107D---使用<b class='flag-5'>定時(shí)器</b><b class='flag-5'>中斷</b>動(dòng)態(tài)<b class='flag-5'>刷新</b><b class='flag-5'>數(shù)碼管</b>的消隱

    51學(xué)習(xí)打三天--數(shù)碼管顯示的原理-加入中斷系統(tǒng)程序--加入定時(shí)器!!!需要回頭多看看。

    中斷系統(tǒng) 4. 定時(shí)器....三、數(shù)碼管顯示的原理、數(shù)碼管的靜態(tài)顯示1. 引腳第二功能1.1TXD...
    發(fā)表于 11-29 13:06 ?18次下載
    51學(xué)習(xí)打三天--<b class='flag-5'>數(shù)碼管</b>顯示的原理-加入<b class='flag-5'>中斷</b>系統(tǒng)程序--加入<b class='flag-5'>定時(shí)器</b>!!!需要回頭多看看。

    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:數(shù)碼管動(dòng)態(tài)顯示

    顯示不同的值需要用到CW32的定時(shí)器功能,在定時(shí)器中斷服務(wù)程序里面執(zhí)行顯示刷新的動(dòng)作。有關(guān)CW32的
    的頭像 發(fā)表于 05-31 15:23 ?546次閱讀
    CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:<b class='flag-5'>數(shù)碼管</b>動(dòng)態(tài)顯示