【蓝桥杯最新板】蓝桥杯嵌入式液晶上实现电子时钟

news/2024/12/14 9:42:11/

这几年蓝桥杯比赛比较适合学生技能学习,考虑板子功能,提出完成的任务。

要求在液晶完成如下图效果:

主要是实现液晶显示时钟和数字时钟,具体样式可以依据实际情况微调。

实现过程:

1.需要画圆(外圆、内圆)

画圆比较简单,蓝桥杯中的例程有相应的函数。

LCD_DrawCircle(105, 160, 100);      //外圆LCD_DrawCircle(105,160,95);			//内圆

可以发现两行代码即可以搞定。只是需要你算出圆的中心点坐标。

2.然后在对应的地方表数字

数字也不难,只需要算好指定位置输入数字即可。

    LCD_DisplayChar(15, 175, (u8)49);	//ASCII码-1(12)LCD_DisplayChar(15, 165, (u8)50);	//ASCII码-2(12)LCD_DisplayChar(95, 250, (u8)57);	//ASCII码-9LCD_DisplayChar(175, 167, (u8)54);	//ASCII码-6LCD_DisplayChar(97, 82, (u8)51);	//ASCII码-3LCD_DisplayChar(25, 125, (u8)49);	//ASCII码-1	LCD_DisplayChar(55, 95, (u8)50);	//ASCII码-2LCD_DisplayChar(140, 95, (u8)52);	//ASCII码-4LCD_DisplayChar(168, 125, (u8)53);	//ASCII码-5LCD_DisplayChar(168, 210, (u8)55);	//ASCII码-7LCD_DisplayChar(140, 240, (u8)56);	//ASCII码-8LCD_DisplayChar(55, 240, (u8)49);	//ASCII码-1(10)LCD_DisplayChar(55, 230, (u8)48);	//ASCII码-0(10)LCD_DisplayChar(25, 210, (u8)49);	//ASCII码-1(11)LCD_DisplayChar(25, 200, (u8)49);	//ASCII码-1(11)

如何算出数字所在的位置,其实不难,因为数据在圆上是有规律的,只需要知道圆中心点坐标,和圆的半径,其他圆边缘的任何位置,都可以通过公式计算得出,比如,圆上的12数字坐标大概位置和2点的位置计算如下:

3.计算时分秒的针

这个相对是比较复杂的地方,因为时分秒的针是实时变化的,而且是一个线段,需要不停的变化,这是就需要思考如何实现。板子中的案例代码是有画线的样例的,但不能实现时分秒操作。

时分秒针子长度不一,不是难点,难点是要优化画线的代码。这里的画线代码如下:

void LCD_DrawLine_1(float Xstart, float Ystart, float Xend, float Yend,float x)         
{while(1){LCD_SetCursor(Xstart, Ystart);LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */LCD_WriteRAM(TextColor);Xstart -=(float)0.1;Ystart -=x;if(Xstart <= Xend){break;}}
}
void LCD_clearLine_1(float Xstart, float Ystart, float Xend, float Yend,float x)             
{while(1){LCD_SetCursor(Xstart, Ystart);LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */LCD_WriteRAM(White);Xstart -=(float)0.1;Ystart -=x;if(Xstart <= Xend){break;}}
}

代码中可以发现,输入参数由整型修改成的浮点型,目的是为在画线时像素点密一点,另外还增加了,线画到的终点坐标,还需要增加float x的值,这个怎么来的?和之前的计算方式一样,计算出终点坐标,让后将其分成若干等份,x相当于每等份的值。

时间通过RTC实现,也比较简单。

实现效果如下:

代码链接:

蓝桥杯最新板】蓝桥杯嵌入式液晶上实现电子时钟资源-CSDN文库

吾芯电子


http://www.ppmy.cn/news/1554986.html

相关文章

颜色的基本处理

数码相机能够获取彩色图像&#xff0c;但相机的色彩处理是一个非常复杂的过程&#xff0c;是非常重要的。 此过程生产制造商在细节方面都是不公布的&#xff0c;但是基本的概念是相同的。当相机捕捉一个真实场景时&#xff0c;是怎么还原成人眼所看到的图像呢&#xff1f; 1.R…

k8s中设置annotation的方法总结

k8s中设置annotation的方法总结 annotation是什么 在 Kubernetes 中&#xff0c;Annotations 是一种用于向 Kubernetes 对象附加非标识性元数据的机制。 annotation有什么用 annotation与 Labels 类似&#xff0c;但有一些关键区别和特定用途。 常用于存储与对象相关的配置…

【Hexo】给博客添加宠物挂件

适配安知鱼主题和Solitude主题&#xff0c;我采用的是安知鱼主题&#xff0c;Solitude主题可参考教程 {% link 给你的博客底部添加一排宠物,青桔气球,https://blog.qjqq.cn/posts/f69c.html %} 同时感谢梦爱吃鱼 大佬的耐心指导和帮助&#xff0c;原文可参考 {% link 给你的…

用于日语词汇学习的微信小程序+ssm

日语词汇学习小程序是高校人才培养计划的重要组成部分&#xff0c;是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。本学生所在学院多采用半手工管理日语词汇学习小程序的方式&#xff0c;所以有必要开发日语词汇…

单元测试中如何使用 Mockito 框架

使用 Mockito 进行单元测试的基本框架可以分为几个步骤。Mockito 是一个强大的 Java 框架&#xff0c;用于创建模拟对象&#xff08;mock objects&#xff09;&#xff0c;可以在不依赖外部系统或组件的情况下测试代码。以下是使用 Mockito 架构进行单元测试的通用步骤&#xf…

前端页面导出word

html-docx-js bug: vite使用html-docx.js会报错&#xff0c;点击下载上方文件替换即可 正文 npm install html-docx-js -S npm install file-saver -S<template><div id"managerReport">word内容......</div> </template><script>&l…

边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导

写成分量形式 原始式子&#xff1a; ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…

satoken 后端获取用户id的原理是啥 用了前端传的那个参数

在 Sa-Token 框架中&#xff0c;后端获取用户 ID 的过程与前端传递的参数密切相关。Sa-Token 是一个基于 JWT 的轻量级权限管理框架&#xff0c;主要用于解决权限控制、登录管理等问题。具体来说&#xff0c;后端如何获取用户 ID&#xff0c;取决于你前后端如何设计以及 Sa-Tok…