色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

武漢芯源CW32L083 LCD計數器

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-06-18 09:09 ? 次閱讀

【目的】實現一個計數器,按下按鍵1開始計時,再次按下按鍵1實現暫停,再次按下,繼續計時。按下按鍵2實現清零。

【實現步驟】

1、初始化時鐘,代碼如下:

void RCC_Configuration(void)

{

/* 0. HSI使能并校準 */

// RCC_HSI_OUT();

RCC_HSI_Enable(RCC_HSIOSC_DIV6);

/* 1. 設置HCLK和PCLK的分頻系數 */

RCC_HCLKPRS_Config(RCC_HCLK_DIV1);

RCC_PCLKPRS_Config(RCC_PCLK_DIV1);

// RCC_HCLK_OUT();

// __breakpoint(0);

/* 2. 使能PLL,通過HSI倍頻到64MHz */

RCC_PLL_Enable(RCC_PLLSOURCE_HSI, 8000000, RCC_PLL_MUL_8); // HSI 默認輸出頻率8MHz

// RCC_PLL_OUT();

///< 當使用的時鐘源HCLK大于24M,小于等于48MHz:設置FLASH 讀等待周期為2 cycle

///< 當使用的時鐘源HCLK大于48M,小于等于72MHz:設置FLASH 讀等待周期為3 cycle

__RCC_FLASH_CLK_ENABLE();

FLASH_SetLatency(FLASH_Latency_3);

/* 3. 時鐘切換到PLL */

RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);

RCC_SystemCoreClockUpdate(64000000);

/* 4. 配置外設時鐘 */

// __RCC_GPIOF_CLK_ENABLE();

// __RCC_GPIOE_CLK_ENABLE();

// __RCC_GPIOD_CLK_ENABLE();

// __RCC_GPIOC_CLK_ENABLE();

// __RCC_GPIOB_CLK_ENABLE();

// __RCC_GPIOA_CLK_ENABLE();

// __RCC_LCD_CLK_ENABLE();

}

  1. 初始化按鍵

板載按鍵1為PA4,按鍵2為PA5,根據原理圖,都接了上位電阻,所以需要配置為下拉中斷觸發。

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

/* 配置PA4、PA5為按鍵輸入 */

GPIO_InitStruct.IT = GPIO_IT_FALLING;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pins = GPIO_PIN_4 | GPIO_PIN_5;

__RCC_GPIOA_CLK_ENABLE();

GPIO_Init(CW_GPIOA, &GPIO_InitStruct);

}

3、中斷配置

void NVIC_Configuration(void)

{

__disable_irq();

// NVIC_EnableIRQ(WDT_IRQn);

NVIC_SetPriority(GPIOA_IRQn, 0);

// NVIC_SetPriority(SysTick_IRQn, 1);

NVIC_EnableIRQ(GPIOA_IRQn);

__enable_irq();

}

4、中斷回調函數,在中斷回調中只清除中斷標志,業務處理在主函數中處理:

/**

  • @brief This funcation handles GPIOA
    */
    void GPIOA_IRQHandler(void)
    {

CW_GPIOA->ICR = 0; //清除中斷標志

}

5、LCD驅動

在LCD驅動中,我們初始化LCD(具體見官方示例),然后是書寫LCD數字顯示驅動,具體代碼如下:

#include "lcd.h"

// 7 6 5 4 3 2 1 0

// RAM01 RAM00 RAM03 RAM02 RAM801 RAM10 RAM13 RAM12 RAM92 RAM91

/* 段碼低8(左) */

static uint8_t num_L[10] = {

0x0d, //0

0x00, //1

0x0e, //2

0x0a, //3

0x03, //4

0x0b, //5

0x0f, //6

0x00, //7

0x0f, //8

0x0b, //9

};

/* 段碼高8(右) */

static uint8_t num_H[10] = {

0x07,

0x06,

0x03,

0x07,//3

0x06,//4

0x05, //5

0x05, //

0x07, //7

0x07, //8

0x07, //9

};

void show_nums(uint32_t num)

{

uint8_t i=0;

uint8_t j;

uint32_t temp;

temp = num;

//空顯示

CW_LCD->RAM0 = 0;

CW_LCD->RAM1 = 0;

CW_LCD->RAM8 = 0;

CW_LCD->RAM9 = 0;

if(temp == 0)

show_num(0,0);

while(temp>0)

{

j = temp%10;

show_num(i,j);

temp /=10;

i++;

}

}

void show_num(uint8_t wei, uint8_t num)

{

switch(wei)

{

case 7:

{

//顯示第7個數碼管

CW_LCD->RAM0 |= num_H[num]<<8 | num_L[num];

break;

}

case 6:

{

//顯示第6個數碼

CW_LCD->RAM0 |= (num_H[num]<<8 | num_L[num]) <<16;

break;

}

case 5:

{

//顯示第5個數碼管

CW_LCD->RAM1 |= num_L[num];

CW_LCD->RAM8 |= num_H[num];

break;

}

case 4:

{

//顯示第4個數碼管

CW_LCD->RAM8 |= num_H[num]<<16 | num_L[num]<<8;

break;

}

case 3:

{

//顯示第3個數碼管

CW_LCD->RAM8 |= num_L[num]<<24;

CW_LCD->RAM9 |= num_H[num];

break;

}

case 2:

{

//顯示第2個數碼管

CW_LCD->RAM9 |= num_H[num]<<16 | num_L[num]<<8;

break;

}

case 1:

{

//顯示第1個數碼管

CW_LCD->RAM1 |= num_H[num]<<8;

CW_LCD->RAM9 |= num_L[num]<<24;

break;

}

case 0:

{

//顯示第0個數碼管

CW_LCD->RAM1 |= num_H[num]<<24 | num_L[num]<<16;

break;

}

}

}

void LCD_Configuration(void)

{

LCD_InitTypeDef LCD_InitStruct = {0};

LCD_InitStruct.LCD_Bias = LCD_Bias_1_3;

LCD_InitStruct.LCD_ClockSource = LCD_CLOCK_SOURCE_LSI;

LCD_InitStruct.LCD_Duty = LCD_Duty_1_4;

LCD_InitStruct.LCD_ScanFreq = LCD_SCAN_FREQ_256HZ;

LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal;

__RCC_LCD_CLK_ENABLE();

RCC_LSI_Enable();

LCD_Init(&LCD_InitStruct); //基本配置

// BTL004 LCD 對應的連接

//PA12 COM3

//PA11 COM2

//PA10 COM1

//PA09 COM0

//PA08 SEG0

//PC09 SEG1

//PC08 SEG2

//PC07 SEG3

//PC06 SEG4

//PD15 SEG32

//PD14 SEG33

//PD13 SEG34

//PD12 SEG35

//PD11 SEG36

//PD10 SEG37

//PD09 SEG38

//PD08 SEG39

//PB15 SEG5

//PB14 SEG6

//PB13 SEG7

// 分配引腳

LCD_COMConfig(LCD_COM0 | LCD_COM1 | LCD_COM2 | LCD_COM3, ENABLE);

LCD_SEG0to23Config(0x0000FF, ENABLE);

LCD_SEG32to55Config(0x0000FF,ENABLE);

CW_LCD->RAM[0] = 0;

CW_LCD->RAM[1] = 0;

CW_LCD->RAM2 = 0;

CW_LCD->RAM3 = 0;

CW_LCD->RAM4 = 0;

CW_LCD->RAM5 = 0;

CW_LCD->RAM6 = 0;

CW_LCD->RAM7 = 0;

CW_LCD->RAM8 = 0;

CW_LCD->RAM9 = 0;

CW_LCD->RAM10 = 0;

CW_LCD->RAM11 = 0;

CW_LCD->RAM12 = 0;

CW_LCD->RAM13 = 0;

LCD_Cmd(ENABLE);

CW_LCD->RAM0 = 0x0f0f;

LCD_ContrastConfig(LCD_Contrast_Level_2);

LCD_DriveVoltageConfig(LCD_INRS_LEVEL_0);

}

5、主函數中,我們檢查按鍵1、按鍵2,并做出相應的處理。具體代碼如下:

#include "main.h"

void NVIC_Configuration(void);

void RCC_Configuration(void);

uint8_t Key1Count = 0;

uint8_t Key2Count = 0;

int32_t main(void)

{

uint32_t show_conut=0;

uint32_t time_count = 0;

CW_SYSCTRL->AHBEN_f.GPIOC = 1U; //Open GPIOA Clk

CW_GPIOC->ANALOG_f.PIN2 = 0U; //Digital

CW_GPIOC->BRR_f.BRR2 = 1U; //Reset PA00

CW_GPIOC->DIR_f.PIN2 = 0U; //Output

RCC_Configuration();

GPIO_Configuration();

NVIC_Configuration();

LCD_Configuration();

show_nums(show_conut);

while(1)(//file1.elecfans.com/web2/M00/8A/01/wKgaomSOTM-AOJUkAAWbBlv4TTM763.zip)

{

if(PA04_GETVALUE() == 0)

{

FirmwareDelay( 20000 );

if(PA04_GETVALUE() == 0)

{

Key1Count++;

}

}

if(PA05_GETVALUE() == 0)

{

FirmwareDelay( 20000 );

if(PA05_GETVALUE() == 0)

{

Key2Count++;

}

}

//如果按下2暫停顯示

if(Key1Count == 2 )

{

Key1Count=0;

}

//按下K2清零,停止顯示

if(Key2Count==1)

{

show_conut = 0;

Key1Count = 0;

Key2Count = 0;

show_nums(show_conut);

}

FirmwareDelay( 200 );

time_count ++;

if(time_count > 1000)

{

time_count = 1;

//如果按下1開始顯示

if(Key1Count ==1)

{

show_conut ++;

show_nums(show_conut);

}

//溢出清零

if(show_conut==65535)

{

show_conut=0;

}

//翻轉LED1

CW_GPIOC->TOG = bv2;

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • lcd
    lcd
    +關注

    關注

    34

    文章

    4424

    瀏覽量

    167400
  • 計數器
    +關注

    關注

    32

    文章

    2256

    瀏覽量

    94476
  • RCC
    RCC
    +關注

    關注

    0

    文章

    93

    瀏覽量

    26932
  • LCD驅動
    +關注

    關注

    4

    文章

    88

    瀏覽量

    26639
收藏 人收藏

    評論

    相關推薦

    基于CW32L083的線控器方案設計

    基于武漢推出的CW32L083設計的空調線控器產品.
    的頭像 發表于 06-25 14:23 ?12.3w次閱讀
    基于<b class='flag-5'>CW32L083</b>的線控器方案設計

    CW32L083 RTC初始化設置

    介紹CW32L083的RTC初始化設置
    的頭像 發表于 06-24 10:16 ?1532次閱讀
    <b class='flag-5'>CW32L083</b> RTC初始化設置

    基于CW32L083的空調遙控方案設計

    基于武漢半導體推出的CW32L083而設計的的空調遙控方案
    的頭像 發表于 06-21 16:03 ?1523次閱讀
    基于<b class='flag-5'>CW32L083</b>的空調遙控<b class='flag-5'>器</b>方案設計

    武漢】IAR Embedded Workbench?集成開發環境已全面支持武漢CW32 MCU系列

    版本起,IAR將全面支持武漢CW32F030系列、CW32F003系列、CW32L083
    發表于 06-14 14:54

    武漢Cortex-M0+ 32位低功耗MCU CW32L083系列產品介紹

    、有線和無線傳感模塊、表計等產品。武漢官方網站已經發布了CW32L083系列MCU的數據手冊、用戶手冊、應用筆記等技術文檔,以及配套的
    發表于 08-24 09:12

    武漢CW32L083系列MCU在空氣凈化的應用介紹

    單片機CW32L083系列產品作為空氣凈化的控制核心,結合傳感、顯示、驅動以及無線收發
    發表于 10-13 16:57

    武漢CW32L083開發板介紹

    VxTx StartKit 評估板需要搭配 CW-DAPLINK 調試一起使用。該評估板配有 CW32L083 StartKit 軟件包及 CW32L083-StdPeriph-Li
    發表于 10-20 11:35

    分享武漢CW32L083VxTx_StartKit開發板資料

    最近武漢在做超低功耗開發活動,我申請到了CW32L083VxTx_StartKit開發板。將做一系列的開發板連載活動。今天把收集放到這里,一來可以以后取用方便,二來給大家分享資料
    發表于 06-08 10:00

    分享武漢CW32L083VxTx_StartKit開發板資料

    分享武漢CW32L083開發板資料
    的頭像 發表于 06-08 09:54 ?2.6w次閱讀

    CW32L083段碼屏驅動

    CW32L083開發板上有8個段碼LCD顯示,使其顯示為0-9數字。
    的頭像 發表于 06-18 09:13 ?18.1w次閱讀
    <b class='flag-5'>CW32L083</b>段碼屏驅動

    武漢Cortex-M0+ 32位低功耗MCU CW32L083系列產品介紹

    Cortex-M0+低功耗MCUCW32L083系列型號展示武漢半導體32位低功耗CW32L083系列集成了主頻高達64MHz的ARM?
    的頭像 發表于 08-25 14:06 ?2502次閱讀
    <b class='flag-5'>武漢</b><b class='flag-5'>芯</b><b class='flag-5'>源</b>Cortex-M0+ 32位低功耗MCU <b class='flag-5'>CW32L083</b>系列產品介紹

    武漢CW32L083系列MCU在空氣凈化的應用介紹

    本次介紹的空氣凈化是采用單片機CW32L083系列產品作為空氣凈化的控制核心,結合傳感、顯示、驅動
    的頭像 發表于 10-13 17:00 ?1135次閱讀
    <b class='flag-5'>武漢</b><b class='flag-5'>芯</b><b class='flag-5'>源</b><b class='flag-5'>CW32L083</b>系列MCU在空氣凈化<b class='flag-5'>器</b>的應用介紹

    武漢CW32L083開發板介紹

    CW32L083VxTxStartKit評估板需要搭配CW-DAPLINK調試一起使用。該評估板配有CW32L083StartKit軟件包及CW
    的頭像 發表于 10-20 11:41 ?877次閱讀
    <b class='flag-5'>武漢</b><b class='flag-5'>芯</b><b class='flag-5'>源</b><b class='flag-5'>CW32L083</b>開發板介紹

    CW32L083實現SHT30驅動

    CW32L083驅動SHT30,并顯示到LCD屏上。
    的頭像 發表于 06-22 09:57 ?3071次閱讀
    <b class='flag-5'>CW32L083</b>實現SHT30驅動

    CW32L083如何實現AUTOTRIM時鐘校準?

    CW32L083如何實現AUTOTRIM時鐘校準?
    的頭像 發表于 11-07 17:17 ?636次閱讀
    <b class='flag-5'>CW32L083</b>如何實現AUTOTRIM時鐘校準?
    主站蜘蛛池模板: 精品99久久久久成人网站| 大香伊人久久| a4you销魂gogo人体| sm主人调教揉花蒂H| 成年免费三级视频| 国产高清视频a在线大全| 国产亚洲视频中文字幕| 九九精品视频在线播放| 美女被抽插到哭内射视频免费| 女教师の诱惑| 善良的小峓子2在钱中文版女主角| 午夜aaaa| 中文字幕本庄优花喂奶| metart中国撒尿人体欣赏| 国产MD视频一区二区三区| 国拍在线精品视频免费观看| 久久亚洲欧美国产综合| 漂亮的保姆6在线观看中文 | 国产精品乱码色情一区二区视频| 国产在线一卡二卡| 魅男mangay| 色综合久久天天影视网| 亚洲人成www在线播放| 99精品影院| 国产毛多水多高潮高清| 伦理电影v男人天堂| 日韩视频中文字幕精品偷拍| 亚洲精品无码午夜福利在线观看| 5g在线视讯年龄确认海外禁止进入| 成年AV动漫| 久久伊人网站| 双性大乳浪受噗呲噗呲h总| 一本之道高清在线观看免费| 被同桌摸出水来了好爽的视频| 黄色三级图片| 日本特黄网站| 中国xxxxx69| 国产精品久久久亚洲偷窥女厕| 毛片视频大全| 亚洲国产成人精品不卡青青草原| 99视频全部看免费观|