基于STM32的智能电子钟系统设计与实现_第1页
基于STM32的智能电子钟系统设计与实现_第2页
基于STM32的智能电子钟系统设计与实现_第3页
基于STM32的智能电子钟系统设计与实现_第4页
基于STM32的智能电子钟系统设计与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[12]。单片机的发展历史和市场现状,为本项目的研究提供了重要的背景和依据。本项目选用了STM32单片机作为核心控制器,利用其高性能、低功耗、高集成度等特点,实现了智能电子钟和闹钟系统的设计和制作。本项目也关注了单片机的发展趋势和挑战,力求提高系统的性能、可靠性、安全性等,满足用户的多样化需求和个性化喜好。1.2.2基于STM32单片机的电子钟和闹钟系统的研究STM32微控制器是基于ARM核心设计的,同时集成度高。以STM32为基础的电子时钟和闹钟系统,充分利用了STM32的多项功能,包括DS1302模块、OLED显示屏、定时器、中断处理和串行通信等。实现时间的获取、设置、保存、显示、控制等功能,以及闹钟的设置、触发、延时、多重等功能的系统。该系统的优点是功能强大、性能稳定、成本低廉、易扩展等。国内外对基于STM32单片机的电子钟和闹钟系统的研究,主要集中在以下几个方面:系统的硬件设计:主要涉及到STM32单片机的选型、外设的选择和连接、电路设计方面,开发了一款采用STM32F103C8T6微控制器的电子时钟系统。该系统集成了DS1302时间管理模块和LCD1602显示屏,还有蜂鸣器等外设,通过面包板搭建电路,实现了时间的显示和闹钟的功能。系统的软件设计:主要涉及到STM32单片机的编程和调试、功能的实现和优化、代码的复用和简洁等。设计了一种基于STM32F103C8T6的电子钟系统,使用了KeiluVision5软件进行编程和调试,采用模块化的思想,将不同的功能封装成不同的函数,实现了代码的复用和简洁,实现了时间的显示、闹钟的设置、闹钟的触发和延时等功能。1.3主要工作和创新点本项目是设计和实现一个基于STM32单片机和QT上位机的智能电子钟和闹钟系统,该系统具有时间管理、闹钟功能、用户界面、管理界面和计时器等功能,可以满足用户的不同需求和场景。本项目的项目具有重要的理论意义和实际价值,但是目前国内外对该项目的研究还存在一些问题和不足,如系统的功能单一、用户界面简单、交互方式固定、硬件设计复杂等。创新关键方面:使用了STM32单片机与QT作为开发环境,通过串口通信实现了上位机与基于STM32微控制器的下位机之间的数据交换和功能,提高了系统的灵活性和便捷性。本项目利用QT框架,设计了一个具有时间管理、闹钟设置的用户界面,支持用户通过上位机进行时间和闹钟的设置,实现了系统的远程控制。使用了OLED显示屏作为用户界面,设计了简洁直观、易用的用户界面,利用STM32的相关功能,如OLED显示,与用户进行交互,提高了系统的美观性和用户体验。实现了多种时间管理功能,如时间显示、闹钟设置、计时器、延时闹钟、多重闹钟等,满足了用户的不同需求和场景,提高了用户的时间意识和时间效率。本项目利用STM32的相关功能,如RTC(实时时钟)模块、定时器、中断、串口等,实现了时间的获取、设置、保存、显示、控制等功能,实现了系统的多功能和智能。1.4组织结构和章节安排本项目的组织结构和章节安排如下:首先概述了研究背景、意义、现状及本项目的创新点和结构,为本项目的研究提供了基础和指导。本章的目的是引出思路。随后,详细介绍了基于STM32F103C8T6的电子钟系统的硬件设计,包括硬件选型、外设集成和电路制作,实现了外设的集成和稳定。本章的目的是构建系统的硬件平台,为系统的软件设计和功能实现提供硬件支持和保障。本章确保了系统的功能需求和性能指标。软件设计章节,主要介绍了系统的软件平台的选型、功能的实现和优化、代码的复用和简洁等,实现了代码的高效和易维护。本章的目的是编写系统的软件程序,为系统的功能实现提供软件支持和保障。本章的主要结论是系统的软件设计采用了模块化的思想,实现了代码的复用和简洁,提高了程序的可读性和可维护性。系统的功能实现,主要介绍了系统的时间管理、闹钟功能、用户界面、管理界面和计时器等功能,利用DS1302模块、OLED、定时器、中断、串口等,实现了时间的获取、设置、保存、显示、控制等功能,以及闹钟的设置、触发、延时、多重等功能。本章的目的是实现系统的主要功能,为用户提供多种时间管理功能和用户体验。是系统的测试和验证,阐述了系统的测试流程,包括测试方法、环境、结果及其分析,以验证系统功能和性能是否达到设计标准,并提升了系统的稳定性与可靠性。本章的目的是测试和验证系统的正确性和有效性,为系统的改进和完善提供依据和建议。最后,结论和展望章节总结了项目的主要成果和未来的改进方向。本章的目的是对本项目的研究进行总结和评价,为本项目的后续研究提供方向和思路。本章的主要结论是本项目的研究具有重要的理论意义和实际价值,为基于STM32单片机和QT上位机的智能电子钟和闹钟系统的设计和制作提供了一种新的思路和方法。2系统的硬件设计2.1系统的总体设计本节主要介绍了系统的硬件平台的选型、外设的选择和连接、电路的设计和制作,确保了硬件能够满足系统功能和性能的要求。系统设计符合功能规格和性能标准:功能需求是实现时间的获取、设置、保存、显示、控制等功能,以及闹钟的设置、触发、延时、多重等功能。本系统的性能指标是保证系统的时间的准确性和稳定性,以及系统的响应速度和显示效果等。系统的硬件平台和外设的选型和配置:本系统采用了STM32F103C8T6开发板,这是一款搭载ARMCortex-M3内核的32位微控制器,可以实现各种复杂的功能和控制。本系统的外设选用了DS1302时钟模块、OLED显示屏、有源蜂鸣器等,分别用于实现系统的时间的获取、保存、显示等功能,以及系统的闹钟的触发、延时、多重等功能。本系统的硬件平台和外设的选型和配置如表2.1所示。表2.1硬件平台和外设的选型和配置设备型号功能单片机STM32F103C8T6开发板系统的核心控制器外设DS1302时钟模块系统的时间的获取和保存外设OLED显示屏系统的时间和闹钟的显示外设有源蜂鸣器系统的闹钟的触发和延时2.2STM32单片机的选择和介绍STM32单片机是一种基于ARM核心的32位单片机,它具有高性能、低功耗、高集成度等特点,可以实现各种复杂的功能和控制。STM32单片机的系列和型号非常多,根据不同的性能和功能,可以分为以下几类:STM32F0:入门级,搭载ARMCortex-M0,适合基础控制与通讯任务。STM32F1:基础级,采用ARMCortex-M3,适用于工业、汽车、医疗等领域。STM32F4:高性能,基于ARMCortex-M4,专为复杂的数字信号处理设计。图2.1STM32F103C8T6原理图本系统的硬件平台选用了STM32F103C8T6开发板,如图2.1,包括电源电路的连接,如图2.2,该开发板是基于STM32F103C8T6的,STM32F103C8T6开发板,隶属于STM32F1系列,以ARMCortex-M3内核为基础,主要特性包括:运行频率可达72MHz,确保了优秀的计算速度和反应时间。配备64KB闪存和20KBSRAM,提供充裕的程序存储和数据处理空间。内置多种外设和接口,如RTC(实时时钟)模块、定时器、中断、串口、SPI、I2C等,具有丰富的功能和扩展性。内置多种保护机制,如看门狗、复位、电源管理等,具有高可靠性和安全性。具有节能和环保的优点。图2.2电源电路原理图本系统选用了STM32F103C8T6开发板作为硬件平台,是因为该开发板可以满足本系统的功能需求和性能指标,优势:STM32F103C8T6微控制器的优点包括其出色的计算能力、节能特性和一体化设计,可以实现本系统的各种功能和控制,如时间的获取、设置、保存、显示、控制等功能,以及闹钟的设置、触发、延时、多重等功能。STM32F103C8T6单片机具有丰富的外设和接口,可以与本系统的外设进行连接和通信,如DS1302时钟模块、OLED显示屏、有源蜂鸣器等,以及与上位机进行数据交互和功能协调,如串口通信协议等。STM32F103C8T6单片机具有高可靠性和安全性,可以保证本系统的稳定性和可靠性,如RTC(实时时钟)模块可以保证系统的时间的准确性和稳定性,看门狗可以保证系统的正常运行和异常恢复等。STM32F103C8T6开发板具有低成本、高效率、易扩展等优点,可以适应本系统的不同需求和场景,如本系统可以根据用户的个性化需求和习惯,设置不同的时间、日期、闹铃、提醒等功能。2.3DS1302模块的设计DS1302模块是本系统的时间的获取和保存的模块,负责提供系统的时间的基准和存储。本系统选用了DS1302时钟模块作为RTC模块,该时钟模块是一种带有串行SPI接口的实时时钟模块,可以实现时间的读取和写入,以及时间的保存和校准。本节着重讲解了DS1302时钟模块的工作原理与特性。DS1302的原理图如图2.3所示,该时钟模块主要由以下几部分组成:DS1302是配备SPI接口的实时时钟芯片,能进行时间信息的读写操作,并具备保存与调整时间的功能。它内置了时钟寄存器,用于记录详细的日期和时间数据,并包含一个用于管理设置的控制寄存器,可以设置时钟的数据格式、校准系数等参数。DS1302芯片还有一个RAM,可以存储31个字节的用户数据,如闹钟列表、提醒信息等。晶振:是一种提供时钟芯片的工作频率的元件,本系统选用了32.768kHz的晶振,该晶振具有高精度、低功耗、低温漂等特点,可以保证时钟芯片的准确性和稳定性。电池:是一种提供时钟芯片的备用电源的元件,本系统选用了CR2032的3V的锂电池,该电池具有容量大、寿命长、自放电小等特点,可以在断电时保持时钟芯片的工作,以及时间和RAM的保存。接口:是一种与外部设备进行连接和通信的部分,接口包括四根线,五个接口分别为VCC,GND,CLK,DAT,RST,是指DS1302时钟模块的SPI接口的五根线的标识,它们分别表示电源、地、时钟、数据、复位。图2.3DS1302模块原理图DS1302时钟模块的特点主要有以下几点:可以实现时间的读取和写入,支持多种时间格式,如12小时制、24小时制、BCD码、二进制码等。可以实现时间的保存和校准,支持多种校准方式,如晶振校准、软件校准、外部校准等。可以实现用户数据的存储和读取,支持多种数据类型,如闹钟列表、提醒信息、用户设置等。可以实现与外部设备的连接和通信,支持多种通信协议,如SPI、I2C、UART等。设计STM32微控制器与DS1302时钟模块间的接口和通信,主要依据DS1302的规格来实现双方的有效连接和信息交换。2.4OLED显示屏的设计0.96英寸OLED显示屏的应用,可以实现系统时间、闹钟响铃等信息的显示和交互。本节主要介绍了OLED显示屏的原理和特点。OLED显示屏的原理图如图2.4。它作为系统的视觉输出模块,提供了用户界面。这种显示屏利用自发光的有机发光二极管,无需背光,具备高亮度等优点。可视角广、响应速度快等特点,可以实现多种颜色和图形的显示。颜色为单色,可以显示128x64个像素的信息。能够展示时间等信息同时,SSD1306驱动芯片负责驱动这些OLED像素,SSD1306驱动芯片内部有一个128x64的显示缓冲区,可以存储OLED屏幕的显示数据,可以与外部设备进行连接和通信,支持多种通信协议,如I2C、SPI、8位并行等。接口:是一种与外部设备进行连接和通信的部分,接口类型是IIC接口,该接口是一种串行通信协议,可以实现低速、同步、半双工的数据交换。IIC接口包括四根线,分别是GND(地)、VDD(电源)、SCK(时钟)、SDA(数据)。图2.4OLED显示屏原理图OLED显示屏的特点主要有以下几点:可以实现高亮度、高对比度、低功耗、可视角广、响应速度快等特点,可以提供美观和易用的用户界面和用户体验。可以实现多种颜色和图形的显示,可以显示系统时间、闹钟列表、闹钟响铃等信息,以及与用户进行交互。可以实现与外部设备的连接和通信,支持多种通信协议,如I2C、SPI、8位并行等,可以与STM32单片机进行数据交互和功能协调。2.5蜂鸣器模块的设计蜂鸣器模块是本系统的闹钟的响铃的模块,负责提供系统的声音提示和反馈。本系统选用了有源蜂鸣器模块作为蜂鸣器模块,该模块是一种可以通过高电平触发的声音输出模块,可以实现闹钟的响铃和铃声的选择和控制。本节主要介绍了有源蜂鸣器模块的原理和特点,以及与STM32单片机的连接和通信的设计。有源蜂鸣器模块的原理和特点:有源蜂鸣器模块的原理图如图2.5所示,该模块主要由以下几部分组成:有源蜂鸣器:是一种可以通过高电平触发的声音输出元件,内部有一个振荡器,可以产生固定的频率和音调的声音。有源蜂鸣器具有体积小、功耗低、响度大、音质清晰等特点,可以实现闹钟的响铃和铃声的选择和控制。三极管:是一种用于放大和控制电流的半导体器件,本系统选用了S8050型的NPN三极管,通过调节三极管基极的电压,实现对有源蜂鸣器工作状态的控制,即其启动和停止。电阻:是一种用于限制和分压电流的电子元件,本系统选用了1KΩ的电阻,用于限制三极管的基极电流,以及保护STM32单片机的输出引脚。接口:是一种与外部设备进行连接和通信的部分,接口包括两根线,分别是VCC(电源)、IN(输入),是指有源蜂鸣器模块的输入接口的两根线的标识,它们分别表示电源和信号。图2.5有源蜂鸣器模块原理图有源蜂鸣器模块的特点主要有以下几点:可以实现闹钟的响铃和铃声的选择和控制,支持用户设置多个闹钟,每个闹钟可以有不同的铃声和音量,实现不同的闹钟功能,如起床闹钟、工作闹钟、休息闹钟等。可以实现与外部设备的连接和通信,支持高电平触发的方式,可以与STM32单片机进行信号交互和功能协调。可以实现低功耗的工作,只有在高电平触发时才会消耗电流,否则处于静止状态,不会影响系统的功耗和续航。STM32单片机与有源蜂鸣器模块的连接和通信的设计:本系统的STM32单片机与有源蜂鸣器模块的连接和通信的设计主要是根据有源蜂鸣器模块的接口和触发方式,设计STM32单片机与有源蜂鸣器模块的连接和通信的方式和方法。2.6串口通信模块的设计串口通信模块是本系统的上位机与下位机的数据交互和功能协调的模块,负责上下位机数据交互及上位机监控功能。本系统选用了串口通信协议作为串口通信模块的通信协议,该通信协议是一种串行通信协议,可以实现高速、异步、全双工的数据交换。本节主要介绍了串口通信协议的原理和特点,设计了STM32微控制器与上位机的互联及通讯机制。串口通原理图如图2.6所示,主要由以下几部分组成:串口接口:采用UART作为串行通信接口,支持异步数据传输,包含TXD、RXD、GND和VCC线。串口帧:标准串口帧格式用于数据传输,包括起始位、停止位、校验位和数据位。奇偶校验位表示数据的校验,由一位的高电平或低电平组成,用于检测数据是否有错误。数据位表示数据的内容,由5位到8位的二进制数组成,用于传输数据的信息。本系统选用了8位的数据位,无奇偶校验位,一位的停止位,即8N1的串口帧。波特率:系统使用的串口通信速率为115200bps,意味着数据传输速度为每秒115200位,即每位的时间为8.68us,即每个串口帧的时间为86.8us。图2.6串口原理图串口通信协议的特点主要有以下几点:可以实现高速、异步、全双工的数据交换,可以提供快速和灵活的数据的发送和接收,以及功能的控制和监测。可以实现多种数据格式和速率的选择,可以根据不同的需求和场景,设置不同的串口帧和串口波特率,以适应不同的数据的类型和量。可以实现与外部设备的连接和通信,支持多种通信协议,如RS-232、RS-485、USB等,可以与不同的设备进行数据的交互和功能的协调。3系统的软件设计3.1系统的软件开发环境本节讨论了软件开发环境,涵盖开发平台、工具和编程语言,确保软件设计和功能实施的支持。系统的开发平台使用的是Windows11,这是一个普遍采用的图形界面操作系统,具有稳定性、兼容性、易用性等特点,可以实现各种软件的安装和运行,以及与硬件的交互和控制。本系统的软件开发平台主要用于编写、编译、调试、下载、运行本系统的软件程序,以及与本系统的硬件平台进行数据交互和功能协调。本系统的软件开发工具主要包括以下几种。3.1.1STM32的软件开发环境KeiluVision5:作为ARM核心单片机开发的IDE,提供了代码编辑、编译、调试和下载功能,用于STM32单片机程序的开发。本系统选用了KeiluVision5进行下位机软件的开发,用于编写、编译、调试、下载STM32单片机的软件程序,以及与STM32单片机进行通信和协调。创建过程:菜单中选择“新建uVision项目”,输入您的工程名称和保存路径,选择STM32F103C8T6作为目标芯片,确认创建。工程配置:在Project->OptionsforTarget中,打开Options对话框,进行如下设置:Target选项卡:设置晶振频率为8MHz,并勾选UseMicroLIB以使用优化的库。Output选项卡:勾选CreateHEXFile以生成HEX格式的可下载文件。C/C++选项卡:将Optimization设置为Level3,优化编译效率。Debug选项卡:选择UseST-LinkDebugger,并在Settings中进行进一步配置:在Port选项卡中,选择SW作为调试端口。在FlashDownload选项卡中,勾选DownloadtoFlash。在Utilities选项卡中,选择ST-Link作为驱动。保存设置:确认所有设置后,点击OK保存并退出Options对话框。USB转串口模块:是一种专门用于连接STM32单片机和个人电脑的通信工具,具有转换、通信、协调等功能,可以实现对STM32单片机和个人电脑的数据的交换和功能的协调。本系统使用USB转串口模块作为上位机和下位机的通信工具,用于将STM32单片机的串口接口转换为个人电脑的USB接口,以及通过串口通信协议进行数据的发送和接收,以及功能的控制和监测。3.1.2QT的软件开发环境QTCreator是一个跨平台GUI应用开发的IDE,提供了完整的开发功能,包括代码编辑、编译、调试和运行。本系统利用QTCreator开发上位机的QT应用程序。运行QT框架的软件程序,以及与QT框架进行通信和协调。Python安装Python官方网站,我选择的是Python3.8.7。遵循屏幕上的指示完成安装。在此过程中,您可以自定义安装位置和所需的功能组件。环境配置:为了确保Python和其附属工具能在任何命令行界面中被顺利调用,需要将Python的安装目录以及Scripts子文件夹路径添加至系统的环境变量PATH中。验证安装:打开命令提示符或终端,输入python--version并执行。如果系统返回了Python的版本号,例如Python3.8.7,则说明Python已成功安装在您的设备上。3.1.3软件开发语言本系统的软件开发语言主要包括以下两种:①C语言以其结构化、高效和可移植性著称,可以实现对硬件的直接控制和操作,以及对软件的逻辑和算法的描述和实现。本系统使用C语言作为下位机的软件开发语言,用于编写STM32单片机的软件程序,以及与STM32单片机的硬件平台和外设进行控制和通信。②Python则以其易读性、优雅和解释型特性为人所知,可以实现对软件的快速开发和测试,以及对软件的逻辑和算法的描述和实现。本系统使用Python语言作为上位机的软件开发语言,用于编写QT框架的软件程序,以及与QT框架的图形用户界面进行控制和通信。3.2系统的软件架构系统的软件架构,包括软件的层次结构、模块划分、功能描述等,为系统的软件设计和功能实现提供了软件的框架和指导。软件的层次结构如表3.1所示,层次结构主要由以下几层组成:①应用层:是本系统的软件的最高层,负责实现本系统的主要功能和用户体验,包括时间管理、闹钟功能、用户界面、管理界面和计时器等功能,负责用户交互,由基于QT框架的上位机程序和下位机程序构成,下位机的软件程序基于STM32单片机。②通信层:是本系统的软件的中间层,主要实现上下位机间的数据互动与功能同步,涵盖数据传输和系统监控,以及与硬件进行通信和协调。通信层主要由串口通信协议和通信模块组成,串口通信协议是一种串行通信协议,通信模块是一种通信工具,如USB转串口模块等。③硬件层:是本系统的软件的最低层,负责提供本系统的软件的硬件支持和保障,包括硬件平台和外设的选择、连接、配置、控制和显示等功能,以及与软件进行交互和协调。在硬件层面主要由STM32微控制器及其外设构成。外设包括DS1302时钟模块、OLED显示屏、有源蜂鸣器等。表3.1系统的软件的层次结构应用层上位机的软件程序、下位机的软件程序通信层串口通信协议、通信模块硬件层STM32单片机、外设软件的模块划分:本系统的软件的模块划分如表3.2所示,该模块划分主要根据软件的层次结构和功能需求,将软件的功能和逻辑进行了分解和封装,形成了一些相对独立和可复用的软件模块,以便于软件的设计和实现。软件的模块划分主要包括以下几个模块:①时间管理模块:是本系统的软件的核心模块,负责实现本系统的时间的获取、设置、保存、显示、控制等功能,以及与时钟模块和显示屏进行通信和协调。时间管理模块主要由下位机的软件程序实现,包括RTC模块、OLED模块、时间模块等子模块。②闹钟功能模块:是本系统的软件的重要模块,负责实现本系统的闹钟的设置、触发、延时、多重等功能,以及与蜂鸣器和显示屏进行通信和协调。闹钟功能模块主要由下位机的软件程序实现,包括闹钟模块、蜂鸣器模块等子模块。③用户界面模块:构成了软件系统的核心部分,它承担着设计和优化用户交互界面及体验的任务,包括时间和闹钟的显示和交互,以及与显示屏和蜂鸣器进行通信和协调。④管理界面模块:是本系统的软件的辅助模块,负责实现本系统的管理界面和管理功能,包括时间和闹钟的设置、系统状态的查看和控制、数据的导入和导出等功能,以及与下位机进行通信和协调。管理界面模块主要由上位机的软件程序实现,包括串口模块、设置模块、状态模块、数据模块等子模块。⑤计时器模块:是本系统的软件的附加模块,本模块主要负责系统计时功能,涵盖了计时器的配置、激活、展示、暂停以及重置和终止操作,以及与显示屏进行通信和协调。计时器模块主要由下位机的软件程序实现,包括定时器模块、显示模块等子模块。软件的功能描述如表3.2所示,主要根据软件的模块划分,对每个软件模块的功能和逻辑进行了简要的描述和说明,以便于软件的设计和实现。软件的关键功能通过以下要素进行阐述:模块名称:识别各软件组件,例如时间管理、闹钟等。功能描述:概述各模块所执行的操作。如实现时间的获取、设置、保存、显示、控制等功能,以及与时钟模块和显示屏进行通信和协调等。逻辑描述:软件模块逻辑包括利用RTC模块进行系统时间的获取与存储,以及通过OLED模块进行时间展示,使用时间模块控制系统时间等。表3.2软件的模块划分模块名称功能描述逻辑描述时间管理模块实现时间的获取、设置、保存、显示、控制等功能,以及与时钟模块和显示屏进行通信和协调使用RTC模块获取和保存系统时间,使用OLED模块显示系统时间,使用时间模块控制系统时间闹钟功能模块实现闹钟的设置、触发、延时、多重等功能,以及与蜂鸣器和显示屏进行通信和协调使用闹钟模块设置闹钟列表,使用蜂鸣器模块触发和延时闹钟,使用延时模块控制闹钟的延时时间用户界面模块实现用户界面和用户体验,包括时间和闹钟的显示和交互,以及与显示屏和蜂鸣器进行通信和协调使用OLED模块显示时间和闹钟的信息,使用蜂鸣器模块提供用户的反馈管理界面模块实现管理界面和管理功能,包括时间和闹钟的设置、系统状态的查看和控制,以及与下位机进行通信和协调使用串口模块与下位机进行数据的发送和接收,使用设置模块设置时间和闹钟,使用状态模块查看和控制系统状态,计时器模块实现计时功能,涉及设定、激活、展示、暂停以及重置和终止计时器的各项操作,以及画面切换使用定时器模块设置和启动计时器,使用显示模块显示计时器的时间,使用控制模块暂停、清零和停止计时器3.3系统的软件设计①时间管理模块:该模块是系统软件的核心,负责维护和管理系统时间,包括时间的获取、设置、保存和显示。关键功能:时间获取与设置:利用RTC模块从外部时间源获取准确时间,并提供用户设置时间的接口。时间保存:将当前时间信息保存在非易失性存储器中,以便在断电或重启后恢复。时间显示:与OLED显示屏模块协作,以直观的方式展示时间信息。通信协调:与其他模块(如闹钟模块、显示屏模块)进行通信和协调,确保时间信息的一致性和准确性。②计时器模块:该模块提供计时器功能,支持用户进行时间的计量和控制。关键功能:计时器设置与启动:允许用户设置计时器的起始时间和结束时间,启动和停止计时器。③闹钟功能模块的软件设计:闹钟功能模块是本系统的软件的重要模块,负责实现本系统的闹钟的设置、触发、延时、多重等功能,以及与蜂鸣器和显示屏进行通信和协调。闹钟模块的设计专注于实现以下核心功能:1)闹钟列表:从上位机接收闹钟列表的数据,包括闹钟的个数、时间、重复、延时等信息,以及将闹钟列表的数据保存到STM32单片机的闪存中,以便于在断电或重启后恢复时间显示。2)清空闹钟:从上位机接收清空闹钟列表的命令,以及将闹钟列表的数据清空,即将闹钟的个数设为0,以及将闹钟列表的数据从STM32单片机中删除。3)触发闹钟:根据当前的系统时间和闹钟列表的数据,判断是否有闹钟需要触发,如果有,那么向蜂鸣器模块发送触发命令,使蜂鸣器发出闹钟的声音,以及向显示屏模块发送触发命令,使显示屏显示正在响铃,以及根据闹钟的重复和延时的信息,相应触发闹钟。4)延时闹钟:根据用户的操作或系统的状态,对触发的闹钟进行延时,如果有,那么向蜂鸣器模块发送延时命令,使蜂鸣器发出闹钟的声音后启动延时的计时器,以及向时钟模块发送延时命令。5)多重闹钟:根据当前的系统时间和闹钟列表的数据,判断是否有多个闹钟需要触发,如果有,那么按照闹钟的时间顺序,依次触发每个闹钟,以及根据用户的操作或系统的状态,以及根据闹钟的重复和延时的信息,相应触发。逻辑:闹钟功能模块的逻辑主要包括以下几点:初始化:在系统启动时,进行初始化和配置,以及从STM32单片机的闪存中读取上次保存的闹钟列表的数据。循环:在系统运行时,循环执行以下的步骤:接收:从上位机接收数据指令,如果有,那么执行相应的设置,如果没有,那么继续循环。判断:根据当前的系统时间和闹钟列表的数据,系统会检查是否存在待触发的闹钟;若存在,则调用触发函数,否则持续进行检测循环。流程:闹钟功能模块的流程如图3.1所示图3.1系统流程图4系统的功能实现4.1系统时间管理本节主要介绍了系统时间的管理,包括时间的获取和设置、时间的保存和显示、时间的控制和管理等,利用STM32的RTC(实时时钟)模块进行时间的保存,确保准确的时间显示。系统时间可以通过QT上位机的管理界面进行设置和修改,以及通过OLED显示屏进行显示和查看。系统时间还可以通过STM32的定时器和中断实现时间的控制和管理,以及计时器和倒计时的功能,实现时间的控制和管理。4.1.1时间的获取和设置时间的获取和设置是系统时间管理的基础,主要涉及到两个方面:一是使用DS1302模块和STM32的RTC模块获取和设置系统时间,二是使用QT上位机的管理界面进行时间的修改,如图4.1。图4.1上位机时间设置与切换使用DS1302模块和STM32的RTC模块获取和设置系统时间DS1302模块,作为一款实时时钟模块,它以低能耗和高准确度为特色,不仅支持时间的读取与调整,以及与STM32单片机的通信和协调。本系统使用DS1302模块作为系统时间的初始来源,用于获取和设置系统时间,还能与STM32微控制器的RTC模块同步。STM32微控制器集成了RTC模块,这是一种内部实时时钟功能,用于时间跟踪和管理,可以实现对时间的保存和显示,以及与STM32单片机的其他功能进行协调。本系统使用STM32的RTC模块作为系统时间的主要来源,用于保存和显示系统时间,以及与STM32单片机的定时器和中断进行协调。首先上位机获取年月日时分秒的信息,然后通过一些进制转换将其转换为整数类型。转换好了之后打包成一个字节流,也就是用bytes函数将其转换为字节类型,用于通过串口发送。如图4.2。图4.2上位机获取用户输入的时间这一段代码是用于实现时间的更新的功能的,用于在STM32单片机上判断是否收到上位机的时间设置命令,如果是,就将上位机发送的时间信息写入到DS1302模块中,然后重新读取DS1302模块的时间,以及更新OLED显示屏上的系统时间。如图4.3,和OLED显示如图4.4。图4.3更新时间图4.4显示24小时制4.1.2显示24小时制与12小时制的切换显示24小时制与12小时制的切换是系统时间管理的一个可选功能,主要涉及到两个方面:一是使用STM32的RTC模块进行时间的转换,二是使用OLED显示屏进行时间的显示。使用STM32的RTC模块进行时间的转换STM32的RTC模块可以支持24小时制和12小时制的时间格式,可以通过上位机来实现时间的转换。本系统使用STM32的RTC模块作为系统时间的主要来源,可以根据用户的选择,进行时间的转换,以适应不同的需求和习惯。使用OLED显示屏进行时间的显示OLED显示屏是系统的用户界面,可以显示系统时间和其他信息。本系统使用OLED显示屏作为系统时间的主要显示方式,可以根据用户的选择,显示24小时制或12小时制的时间格式,以及相应的单位符号,如AM,PM等。以下的代码是用于实现时间的转换,用于在STM32单片机上将rtc_tim结构体中的时间信息转换为12小时制的时间格式,如图4.5。将结构体中的24小时制的小时信息,用%运算符取余12,得到12小时制的小时信息。用<运算符判断,如果是,就说明是上午,就在字符串的末尾加上"AM",如果不是,就说明是下午,就在字符串的末尾加上"PM"。图4.5显示12小时制4.1.3显示星期显示星期是系统时间管理的一个附加功能,主要涉及到两个方面:一是使用STM32的RTC模块计算星期,二是使用OLED显示屏显示星期。使用STM32的RTC模块计算星期STM32的RTC模块可以根据年月日的信息,使用Zeller’sCongruence算法计算星期,得到一个1到7的整数,分别表示星期日到星期六。本系统使用STM32的RTC模块作为系统时间的主要来源,可以根据rtc_tim结构体中的年月日的信息,计算星期,以及与STM32单片机的其他功能进行协调。本系统使用OLED显示屏作为系统时间的主要显示方式,可以根据计算得到的星期,显示相应的字符串,如"Sunday","Monday"等。关于闰年和平年的问题,Zeller’sCongruence算法本身并不直接区分闰年和平年。然而,在计算过程中,如果是1月或2月,算法会将年份减1,这样做间接地考虑了闰年对这两个月天数的影响。以下的代码是用于实现星期的显示的功能的,用于使用Zeller’sCongruence算法计算星期,如图4.6。图4.6计算星期4.1.4DS1302时间掉电保存功能DS1302掉电保存时间。这个功能确保了即使在系统断电的情况下,时间信息也能得到保留。DS1302模块利用内置的电池来维持时间计数,因此当系统重新上电时,可以恢复到正确的时间状态,无需重新设置。这对于需要长期运行且稳定性至关重要的应用场景来说,是一个极其有价值的补充。通过这个功能,我们的系统能够在面对意外断电或必要的维护操作时,保持时间的连续性和准确性。如图4.7,首先,读取一个特定地址的标志值。如果该值不等于0x28,则说明时间还没有被设置或者可能由于掉电而丢失。在这种情况下,代码将执行DS1302_SetTime函数来设置时间。这个过程确保了即使在掉电后,时间也能被恢复或重新设置,从而实现了时间的掉电保存功能图4.7DS1302掉电保存4.2闹钟功能本系统具有闹钟功能,可以让用户设置多个闹钟,并能准确地触发和控制闹钟的响铃功能。闹钟的时间、铃声等信息可以通过QT上位机的管理界面进行设置和修改。用户也可以选择延时或取消闹钟。4.2.1闹钟的设置为了让用户能够方便地设置和修改闹钟的信息,本系统设计了一个基于QT框架的管理界面,该界面可以显示当前的时间和闹钟信息,以及提供闹钟的设置的功能,如图4.8所示。图4.8设置闹钟区域闹钟的设置,用户可以通过QT上位机的管理界面进行闹钟的设置。管理界面可以通过串口通信与STM32的目标板进行通信和协调,支持用户通过上位机进行时间和闹钟的设置。闹钟显示区域如图4.9。用户可以设置最多四个闹钟,每个闹钟可以有不同的时间、铃声等信息,可以设置间隔时间,再勾选延时的闹钟功能,点击设置闹钟,即可将闹钟信息发送。接收到闹钟信息后,会将其存储到DS1302的RAM中。图4.9闹钟显示区域如图4.10是用于在STM32单片机上接收上位机发送的闹钟信息。图4.10接收闹钟信息图4.11展示是的未设置延时的闹钟,将闹钟信息存储到相应的数组中,并设置相应的标志位。图4.11普通闹钟4.2.2闹钟的触发显示和延时为了让用户能够根据自己的需求和场景,设置和控制闹钟的触发和延时,本系统设计了一个基于定时器、中断、串口和蜂鸣器模块的闹钟功能。闹钟功能可以实现对闹钟的触发和响应,以及对闹钟的延时和清空。闹钟的触发和延时,目标板会实时读取DS1302的时间,并与存储在RAM中的闹钟信息进行比较,如果有任何一个闹钟的时间与当前时间相同,就会触发闹钟的响铃功能。响铃功能是通过有源蜂鸣器模块实现的,根据用户设置的铃声信息,控制蜂鸣器的频率和持续时间,产生不同的音调和节奏。如果用户选择延时,闹钟会在用户设置的延时时间后再次响起。延时闹钟比普通闹钟,上位机会多发一个数据,也就是间隔,代码也就会多一行解析。如图4.12是单片机接收上位机发送的延时闹钟信息。图4.12延时闹钟如图4.13是控制蜂鸣器的代码,并因为设置延时,为延时再启动一个定时器。以分钟为单位最小1分钟,最大为255分钟。图4.13延时的定时器这段代码用于在OLED显示屏上显示闹钟响起时的提示信息的功能,如图4.14。它首先清除屏幕、显示中文字符“正在闹钟”。图4.14OLED显示闹钟响铃4.2.3闹钟的多重和铃声本系统支持多重闹钟功能,如图4.3的列表可以看到,用户设置最多四个闹钟,每个闹钟可以有不同的时间、铃声等信息,可以实现不同的闹钟功能。用户可以在管理界面上选择设置闹钟,然后输入或选择相应的时间、铃声等信息,最后点击确定按钮,即可将闹钟信息发送到目标板。目标板接收到闹钟信息后,会将其存储到DS1302的RAM中,并更新上位机显示屏上的闹钟列表。本系统支持多种铃声选择,用户可以在管理界面上选择自己喜欢的铃声,或者自定义铃声。铃声信息是通过一个8位的字节来表示的,每一位代表一个音符,铃声时设置好了的选择0是间隔响,选择1是长响。为了让用户能够设置和控制多个闹钟,每个闹钟可以有不同的时间、铃声等信息,本系统设计了一个基于蜂鸣器模块的闹钟功能。闹钟功能可以实现对闹钟的多重和铃声的设置和控制。如图4.15,是两个铃声的选择,分别是0和1,使用不同的延时来实现不同的铃声。图4.15铃声的选择4.2.4闹钟的停止与删除为了让用户能够根据自己的需求和场景,停止或删除闹钟,本系统设计了一个基于串口和蜂鸣器模块的闹钟功能,如图4.16所示。图4.16停止与删除区域闹钟功能可以实现对闹钟的停止和删除,以及对闹钟列表的更新和清空。闹钟的停止和删除,用户可以通过QT上位机的管理界面进行闹钟的停止和删除。管理界面可以通过串口通信与STM32的目标板进行通信和协调,支持用户通过上位机进行闹钟的停止和删除。用户可以在闹钟响铃时,点击停止按钮,目标板会接收到停止命令,向蜂鸣器模块发送停止命令,使蜂鸣器停止响铃,同时向显示屏模块发送停止命令,使显示屏恢复时间显示。用户也可以点击删除闹钟按钮,目标板会接收到删除命令,将闹钟列表的数据清空,即将闹钟的个数设为0。如图4.17,删除闹钟,实际上就是初始化。首先关闭了负责闹钟的定时器,接着将闹钟数量重置为0,也就是所有闹钟设置都将被清除。图4.17闹钟删除如图4.18,上位机发送删除的指令,更新闹钟显示区域上的文本,分别设置为"#1"、"#2"、"#3"和"#4"。图4.18上位机删除闹钟如图4.19,因为蜂鸣器的计数达到25时,蜂鸣器会停止。停止闹钟这里我会让蜂鸣器计数器直接达到25,以达到停止闹钟的效果。图4.19停止闹钟4.3计时器功能本系统具有计时器功能,可以让用户进行计时和倒计时的操作,实现时间的控制和管理。计时器的功能可以通过用户界面和管理界面进行开启和关闭,支持用户通过上位机进行计时器的操作和设置,计时器的精度和单位,如秒、分、时等。上位机界面如图4.20。图4.20上位机计时器界面4.3.1计时器的开启和关闭用户可以通过QT上位机的管理界面进行计时器的开启和关闭。管理界面有五个按键,分别是SWITCH,START,CLOSE,RESET,DISPLAY。用户可以通过点击SWITCH按钮,进入计时器界面,此时OLED显示屏上会显示“00”表示当前的计时值。用户可以通过点击START按钮,开始计时或倒计时,此时OLED显示屏上会显示实时的计时值,计时器会通过TIM2定时器中断来实现计时功能。用户可以通过点击CLOSE按钮,暂停计时或倒计时,此时OLED显示屏上会保持当前的计时值。计时器停止后,用户可点击RESET按钮进行复位,此时OLED显示屏上会显示“00”表示当前的计时值,计时器会清零计时。用户可以通过点击DISPLAY按钮,切换回时间显示界面,此时OLED显示屏上会显示系统时间。如图4.21是控制OLED显示屏和计时器功能的代码,01-05分别对应五个按键。分别代表切换到计时器界面,开始,暂停,复位,切换回主界面。图4.21计时器的按键如图4.22是切换计时器页面的代码,会显示“00”。图4.22计时器初始界面5系统的测试和验证5.1测试方法本节阐述了系统测试的两个方面:功能性和性能。功能性测试验证系统的关键操作,例如时间管理和闹钟设置,而性能测试则评估系统的准确度和稳定性等关键指标。1.功能测试主要关注系统各项功能的实际运作情况:时间管理功能测试:会验证系统显示和设置时间的准确性,是否能利用STM32的RTC模块进行时间的保存,是否能与QT上位机进行时间的同步和修改。闹钟功能测试:检验系统是否能正确地设置闹钟信息,是否能准确地触发和控制闹钟的响铃功能,是否能与QT上位机进行闹钟的同步,是否能实现延时、取消、多重、铃声等功能。计时器功能测试:检验系统是否能正确地开启和关闭计时器功能,是否能正确地设置计时器的模式和初始值,是否能准确地显示和更新计时器的数值。2.性能测试的主要内容包括了几个关键的评估指标:准确性测试:检验系统是否能保证时间、闹钟、计时器的准确性,是否能与标准时间源进行对比和校准,是否能消除误差和偏差,是否能适应不同的环境和条件。稳定性测试:检验系统是否能保证时间、闹钟、计时器的稳定性,是否能抵抗干扰和噪声,是否能防止死机和卡顿,是否能恢复异常和错误。可靠性测试:检验系统是否能保证时间、闹钟、计时器的可靠性,是否能持续正常工作,是否能保持数据的完整和安全,是否能提供备份和恢复的功能。5.2测试环境本节详细描述了系统的测试环境,涵盖了所需的硬件和软件条件。硬件环境是指系统的硬件组成和连接方式,如有源蜂鸣器模块、DS1302、STM32F103C8T6开发板、面包板、0.96寸OLED显示屏、USB转串口下载线、ST-LINK下载器等。软件环境是指系统的软件平台和工具,如KeiluVision5和Python等。如图5.1所示是硬件连接图。图5.1硬件连接图5.3测试结果本节详细说明了系统测试的成果。功能测试验证了各项功能,例如时间管理和闹钟设置,是否符合设计预期,并通过图像资料进行演示。性能测试则评估了系统是否达到了关键性能标准,比如准确度和稳定性,并通过数据分析进行了展示。5.3.1功能测试结果本节介绍了系统的功能测试结果,测试结果涵盖了时间管理、闹钟设置及计时器等功能的表现。设置时间功能测试结果:系统能够正确地显示和设置系统时间,能够利用STM32的RTC模块进行时间的保存,能够与QT上位机进行时间的同步和修改。图5.2是系统的时间显示界面,可以看到OLED显示屏上显示了系统时间为2024年2月15日17时7分16秒,与电脑的时间一致。图5.2是系统的时间设置界面,可以看到用户可以通过QT上位机的管理界面进行时间的设置和修改,输入或选择相应的时间信息,然后点击确定按钮,即可将时间信息发送到目标板。目标板接收到时间信息后,会将其写入到DS1302和STM32的RTC模块中,并更新OLED显示屏上的系统时间。图5.2系统的时间设置界面切换时制度功能测试结果:系统能够正确地切换24小时制和12小时制的时间格式,能够根据用户的选择或系统的状态,进行时间的转换,以适应不同的需求和习惯。图5.4是系统的时间显示界面,可以看到OLED显示屏上显示了系统时间为2024年2月15日17时7分50秒,为24小时制的时间格式。图5.3是系统的时间设置界面,可以看到用户可以通过QT上位机的管理界面进行时间的修改,以及选择24小时制或12小时制的时间格式,然后点击确定按钮,即可将时间信息和时间格式发送到目标板。目标板接收到时间信息和时间格式后,会将其写入到DS1302和STM32的RTC模块中,并更新OLED显示屏上的系统时间。图5.3是系统的时间显示界面,可以看到OLED显示屏上显示了系统时间为2024年2月15日5:15:26PM,为12小时制的时间格式,以及相应的单位符号,如AM,PM等。图5.3系统的时间显示界面(12小时制)闹钟功能测试结果:系统能够正确地设置闹钟信息,能够准确地触发和控制闹钟的响铃功能,能够实现延时、取消、多重、铃声等功能。图5.4是系统的闹钟设置界面,可以看到用户可以通过QT上位机的管理界面进行闹钟的设置,输入或选择相应的时间、铃声等信息,最后点击确定按钮,即可将闹钟信息发送到目标板。目标板接收到闹钟信息后,会将其存储到DS1302的RAM中,并更新OLED显示屏上的闹钟列表。图5.4系统的闹钟设置界面图5.5是系统的闹钟列表界面,可以看到上位机界面显示了当前的闹钟列表,用户可以设置最多四个闹钟,每个闹钟可以有不同的时间、铃声等信息。图5.5系统的闹钟列表界面图5.6是系统的闹钟响铃界面,可以看到当有任何一个闹钟的时间与当前时间相同,就会触发闹钟的响铃功能,OLED显示屏上会显示闹钟的编号和时间,同时有源蜂鸣器模块会根据用户设置的铃声信息,控制蜂鸣器的频率和持续时间,产生不同的音调和节奏。如果用户选择延时,闹钟会在用户设置的延时时间后再次响起,延时时间可以在管理界面上进行设置,最小为1分钟,最大为255分钟。图5.6系统的闹钟响铃界面计时器功能测试结果:系统能够正确地开启和关闭计时器功能。图5.7是上位机的按键界面。图5.7上位机计时器界面图5.8和5.9是系统的计时器界面,可以看到OLED显示屏上显示了当前的计时值,用户可以双击SWITCH按钮,进入计时器的界面,用户可以通过短按START按钮,开始计时,计时器以秒为单位。用户可以通过短按CLOSE按钮,暂停计数。用户可以通过短按RESET按钮,将当前数值清零,也就是复位。用户可以通过点击DISPLAY按钮,切换回时间显示界面,此时OLED显示屏上会显示系统时间。图5.8系统的计时器初始界面图5.9系统的计时器计时界面掉电保存功能测试结果:DS1302模块的掉电保存时间功能测试是为了验证模块在断电后是否能够保持时间,通过记录掉电前后的时间来确认功能的可靠性。如果测试结果显示时间保持一致,说明掉电保存功能正常工作。如果时间有差异,则需要检查电池和电路设计是否存在问题。如图5.10,断电20秒后重新通电吗,时间测试正常。图5.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论