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 显示屏上,需要绘制线段、绘制圆、绘制矩形、绘制角度线段、绘制中文、绘制数字等等,下面列出这部分的核心代码。
相关文章









