国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    1894

    瀏覽量

    94031
  • 電壓電流表
    +關注

    關注

    0

    文章

    25

    瀏覽量

    2275
  • CW32
    +關注

    關注

    1

    文章

    299

    瀏覽量

    1812
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    請問CW32中的CW是啥意思?

    CW32中的CW是啥意思?
    發表于 02-02 07:10

    cw32控制五線項步進電機

    工程描述:采用cw32為主控,通過uln2003輸入5vTTL電平,輸出高電壓來用制五線相步進電動機,所有的IO口均已引出。 原理圖及PCB:
    發表于 01-26 06:56

    使用 CW32 實現電池備份(VBAT)功能

    檔介紹了如何CW32基于 CW32 系列 MCU,通過增加簡單的外部電路配合軟件實現 VBAT 功能,在系統電源掉 電后仍能保持 RTC 時鐘正常計時,以及如何降低系統功耗,從而延長后備電池的使用壽命
    發表于 01-04 06:34

    CW32單片機如何讓生活更便捷

    較大,且有LCD顯示、低功耗要求的應用場合。這種廣泛的適用性使得CW32單片機在各種產品中都有出色的表現,比如智能馬桶、燃氣、水表、LED調光板、電子顯微鏡、可燃氣體報警器、料位開關、溫控器
    發表于 12-11 06:11

    第6章 中斷與數碼管動態顯示(6.1 6.2)

    中斷是單片機系統重點中的重點,因為有了中斷,單片機就具備了快速協調多模塊工作的能力,可以完成復雜的任務。本章將首先帶領大家學習一些必要的C語言基礎知識,然后講解數碼管動態顯示的原理,并最終借助于中斷
    的頭像 發表于 12-08 17:03 ?604次閱讀

    CW32 MCU在高頻率運行下的系統穩定性的提升方案

    ,通過合理的電源管理和熱管理策略,保持系統穩定性,包括動態電壓調節(DVS)、節能模式切換、以及散熱方案優化等。 通過這些穩定性提升方案,開發者能夠有效應對CW32 MCU在高頻運行時面臨的挑戰,確保系統在高性能工作的同時,保持
    發表于 12-04 08:04

    基于芯源CW32 MCU的LED閃爍示例及代碼分析

    最近我在項目中使用了芯源的CW32 MCU,這是一款非常適合物聯網和低功耗應用的微控制器。在初步學習和使用中,我做了一個簡單的LED閃爍實驗,通過這篇帖子給大家分享一下代碼及相關的配置步驟。 硬件
    發表于 12-04 06:52

    CW32 MCU溫度監測應用

    監測環境溫度,并通過串口將數據發送到PC端進行顯示。 硬件連接 CW32 MCU LM35溫度傳感器 USB轉串口模塊 代碼實現 #include \"cw32f030.h\"
    發表于 12-03 08:03

    基于芯源半導體MCU cw32芯片制作的USB電壓電流表

    0.91 oled顯示出來。本USB電壓電流表為寬電壓設計,支持4.2V到40寬電壓輸入,相比較于傳統4.2V-40V穩壓芯片有更多的好處。還使用芯源半導體MCU
    發表于 12-02 06:39

    原廠 FZH114C  一款LED(發光二極、數碼管、點陣屏)驅動控制專用芯片

    FZH114C通過靈活的亮度調節、單線通訊和動態掃描設計,顯著簡化了多位數碼管或LED點陣屏的驅動電路設計。其獨特的引腳排列(如VDD位于引腳13)和SOP16封裝,使其在緊湊型設計中更具優勢。開發時需注意共陰設計、段驅動電流
    發表于 11-19 14:43

    FZH114  LED(發光二極、數碼管、點陣屏)驅動控制專用芯片,集成數字通訊電路、 解碼電路、數據鎖存器、震蕩器

    顯示、LED點陣屏、機頂盒顯示等。 工業控制設備:需要多位數碼管或LED點陣顯示的場景。 注意事項 段驅動電流:建議設置為2/8及以上,以
    發表于 11-19 11:13

    CW32 MCU用什么IDE開發?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發CW32 MCU應用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
    發表于 11-12 07:52

    CW32 MCU的工作電壓、工作溫度是多少?

    CW32通用型MCU工作電壓是1.65V~5.5V,射頻MCU工作電壓則是1.8V/2.2V~3.6V;通用型CW32F系列MCU,比如:CW
    發表于 11-12 06:49

    級聯動態掃描顯示數碼管問題

    GD32F103C8T6 硬件SPI連接移位寄存器74HC595級聯,動態掃描顯示五位數碼管 是否需要電平轉換芯片TXB0104 數碼管選擇共陰極和共陽極區別是什么 若使用TXB010
    發表于 10-07 20:36

    【應用】工業現場的“智能顯示管家”:億佰特EID051-1xx系列 Modbus數碼管解析

    數碼管。億佰特新推出的EID051-1xx系列Modbus數碼管,以多種核心優勢,成為工業現場的一大助力。一.什么是Modbus數碼管?Modbus數碼管是一種通過R
    的頭像 發表于 07-17 19:34 ?580次閱讀
    【應用】工業現場的“智能<b class='flag-5'>顯示</b>管家”:億佰特EID051-1xx系列 Modbus<b class='flag-5'>數碼管</b>解析