hc32l13x lcd示例代码
时间: 2023-07-02 12:10:06 浏览: 114
以下是HC32L13X系列微控制器的LCD显示模块示例代码:
```c
#include "hc32l13x.h"
#include "lcd.h"
/**
* @brief Main function of lcd project
* @param None
* @retval int32_t return value, if needed
*/
int32_t main(void)
{
/* Initializes LCD. */
Lcd_Init();
/* Clears LCD. */
Lcd_Clear();
/* Displays "Hello, world!" on LCD. */
Lcd_DisplayString(0, 0, "Hello, world!");
while (1)
{
}
}
```
其中,`Lcd_Init()`函数初始化LCD显示模块,`Lcd_Clear()`函数清空LCD显示屏,`Lcd_DisplayString()`函数在指定位置显示字符串。
如果需要更详细的示例代码,可以参考官方提供的 `HC32L13x_DDL_Examples` 中的 `lcd` 例程。
相关问题
hc32l13x数码管示例代码
以下是HC32L13x单片机使用数码管的示例代码:
```c
#include "hc32l13x.h"
#include "hc32l13x_clk.h"
#include "hc32l13x_gpio.h"
#define SEG_A_PIN (GPIO_PIN_0)
#define SEG_B_PIN (GPIO_PIN_1)
#define SEG_C_PIN (GPIO_PIN_2)
#define SEG_D_PIN (GPIO_PIN_3)
#define SEG_E_PIN (GPIO_PIN_4)
#define SEG_F_PIN (GPIO_PIN_5)
#define SEG_G_PIN (GPIO_PIN_6)
#define SEG_DP_PIN (GPIO_PIN_7)
#define DIGIT1_PIN (GPIO_PIN_13)
#define DIGIT2_PIN (GPIO_PIN_14)
#define DIGIT3_PIN (GPIO_PIN_15)
/* 数码管段选对应的GPIO端口和引脚 */
static stc_gpio_t* const SEG_PORT[8] = {GPIOB, GPIOB, GPIOB, GPIOB, GPIOB, GPIOB, GPIOB, GPIOB};
static uint32_t const SEG_PIN[8] = {SEG_A_PIN, SEG_B_PIN, SEG_C_PIN, SEG_D_PIN, SEG_E_PIN, SEG_F_PIN, SEG_G_PIN, SEG_DP_PIN};
/* 数码管位选对应的GPIO端口和引脚 */
static stc_gpio_t* const DIGIT_PORT[3] = {GPIOC, GPIOC, GPIOC};
static uint32_t const DIGIT_PIN[3] = {DIGIT1_PIN, DIGIT2_PIN, DIGIT3_PIN};
/* 数码管编码表,从0到F */
static uint8_t const SEG_CODE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
/**
* @brief 数码管初始化
*/
static void Seg_Init(void)
{
uint8_t i;
/* 设置段选引脚为输出模式 */
for(i = 0; i < 8; i++)
{
GPIO_SetFunc(SEG_PORT[i], SEG_PIN[i], GPIO_FUNC_0_SEG);
GPIO_SetOutput(SEG_PORT[i], SEG_PIN[i]);
}
/* 设置位选引脚为输出模式 */
for(i = 0; i < 3; i++)
{
GPIO_SetFunc(DIGIT_PORT[i], DIGIT_PIN[i], GPIO_FUNC_0_SEG);
GPIO_SetOutput(DIGIT_PORT[i], DIGIT_PIN[i]);
}
}
/**
* @brief 显示数字
* @param [in] digit 要显示的数字,0到15
* @param [in] pos 数码管位置,从1到3
*/
static void Seg_ShowDigit(uint8_t digit, uint8_t pos)
{
uint8_t code;
/* 数码管编码 */
code = SEG_CODE[digit];
/* 设置段选引脚输出 */
GPIO_SetOutput(SEG_PORT[0], SEG_A_PIN, (code & 0x01) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[1], SEG_B_PIN, (code & 0x02) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[2], SEG_C_PIN, (code & 0x04) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[3], SEG_D_PIN, (code & 0x08) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[4], SEG_E_PIN, (code & 0x10) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[5], SEG_F_PIN, (code & 0x20) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[6], SEG_G_PIN, (code & 0x40) ? 0 : 1);
GPIO_SetOutput(SEG_PORT[7], SEG_DP_PIN, (code & 0x80) ? 0 : 1);
/* 设置位选引脚输出 */
switch(pos)
{
case 1:
GPIO_SetOutput(DIGIT_PORT[0], DIGIT_PIN[0], 0);
GPIO_SetOutput(DIGIT_PORT[1], DIGIT_PIN[1], 1);
GPIO_SetOutput(DIGIT_PORT[2], DIGIT_PIN[2], 1);
break;
case 2:
GPIO_SetOutput(DIGIT_PORT[0], DIGIT_PIN[0], 1);
GPIO_SetOutput(DIGIT_PORT[1], DIGIT_PIN[1], 0);
GPIO_SetOutput(DIGIT_PORT[2], DIGIT_PIN[2], 1);
break;
case 3:
GPIO_SetOutput(DIGIT_PORT[0], DIGIT_PIN[0], 1);
GPIO_SetOutput(DIGIT_PORT[1], DIGIT_PIN[1], 1);
GPIO_SetOutput(DIGIT_PORT[2], DIGIT_PIN[2], 0);
break;
default:
break;
}
}
int main(void)
{
uint8_t cnt = 0;
/* 系统时钟初始化 */
CLK_HSECmd(CLK_HSE_ON);
CLK_WaitClockReady(CLK_FLAG_HSESTB);
CLK_SetSysclkDiv(CLK_SYSCLK_DIV1);
CLK_SetSysclkSrc(CLK_SYSCLKSOURCE_HSE);
CLK_SetHCLKDiv(CLK_SYSCLK_DIV1);
CLK_SetPCLKDiv(CLK_SYSCLK_DIV1);
/* 数码管初始化 */
Seg_Init();
while(1)
{
/* 显示数字 */
Seg_ShowDigit(cnt % 16, 1);
Seg_ShowDigit((cnt / 16) % 16, 2);
Seg_ShowDigit((cnt / 256) % 16, 3);
cnt++;
}
}
```
在这个例子中,我们通过HC32L13x单片机控制了三个位数码管显示一个计数器的值。在`main`函数中,我们循环计数器`cnt`并调用`Seg_ShowDigit`函数显示不同的位数。`Seg_ShowDigit`函数根据要显示的数字和数码管位置设置相应的GPIO引脚输出状态。
hc32l13x lcd数码管分别显示示例代码
以下是 HC32L13X 控制 LCD 数码管分别显示的示例代码:
```c
#include "hc32l13x.h"
#include "hc32l13x_clk.h"
#include "hc32l13x_gpio.h"
#include "hc32l13x_lcd.h"
/**
* @brief LCD 数码管分别显示示例
* @param None
* @retval int32_t
*/
int32_t main(void)
{
/* CLK配置 */
CLK_XtalConfig(CLK_XTAL_FREQ_4MHZ, CLK_ATRDIS_WAIT_ON);
/* LCD配置 */
LCD_Init();
LCD_SetDisplayMode(LCD_DISPLAY_ON);
LCD_SetDataLength(LCD_DATA_LENGTH_8BIT);
LCD_SetBias(LCD_BIAS_1_3);
LCD_EnableIrregularSegment(LCD_SEGMENT_0_9 | LCD_SEGMENT_A_F);
LCD_SetFrameFreq(LCD_FRAME_FREQ_0);
LCD_SetDuty(LCD_DUTY_1_4);
LCD_SetContrast(LCD_CONTRAST_2_96V);
LCD_SetVoltageSource(LCD_VOLTAGE_INTERNAL);
LCD_Enable();
/* GPIO配置 */
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_0, GPIO_FUNC_4_LCD_SEG0);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_1, GPIO_FUNC_4_LCD_SEG1);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_2, GPIO_FUNC_4_LCD_SEG2);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_3, GPIO_FUNC_4_LCD_SEG3);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_4, GPIO_FUNC_4_LCD_SEG4);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_5, GPIO_FUNC_4_LCD_SEG5);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_6, GPIO_FUNC_4_LCD_SEG6);
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_7, GPIO_FUNC_4_LCD_SEG7);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_0, GPIO_FUNC_4_LCD_SEG8);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_1, GPIO_FUNC_4_LCD_SEG9);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_2, GPIO_FUNC_4_LCD_SEGA);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_3, GPIO_FUNC_4_LCD_SEGB);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_4, GPIO_FUNC_4_LCD_SEGC);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_5, GPIO_FUNC_4_LCD_SEGD);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_6, GPIO_FUNC_4_LCD_SEGE);
GPIO_SetFunc(GPIO_PORT_1, GPIO_PIN_7, GPIO_FUNC_4_LCD_SEGF);
while (1)
{
/* 数码管1显示1,数码管2显示2,数码管3显示3,数码管4显示4 */
LCD_DisplayNumber(1, 1);
LCD_DisplayNumber(2, 2);
LCD_DisplayNumber(3, 3);
LCD_DisplayNumber(4, 4);
}
}
```
该示例代码首先进行了 CLK 和 LCD 的初始化配置,然后对 GPIO 进行了配置,将 LCD 的每个段对应的引脚与 GPIO 进行了映射。最后,在一个无限循环中,调用 `LCD_DisplayNumber()` 函数将数字 1、2、3、4 分别显示在 LCD 的四个数码管上。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)