华大HC32L136开发板——按键控制笔段式段码LCD显示

华大HC32L136开发板——按键控制笔段式段码LCD显示

HC32L136入门

本文基于华大HC32L136_DDL_Rev1.9.2Lite的官方库,在lcd_mode例程的基础上加入gpio_input实现按键控制;

以下推荐两篇供入门参考的大佬博客:
华大HC32L136开发板准备工作: 国产超低功耗华大单片机HC32L136开发板上手入门.
笔段式段码LCD显示原理介绍: 华大单片机HC32L136笔段式段码LCD显示.(仅供参考LCD原理)

代码实现

笔段式段码LCD真值表

华大HC32L136开发板——按键控制笔段式段码LCD显示

 /*
 *LCD屏一共四个数字显示单元,LCD每个数字显示由两个字节的各低四位控制,
 *         例如显示一个数字3则 lcd_data = {0x00000000,0x00000f02};
 *         数字0-9 数据码:
 * 					   0-------0x0f05
 *                     1-------0x0600
 *                     2-------0x0b06
 *                     3-------0x0f02
 *                     4-------0x0603
 *                     5-------0x0d03
 *                     6-------0x0d07
 *                     7-------0x0700
 *                     8-------0x0f07
 *                     9-------0x0f03
 *                     .-------0x0008
 *                     :-------0x0008
 */
static uint32_t lcd_data[12] = {
    0x0f050f05, 0x06000600, 0x0b060b06, 0x0f020f02, 0x06030603,0x0d030d03, 
    0x0d070d07, 0x07000700, 0x0f070f07, 0x0f030f03,0x00080008, 0x00080008};

main函数

int32_t main(void)
{
		int i=0;
	
    Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE);            ///< 使能RCL时钟
    Sysctrl_SetRCLTrim(SysctrlRclFreq32768);                ///< 配置内部低速时钟频率为32.768kHz

    Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);   ///< 开启LCD时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);  ///< 开启GPIO时钟
    
	///< 按键端口初始化————gpio_input例程
    App_UserKeyInit();
    
    ///< LED端口初始化————gpio_input例程
    App_LedInit();
	
    App_PortCfg();               ///< LCD端口配置————lcd_mode例程
    App_LcdCfg();                ///< LCD模块配置————lcd_mode例程

    Lcd_ClearDisp();             ///< 清屏————lcd_mode例程LCD官方库

    while(1)
    {
			if(i>9) i=0;
			
         ///< 检测USER按键是否按下(低电平)
        if(FALSE == Gpio_GetInputIO(STK_USER_PORT, STK_USER_PIN))
        {
            ///< LED点亮
            Gpio_SetIO(STK_LED_PORT, STK_LED_PIN);
						delay1ms(100);//消抖
						if(FALSE == Gpio_GetInputIO(STK_USER_PORT, STK_USER_PIN))
						{
								i++;
								
						}
						while(!Gpio_GetInputIO(STK_USER_PORT, STK_USER_PIN));//松手检测
        }
        else
        {
            ///< LED关闭
            Gpio_ClrIO(STK_LED_PORT, STK_LED_PIN);
        }
		
				Lcd_WriteRam(0,lcd_data[i]);  ///< 赋值寄存器LCDRAM0————lcd_mode例程LCD官方库
				Lcd_WriteRam(1,lcd_data[i]);  ///< 赋值寄存器LCDRAM1————lcd_mode例程LCD官方库
    }
		
}

实物展示

我采用的是J-LINK / J-TRACE Cortex——SW的调试方式,连好接线后,编译下载程序到开发板。

功能 : 初始复位显示0000,当按下USER按键后LED点亮且LCD数字自增1,数字达到9999后再从0000循环。

效果如图示:
华大HC32L136开发板——按键控制笔段式段码LCD显示

华大HC32L136开发板——按键控制笔段式段码LCD显示
大四实习的第一个小功能实现,初识国产单片机;华大加油!国产加油!

上一篇:程序员三大浪漫--编译原理+操作系统+图形学


下一篇:最大半联通子图(Tarjan)