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 显示屏上,需要绘制线段、绘制圆、绘制矩形、绘制角度线段、绘制中文、绘制数字等等,下面列出这部分的核心代码。
关键字:STM32 指针式 电子钟 日历
引用地址:
基于 STM32 设计的指针式电子钟与日历
推荐阅读最新更新时间:2024-10-28 06:52
关于STM32串口通信之疑惑小结
图1 如上图所示,第1420行,USART1_BASE为USART1基地址,(USART_TypeDef*) USART1_BASE 的作用是将USART1_BASE强制转换为 USART_TypeDef* 类型的指针,这条语句的整体作用是:将USART1_BASE强制转换为 USART_TypeDef* 类型的指针,然后将这个指针命名为USART1.(个人理解:USART1是一个指向USART_Typedef结构体类型的指针,即相当于USART1是一块空间的地址(首地址),在这个空间上按照 STM32的USART1寄存器地址的顺序依次排列着这个结构体的各个成员,每个结构体成员的地址(顺序)和STM32硬件上相应的寄存器地址相照
[单片机]
STM32的8种IO口的模式
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点: 1、利用外
[单片机]
STM32单片的启动过程解析
一、STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 ;********************(C)COPYRIGHT2011STMicroelectronics******************** ;*FileName:startup_stm32f10x_hd.s ;*Author:MCDApplicationTeam ;*Version:V3.5.0 ;*Date:11-March-2011 ;*Description:STM32F10xHighDensityDevicesvectortableforMDK-ARM ;*toolchain. ;*
[单片机]
STM32学习记录11:启动配置
当前的嵌入式应用程序开发过程里,C语言已成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点 因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫 启动文件 ,用英文单词来描述是 Bootloader 。 无论性能高下,结构简繁,价格贵贱,每一种微控制器(处理器)
[单片机]
stm32专题三十六:MDK编译过程和文件类型(四)
sct 分散加载文件的格式与应用 在使用 MDK 新建工程时,MDK 软件会要求选择对应的芯片型号: 然后,MDK会根据选择的芯片型号,自动获取(写入)芯片内部的 FLASH 和 SRAM 存储器概况如下: 然后,MDK 会生成一个后缀名为 sct 的分散加载文件,如下所示: 链接器根据该文件的配置分配各个节区地址,生成分散加载代码,因此我们通过修改该文件可以定制具体节区的存储位置。 下面,来分析一下这个 sct 文件: 在默认的 sct 文件配置中仅分配了 Code、 RO-data、 RW-data 及 ZI-data 这些大区域的地址,链接时各个节区(函数、变量等)直接根据属性排列到具体的地址空间。
[单片机]
STM32操作24位AD转换器AD7799芯片
AD7799是早些前ADI公司推出的一款高精度低速24位ADC器件,主要应用于低功耗精密测量场合。最近开发与气压检测相关的产品,选择了这个芯片,经过PCB的合理布线,感觉这颗芯片的效果还不错。 AD7799内部数字部分和模拟部分的供电是分开的,数字部分由DVCC供电,模拟部分由AVCC供电,经过实验,在只有DVCC而不加AVCC的时候芯片的数字接口部分是可以工作的,这样就可以把AIN3+和AIN3-作为数字信号来启动模拟电源输出AVCC,不知道这样描述是否清楚,主要是为低功耗和省电考虑。 AD7799内部有三个差分通道,可以分别配置成为差分模式和单端模式,在单端模式下需要保证AINx(+)电压高于AIN(-)电压,否则
[单片机]
STM32 学习九 通过USART实现printf重定向
把printf函数内容通过USART串口输出,可以方便调试STM32内部程序。示例代码如下: /******************************************************************************* * Function Name : fputc * Description : 重定向fput,以实现重定向printf * Return : int *******************************************************************************/ int fputc(int ch,FILE *
[单片机]
STM32 Part number information
STM32 Part number information 如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:
[单片机]