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

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

HC32L136入门

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

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

代码实现

笔段式段码LCD真值表

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循环。

效果如图示:
初始化复位

按下USER按键后
大四实习的第一个小功能实现,初识国产单片机;华大加油!国产加油!

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeni成长小栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值