1135|3

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【上海航芯 ACM32F070开发板+触控功能评估板测评】通过LCD进行简单的时间显示 [复制链接]

  本帖最后由 KING_阿飞 于 2022-9-29 01:39 编辑

【上海航芯 ACM32F070开发板+触控功能评估板测评】通过LCD进行简单的时间显示

 为了更好的方便大家,同时方便自己,按照我的习惯,放上我的Github地址:

链接已隐藏,如需查看请登录或者注册
,大家需要的可以自取。

在上一节中,我们移植了RT-Thread Nano,下面我们开始LCD显示+RTC时钟

 一、LCD控制器

    通过查阅用户手册,我们发现ACM32F070这款开发板是自带LCD 控制器。

  • 其LCD特性:
  • 高度灵活的帧速率控制
  • 支持静态、 1/2、 1/3、 1/4、 1/6 和 1/8 占空比
  • 支持 1/2、 1/3、 1/4 偏置
  • 多达 16 个寄存器的 LCD 数据 RAM
  • 可通过软件配置 LCD 的对比度
  • 支持 A 类、 B 类波形
  •  2 种驱动波形生成方式
    • - 内部电阻分压、外部电阻分压
    • - 可选的滤波电容
    • - 可通过软件配置内部电阻分压方式的功耗,从而匹配 LCD 面板所需的电容电荷
  • 支持低功耗模式: LCD 控制器可在 Active、 Sleep、 Stop 模式下进行显示
  • 可配置帧中断
  • 支持 LCD 闪烁功能且可配置多种闪烁频率
  • 未使用的 LCD 区段和公共引脚可配置为数字或模拟功能

    LCD 支持 5 种占空比( Duty)的驱动波形:静态、 1/2、 1/3、 1/4、 1/6 和 1/8,由LCD_CR0.Duty 进行设置。 LCD 支持 3 种偏置( Bias)的驱动波形 1/2、 1/3 和 1/4,由LCD_CR0.Bias 进行设置。官方文档建议,按照下表配置:

驱动LCD的流程:

     1.根据 LCD 显示屏初始化 GPIO, 使能相应的 SEG/COM, 使能 LCD 模块时钟/中断;
    2.根据 LCD 显示屏设置合适的占空比/偏压/频率/显示模式等配置;
    3.选择合适的分压模式,并搭建相应的外部电路;
    4.使能 LCD 模块,向 LCD_RAM 中写入相应的数值开始驱动显示。

移植官方例程包:

    我们下载完官方的固件包后,打开LCD例程。在其中我们需要把BSP层的东西先移植过来,此处官方已经解耦。我这里先全部搬过来,为之后做准备。

 然后就是LCD应用层的编写:

/*********************************************************************************
* Function    : LCD_Config
* Description : Config LCD
* Input       : 
* Outpu       : 
* Author      : CWT                         Data : 2021Äê
**********************************************************************************/
void LCD_Config(void)
{   
    
    #if defined LCD_GDC04212
        LCD_DisplayNum=LCD_DisplayNum_GDC04212;
        LCD_Init=LCD_Init_GDC04212; 
        lcdhandle=&lcdhandle_GDC04212;

    #elif defined LCD_GDC03828
        LCD_DisplayNum=LCD_DisplayNum_GDC003828;
        LCD_Init=LCD_Init_GDC03828;
        lcdhandle=&lcdhandle_GDC03828;

    #else 
        LCD_DisplayNum=LCD_DisplayNum_YR1618A;
        LCD_Init=LCD_Init_YR1618A; 
        lcdhandle=&lcdhandle_YR1618A;
        

    #endif  
        LCD_Init();
        LCD_BACK_LED();
}

/*********************************************************************************
* Function    : LCD_IRQHandler
* Description : LCD Interrupt handler
* Input       : 
* Outpu       : 
* Author      : CWT                         Data : 2021Äê
**********************************************************************************/
void LCD_IRQHandler(void) 
{
    HAL_LCD_IRQHandler(lcdhandle);
  
}

 具体部分,大家可以去仓库看,这里就不全部放出。

二、RTC

    RTC 提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时间和日期都以 BCD 码的形式显示。 RTC 可以进行夏令时补偿。 RTC 可以工作在省电模式下,并通过软件配置来智能唤醒。 RTC 支持外接更高精度的低频时钟,用以达到更高的日历精度。

    主要特性

  • 可计算 00~99 年之间的秒、分、时、日、周、月、年
  • BCD 时间显示
  • 自动闰年调整
  • 数字校准功能:通过调整最小时间单位(最大可调精度 0.95ppm)来进行日历校准,
  • 调校后理论精度+/-0.477ppm
  • 周期唤醒中断
  • 闹钟功能
  • 可从管脚输出 XTLF 时钟信号供用户校准
  • RTC 计时器部分不复位
  • 2 路输入上下沿(侵入)时间戳功能
  • 5 个 32 位 (共 20 字节) 通用备份寄存器,能够在省电模式下保存数据。当有外部侵
  • 入事件发生时,备份寄存器可复位(可配置)。

BSP层的编写:

#include "rtc.h"
#include "ACM32Fxx_HAL.h"
#include <rtthread.h>

void RTC_Config(void)
{
	RTC_ConfigTypeDef RTC_Handle;
	RTC_TimeTypeDef  gstr_Time_Set;
	RTC_DateTypeDef  gstr_Date_Set;
	
	RTC_Handle.u32_ClockSource       = RTC_CLOCK_XTL;
  RTC_Handle.u32_Compensation      = COMPENSATION_INCREASE;    // ¿aê¼ê±Öó213¥£¬èç2»Dè213¥éèÖÃ213¥ÖμÎa0
  RTC_Handle.u32_CompensationValue = 0x05;                     // ¿aê¼ê±Öó213¥£¬èç2»Dè213¥éèÖÃ213¥ÖμÎa0

	HAL_RTC_Config(&RTC_Handle);
	
	/* Set RTC Time¡¢Date */
  gstr_Time_Set.u8_Hours   = 0x12;
	gstr_Time_Set.u8_Minutes = 0x30;
	gstr_Time_Set.u8_Seconds = 0x00;
	
	HAL_RTC_SetTime(&gstr_Time_Set);
	
	gstr_Date_Set.u8_Year    = 0x22;    // 2021  
  gstr_Date_Set.u8_Month   = RTC_MONTH_MARCH;  
  gstr_Date_Set.u8_Date    = 0x20; 
  gstr_Date_Set.u8_WeekDay = RTC_WEEKDAY_FRIDAY;
  HAL_RTC_SetDate(&gstr_Date_Set);
}

我们在这里需要注意的是:时间存放是16进制的。

     所以,我们在显示时间时,需要去位。这里我的操作是:

    

void LCD_time_display(void)
{
	HAL_RTC_GetTime(&gstr_Time_Get);
  HAL_RTC_GetDate(&gstr_Date_Get);  
	
	fu32_Displayup[0]=(gstr_Time_Get.u8_Hours & 0xF0)>>4;
	fu32_Displayup[1]=(gstr_Time_Get.u8_Hours & 0x0F);
	fu32_Displayup[2]=(gstr_Time_Get.u8_Minutes & 0xF0)>>4;
	fu32_Displayup[3]=(gstr_Time_Get.u8_Minutes & 0x0F);
	
	fu32_Displaydown[2]=(gstr_Time_Get.u8_Seconds & 0xF0)>>4;
	fu32_Displaydown[3]=(gstr_Time_Get.u8_Seconds & 0x0F);
}

三、效果展示

                                                                                                   

VID_20220929_011747

最新回复

nmg
想要哪些资料可以说说,看他们官方能提供吧   详情 回复 发表于 2022-9-29 09:24
点赞 关注
 
 

回复
举报

6968

帖子

11

TA的资源

版主

沙发
 

谢谢分享,这开发板做得非常优秀,入门应该非常容易吧。

点评

入门还算容易,有些资料还是有些缺乏,生态还没有建立起来。  详情 回复 发表于 2022-9-29 08:46
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
lugl4313820 发表于 2022-9-29 08:41 谢谢分享,这开发板做得非常优秀,入门应该非常容易吧。

入门还算容易,有些资料还是有些缺乏,生态还没有建立起来。

点评

nmg
想要哪些资料可以说说,看他们官方能提供吧  详情 回复 发表于 2022-9-29 09:24
 
 
 

回复

5261

帖子

239

TA的资源

管理员

4
 
KING_阿飞 发表于 2022-9-29 08:46 入门还算容易,有些资料还是有些缺乏,生态还没有建立起来。

想要哪些资料可以说说,看他们官方能提供吧

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表