上海航芯 ACM32F070开发板+触控功能评估板评估 - 第三篇 时钟和温度显示界面
[复制链接]
本测评实验使用RTC获取实时时间,使用I2C从板载传感器获取温度数据,将时间和温度像是在LCD屏幕上。
代码实现主要参考了SDK中LCD_TK和RTC 两个例程。SDK的架构设计还是不错的,添加新的driver文件都很方便。
本实验主要的实现代码如下:
void App_Test()
{
uint32_t fu32_Seconds;
uint32_t fu32_Days;
float ff_getTempHum[2];
uint16_t fu16_num_up, fu16_num_down;
uint32_t fu32_Displayup[4]={0},fu32_Displaydown[4]={0},fu32_num_123567p[7]=0},fu32_num_col[2]={0},fu32_num_s=0;
LCD_Config();
BUZZER_Init();
SHT30_Init();
RTC_Handle.u32_ClockSource = RTC_CLOCK_XTL;
RTC_Handle.u32_Compensation =COMPENSATION_INCREASE;
RTC_Handle.u32_CompensationValue = 0x05;
HAL_RTC_Config(&RTC_Handle);
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 = 0x21; // 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);
while (1)
{
HAL_RTC_GetTime(&gstr_Time_Get);
HAL_RTC_GetDate(&gstr_Date_Get);
HAL_RTC_GetTime(&gstr_Time_Get_Again);
if (gstr_Time_Get.u8_Seconds != gstr_Time_Get_Again.u8_Seconds)
{
continue;
}
if (fu32_Seconds != gstr_Time_Get.u8_Seconds)
{
fu32_Seconds = gstr_Time_Get.u8_Seconds;
//fu32_num_col[0] = 1;
fu32_num_col[1] = ~fu32_num_col[1];
//fu32_num_123567p[6] |=1;
fu32_num_123567p[1] |=1;
fu32_num_s |=S_DATA[1];
fu32_num_s |=(S_DATA[5] | S_DATA[6] | S_DATA[7] | S_DATA[8]);
fu32_num_s &=~S_DATA[0];
fu32_num_s |=S_DATA[12];//S13_BATW,S14_BAT1,S15_BAT2,S16_BAT3
fu32_num_s |=S_DATA[13];
fu32_num_s |=S_DATA[14];
fu32_num_s |=S_DATA[15];
SHT30_Read_Dat(I2C_Handle,gu8_RxBuffer);
SHT30_Read_Result(gu8_RxBuffer,ff_getTempHum);
fu16_num_up=(uint16_t)(ff_getTempHum[0]*100);
if(fu16_num_up>9999) fu16_num_up=9999;
fu32_Displayup[0]=fu16_num_up/1000%10;
fu32_Displayup[1]=fu16_num_up/100%10;
fu32_Displayup[2]=fu16_num_up/10%10;
fu32_Displayup[3]=fu16_num_up/1%10;
fu32_Displaydown[0] = gstr_Time_Get.u8_Minutes/16%16;;
fu32_Displaydown[1] = gstr_Time_Get.u8_Minutes/1%16;
fu32_Displaydown[2] = gstr_Time_Get.u8_Seconds/16%16;
fu32_Displaydown[3] = gstr_Time_Get.u8_Seconds/1%16;
LCD_YR1618A_VIEW(fu32_Displayup,fu32_Displaydown,fu32_num_123567p,fu32_num_col,fu32_num_s);
}
}
}
Demo视频:
3-1
|