历史上的今天
今天是:2025年12月08日(星期一)
2022年12月08日 | 基于 STM32 设计的指针式电子钟与日历
2022-12-08 来源:zhihu
1. 项目简介
这是基于 STM32 设计的一个指针式电子钟+万年历小项目,采用 3.5 寸的 LCD 屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是 LCD 屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。
时钟的时间是直接采用 STM32 本身的 RTC 时钟,室内的室温数据采用 DS18B20 温度传感器获取,STM32 芯片的具体型号是 STM32F103ZET6,只要是 STM32F1 系列的开发板,代码都是可以通用的。
LCD 显示屏采用的正点原子的 3.5 寸 TFT 显示屏,支持 8080 时序,自带触摸屏功能,触摸屏是电阻屏,驱动芯片是 XPT2046,SPI 接口,通信非常方便。
STM32F103ZET6 带有 FSMC 功能,可以输出 8080 时序,本项目里驱动 LCD 屏就采用 FSMC 控制的,效率比较高。
主界面如下:

项目源码下载地址: https://download.csdn.net/download/xiaolong1126626497/63897554
项目视频演示地址: https://live.csdn.net/v/182594
2. 项目功能介绍
下面对每个子功能页面做详细讲解。
2.1 实时时钟页面
在 LCD 屏上方显示表盘、分针、时针、 秒针、刻度、更改时钟时间方块,并实现分针、时针、秒针的移动,在实时时钟下方同步显示数字时钟。

运用触摸屏功能实现时钟设置功能,点击“+” “-”至设置时钟方块,跳出设置时钟界面,即可开始设置时钟与日期;点击“+”“-”至设置闹钟方块,跳出设置闹钟界面,即可开始设置闹钟。

2.2 日历页面
在 LCD 屏中部显示日期、星期、天气、实时温度,在 LCD 屏下方显示日历、左右两边显示黄历,并在日历上重点突出今天的日期。

3. 项目实现主要程序讲解
3.1 流程图

3.2 ds18b2.c 代码
下面列出 DS18B20 温度传感器主要代码.





3.3 lcd 屏图形绘制核心算法
整个项目的功能都是在 LCD 显示屏上,需要绘制线段、绘制圆、绘制矩形、绘制角度线段、绘制中文、绘制数字等等,下面列出这部分的核心代码。









史海拾趣
|
基于IAR编译环境,虽然简单. 但却有ucos程序的使用的几个要素. 为了练习中断和邮箱,没有使用系统timer0时间片定时. 而是使用timer1定时,中断发生后,通过邮箱把要显示的led灯的位置送给显示任务. ucosII编程的最大的一个好处是程序符合自然思维, ...… 查看全部问答> |
|
求助: 最近,我碰到一个三相四线制的电机,(因为电机经常性烧坏,引起我注意)我发现,这个电机没有缺相保护,我想如果要在这个电机上加一个缺相保护,需要用什么器件,或者怎么设计?… 查看全部问答> |
|
eVC 在 WinCE 下播放 MP3,我试了3种方法都不成功 我尝试了以下方法: 1. int mciSendString(CString lpstrCommand, CString lpstrRetumString, int uReturnLength, int hwndCallback); mciSendString(\"close OpenFile\", \"\", 0, 0); mciSendString(\"open \"test.mp3\" alias OpenFile typ ...… 查看全部问答> |
|
windowsCE系统文件有什么办法能够打开吗,fopen好像不可以,连在ActiveSync中复制也复制不出来。 windowsCE系统文件有什么办法能够打开吗,fopen好像不可以,连在ActiveSync中复制也复制不出来。 我就想打开一个windowsCE windows文件夹里的一个文件,我现在想通过复制到我的电脑桌面都复制不了,怎么这么强?不可以复制的,有什么办法吗?… 查看全部问答> |
|
/******************************************************************************************* ????????: I2C_GetSpeed ?è ??: ???? I2C ?????????? ????????: ?? ????????: ?? ·? &nbs ...… 查看全部问答> |
|
按照LVDS原理,当需要发送差分信号时,应该用LVDS的差分信号发送器,LVDS的输出时差分信号,应该有两路即IN+ 和 IN- ,IN=IN+ - IN- ,但我用LVDS模块进行设计时,输出端口只有一个,请问一下,这是怎么回事?模块的输出跟原理好像有差距?希望高手 ...… 查看全部问答> |
|
想编写微调控件spin control的应用程序,在加入微调控件之前程序是正确运行的,加入微调控件之后虽然程序编译正确,但是刚一运行就会退出,output窗口显示如下信息:Load module: WINCEA.exeLoad module: coredll.dllThe program \'[393005e] W ...… 查看全部问答> |




