【目的】
CW32L083開(kāi)發(fā)板上有8個(gè)段碼LCD顯示,使其顯示為0-9數(shù)字。
實(shí)現(xiàn)步驟
- 初始化LCD
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 對(duì)應(yīng)的連接
//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);
}
- 段碼LCD一個(gè)8位數(shù)據(jù)由高、低兩個(gè)顯示位來(lái)組成,定義函數(shù)如下:
/* 段碼低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
};
- 定義顯示7-0位數(shù)碼LCD如下:
void show_num(int8_t num)
{
//顯示第7個(gè)數(shù)碼管
CW_LCD- >RAM0 = num_H[num]< < 8 | num_L[num];
//顯示第6個(gè)數(shù)碼管
CW_LCD- >RAM0 |= (num_H[num]< < 8 | num_L[num]) < < 16;
//顯示第5個(gè)數(shù)碼管
CW_LCD- >RAM1 = num_L[num];
CW_LCD- >RAM8 = num_H[num];
//顯示第4個(gè)數(shù)碼管
CW_LCD- >RAM8 |= num_H[num]< < 16 | num_L[num]< < 8;
//顯示第3個(gè)數(shù)碼管
CW_LCD- >RAM8 |= num_L[num]< < 24;
CW_LCD- >RAM9 = num_H[num];
//顯示第2個(gè)數(shù)碼管
CW_LCD- >RAM9 |= num_H[num]< < 16 | num_L[num]< < 8;
//顯示第1個(gè)數(shù)碼管
CW_LCD- >RAM1 |= num_H[num]< < 8;
CW_LCD- >RAM9 |= num_L[num]< < 24;
//顯示第0個(gè)數(shù)碼管
CW_LCD- >RAM1 |= num_H[num]< < 24 | num_L[num]< < 16;
}
- main主函數(shù)程序如下:
#include "main.h"
void RCC_Configuration(void);
int32_t main(void)
{
uint8_t i=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();
LCD_Configuration();
while(1)
{
CW_GPIOC- >TOG = bv2;
FirmwareDelay( 8000000 );
//從零顯示到8
show_num(i);
i++;
if(i==10)
i=0;
}
}
void RCC_Configuration(void)
{
/* 0. HSI使能并校準(zhǔn) */
// RCC_HSI_OUT();
RCC_HSI_Enable(RCC_HSIOSC_DIV6);
/* 1. 設(shè)置HCLK和PCLK的分頻系數(shù)*/
RCC_HCLKPRS_Config(RCC_HCLK_DIV1);
RCC_PCLKPRS_Config(RCC_PCLK_DIV1);
// RCC_HCLK_OUT();
// __breakpoint(0);
/* 2. 使能PLL,通過(guò)HSI倍頻到64MHz */
RCC_PLL_Enable(RCC_PLLSOURCE_HSI, 8000000, RCC_PLL_MUL_8); // HSI 默認(rèn)輸出頻率8MHz
// RCC_PLL_OUT();
///< 當(dāng)使用的時(shí)鐘源HCLK大于24M,小于等于48MHz:設(shè)置FLASH 讀等待周期為2 cycle
///< 當(dāng)使用的時(shí)鐘源HCLK大于48M,小于等于72MHz:設(shè)置FLASH 讀等待周期為3 cycle
__RCC_FLASH_CLK_ENABLE();
FLASH_SetLatency(FLASH_Latency_3);
/* 3. 時(shí)鐘切換到PLL */
RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);
RCC_SystemCoreClockUpdate(64000000);
/* 4. 配置外設(shè)時(shí)鐘 */
// __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();
}
下載到開(kāi)發(fā)板后就可以周期的全屏顯示0-9的數(shù)字了。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
-
FlaSh
+關(guān)注
關(guān)注
10文章
1633瀏覽量
147939 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1882瀏覽量
91063 -
LCD顯示
+關(guān)注
關(guān)注
0文章
132瀏覽量
18360
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
[技術(shù)手冊(cè)] CW32L083數(shù)據(jù)手冊(cè)
CW32L083數(shù)據(jù)手冊(cè),PSMCU0116.pdf,Rev1.2
發(fā)表于 05-31 16:13
武漢芯源Cortex-M0+ 32位低功耗MCU CW32L083系列產(chǎn)品介紹
、有線和無(wú)線傳感器模塊、表計(jì)等產(chǎn)品。武漢芯源官方網(wǎng)站已經(jīng)發(fā)布了CW32L083系列MCU的數(shù)據(jù)手冊(cè)、用戶手冊(cè)、應(yīng)用筆記等技術(shù)文檔,以及配套的StartKit開(kāi)發(fā)板資料、底層外設(shè)驅(qū)動(dòng)軟件庫(kù)和應(yīng)用例程等
發(fā)表于 08-24 09:12
武漢芯源CW32L083開(kāi)發(fā)板介紹
評(píng)估板特征;▼ 根據(jù)提供的例程開(kāi)發(fā)用戶自己的程序。4.注意事項(xiàng)▼ LCD 顯示屏及設(shè)置接口CW32L083VxTx StartKit 評(píng)估板帶有一個(gè) 4x16 段碼的 8 位 8 字
發(fā)表于 10-20 11:35
CW32L083產(chǎn)品介紹
CW32L083是一款基于eFlash的單芯片低功耗微控制器,集成了ARM?Cortex?-M0+
核心,主頻高達(dá)64MHz,高速嵌入式存儲(chǔ)器(高達(dá)256K字節(jié)的FLASH和
高達(dá)24K字節(jié)
發(fā)表于 09-14 06:41
評(píng)論