版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《嵌入式系统综合实践》课程设计(报告)嵌入式系统综合实践课程设计(报告)题目:基于STM32的数字式万年历摘要本文介绍了基于STM32数字式电子万年历的硬件结构和软硬件设计方法。本设计由数据显示模块、时间处理模块和调整设置模块四个模块组成。系统以STM32制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,数据显示采用TFT-LCD液晶显示模块,可以在TFT-LCD上同时显示年、月、日、周日、时、分、秒,还具有时间校准整点灯光提醒等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。关键词:STM32时钟芯片液晶显示目录TOC\o"1-3"\h\u第1章概述 11.1课题目的与意义 11.2国内外研究现状 11.3完成功能 2第2章总体设计方案 32.1设计要求 32.2方案论证 3第3章硬件设计 43.1嵌入式系统介绍 43.2ARM硬件系统 43.3主要单元电路设计 53.3.1ARM核心模块 53.3.2显示模块 63.3.3按键电路模块 6第4章软件设计 74.1程序设计 74.2时钟程序设计 84.3按键功能程序 94.4汉字显示程序 9第5章系统调试 115.1调试方法 115.2调试结果与分析 12总结 14参考文献 15附录 16第1章概述1.1课题目的与意义对于时间这个概念一开始在长达几千年的时间里,根本就没有任何测定时间的精确方法。人类得知时间是通过太阳在天空的位置,或者是通过日暑或沙漏这样的仪器来大致的判断一下时间。在中国历史上就出现日唇、沙漏、机械钟、石英钟,这几种计时装置。二十一世纪的今天科技与经济迅速发展,人们的生活节奏变得越来越快,生活水平越来越高,对于生活的品味和质量的要求也更高。人们不再满足于只能提供简单计时功能的时钟,希望在能保证计时精确的基础上能多添加一些其它功能,诸如日历、星期的显示,使其界面能够更加的美丽.目前电子万年历成了现代社会中的主要计时工具之一,广泛应用于社会生活需要的各个方面。它集时钟、日期、星期等功能于一体,具有显示直观、读取方便、界面简洁、功能多样等优点,符合目前电子计时仪器的发展趋势。电子万年历不仅在市场上占据重要的位置,在学习中尝试制作一款功能新颖的万年历也是一个热门的课题。此课题具有很好的开放性和发挥性,在制作过程中既巩固了单片机方面的知识,也开放了思维,将自身的想法实现于多彩功能的万年历中,这是对制作者本身能力的一种培养和锻炼。1.2国内外研究现状由于大规模的电子集成电路的应用,电子万年历在当今社会钟表界中独占鳌头。我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,所以在生产的电子万年历上除了具有基本的显示时间、日期功能外,增添其它的一些附属功能如闹铃、报警等功能后,生产商在其质量、价格、外观、实用上做功课。不断的改进万年历产品,使其更具有市场需求。就目前市场上出现的各种万年历,第一种是纯硬件电路系统,采用分离式硬件电路分别实现各种功能,时钟的功能通过时序逻辑电路来实现,这将导致电路复杂化、整体可靠性变差、不灵活。很难实现对系统的扩展。第二种是通过可编程逻辑器件来实现的,与前者相比在可靠性和实现时钟的功能方面要有所提升,但这显示功能只能通过数码管来实现,使其显示的效果不明显。同时在灵活性方面还是不行,很难对其进行扩展功能的实现。第三种相比前两种而言在各个方面都有所提高.这也是现在商家们致力发展的方法,使用单片机作为核心控制系统,这样整个系统就可编程了,大大增加了灵活性,智能化的液晶显示使其显示界更加清楚、简洁。而目前来说以精科/JK为引领者,国外以maxhome为主,这两家公司价格低廉且实用,所以深受国内外人民的喜欢。同时,可以实现其它的一些额外功能如遥控调试、语音报时等功能。1.3主要涉设计功能(1)显示年、月、日和时间,支持LED和LCD两种方式显示;(2)能通过小键盘调节万年历的年、月、日、时、分、秒;(3)显示当月日历,显示当天星期功能;(4)掉电后无需重新设置时间和日期。第2章总体设计方案2.1设计要求对于科技发展日新月异的现代社会来说,传统式的万年历已经无法达到人们所要使用的要求,而且不太美观。取而代之可是被科技推动出来的产物,数字式万年历登上了历史的舞台。它有着普通万年历所有的优点,并将它的缺点也改善了过来,比如说,方便便利,漂亮美观。它已经成为了人们准确,快速获取信息的重要工具之一。所以应这次课程设计的要求,我也选择设计了这款数字式万年历,能够实现显示时、分、秒,倒计时,秒表等功能,显示器可选(数码管或LCD液晶屏);实现按键调整时间。并且可以用按键或触屏查询万年历;有倒计时或秒表等功能。2.2方案论证方案一:使用了STM32位主要芯片以及DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,数据显示采用TFT-LCD液晶显示模块,可以在TFT-LCD上同时显示年、月、日、周日、时、分、秒,还具有时间校准整点灯光提醒等功能。方案二:使用了AT89C52单片机以及采用数字式温度传感器DS18B20,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式,但准确度不高,误差最大达2度。采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位打描各占用一个端口,总需占用单片机14个端口,采用间断1描法功耗小、硬件成本低及整个硬件系统体积相对减小。但是显示信息太少并且AT89C52单片机的运算速度比STM32慢。STM32可以直接用开发板实现全部功能,操作简单方便。综上分析所述所以我选择方案一。第3章硬件设计3.1嵌入式系统介绍嵌入式系统(Embedded
System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数字硬件和机械部件的完整设备,例如汽车的防锁死刹车系统。相反,通用计算机如个人电脑则设计灵活,可以智能处理各式各样的运算情况,以满足广大终端用户不同的需要。现代嵌入式系统通常是基于微控制器(如含集成内存和/或外设接口的中央处理单元)的,但在较复杂的系统中普通微处理器(使用外部存储芯片和外设接口电路)也很常见。通用型处理器、专门进行某类计算的处理器、为手持应用订制设计的处理器等,都可能应用到嵌入式系统。常见的专用处理器有数字信号处理器。由于嵌入式系统专用于特定的任务,设计工程师可以对其进行优化,以减小产品的尺寸和成本,并提高可靠性和性能。一些嵌入式系统是批量生产的,受益于规模经济。嵌入式系统应用于从数字手表和MP3播放器等便携式设备,到交通灯、工厂控制器等大型固定设备,以及混合动力汽车、磁共振成像和航空电子设备等复杂系统。其复杂性范围广泛,从低复杂性的单个微控制器芯片到高复杂性的安装在大型机箱或机箱内的多个单元、外围设备和网络。3.2ARM硬件系统万年历系统硬件系统由以下六个模块组成:
ARM核心模块、
LCD显示频模块、电源模块、键盘模块、RS232通讯模块、触摸屏模块。ARM核心模块采用STM32芯片,键盘模块采用小键盘,用于调整时间,显示模块采用LCD显示频,实现对时间,日期的显示。ARM核心模块STM32ARM核心模块STM32复位电路晶振电路RS232通讯模块键盘模块LCD显示模块图3.1硬件系统原理图3.3主要单元电路设计3.3.1ARM核心模块本设计采用的核心芯片型号为:STM32F103ZET6。该芯片具有
64KB
SRAM、512KB
FLASH、2
个基本定时器、4
个通用定时器、2
个高级定时器、2
个
DMA
控制器(共
12
个通道)、3
个
SPI、2
个
IIC、5
个串口、1
个
USB、1
个
CAN、3
个
12
位
ADC、1
个
12
位
DAC、1
个SDIO
接口、1
个
FSMC
接口以及
112
个通用
IO
口。如图3.1所示。图3.2核心模块原理图3.3.2显示模块显示电路采用TFT-LCD液晶显示,图中只画出了其相应的接口。3
脚用于调节TFT-LCD的背光,4、5、6为TFT-LCD的控制口,用于控制其写入或是读出指令,7至14脚为TFT-LCD的数据口,将数传送到TFT-LCD中。图3.3LCD显示频模块图3.3.3按键电路模块通过3个按键控制控制时间的加减。图3.5按键电路模块图第4章软件设计4.1程序设计主程序是通过调用LCD子程序、RTC时钟子程序、汉字显示子程序、按键功能子程序以及图片显示子程序等来实现显示开机动画、汉字、机械钟表、时间、日期、星期于一体的功能。显示部分程序:计步少用,先的炉口化TFT-LCD即向内写入一系列的设置程序,来启动TFT-LCD的显示;之后对显示部位进行相关的配置;最后进行显示并可以配置相关的背景程序流程图如图4.1所示。图4.1背景程序流程图4.2时钟程序设计基于ARMCortex-M3内核的STM32其本身包含一个独立的定时——实时时钟(RTC),由于其拥有一组连续的计数器这一特性,我们就可以通过在相应软件的配置下,来实现时钟日历的功能。若想重新设置系统当前的时间和日期,则可通过修改计数器值的方法来实现。该款单片机的RTC模块和时钟配置系(RCC_BDCR寄存器)处于后备区域(BKP),这将导致系统复位或从待机模式中唤醒后,对后备寄存器和RTC的访问被禁止匕之前对RTC模块的设置和时间会不会出现变化。其优点在于防止对于后备区域意外的写操作UIRTC的组成包含两个部分,第一部分是APBI接口,除了用于和APB1总线相连,还包含一组16位的寄存器,是通过APB1总线来对其进行读写操作。这一部分是由APB1总线时钟驱动来与APB1总线接口的。第二部分是RTC核心,由一组可编程计数器组成,主要分为两个模块:RTC预分频模块和一个32位的可编程计数器。其中RTC预分频模块包含一个20位的可编程分频器被称作为RTC预分频器,如果在RTC_CR寄存器中将相应的位设置为允许位,就会在每个TR_CLK周期RTc产生一个秒中断。模块二可以被初始化为当前的系统时间,将系统的时间按TR_CLK周期累加并与存储在RTC.ALR寄存器中的可编程时间进行比较,如果RTC_CR控制寄存器相应位设置成允许位,在比较匹配时就会产生一个闹钟中断。4.3按键功能程序根据STM32开发板中所要用到的两个按键的硬件电路连接方式,进行编写程序。在编写程序时应注意按键的消抖。在进行扫描某个按键时,该按键按下后进行按下的时间长短判断,然后根据按键按下的时间长短来实现同一个按键的不同功能,此种方法的优点是可以节省所需按键的数量和10口.此次使用的两个按键(KEYO、KEY1)功能分别是,当按键按下时长未超过3秒,两个接键分别执行的功能是进行时和分加一,超过3秒则执行时和分减一,因秒的修改无多大实际用途程序中就没有进行判断了。图4.2按键功能流程图4.4汉字显示程序在液晶屏上显示汉字的原理显示字符大致是一样的在液晶屏上显示的汉字其实就是由点亮的点组成的。这就类似于我们在纸上书写汉字一样,所写字都是由沾在纸上的墨汁组成的,所以当我们知道所要显示汉字的点阵数据后就可以知道该汉字的生成方法,再通过相应的程序即可在屏幕上显示出该汉字了。本次设计中显示汉字的点阵数据是通过一款名为PCtoLCD2002的软件生成的,再通过相关显示程序显示的。所要显示的汉字为点阵16x16。
第5章系统调试本设计仿真软件采用keiluvision8以及ISIS8Professional软件。KeilSoftware公司推出的Uision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,Uvision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。Uvision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。Uvision3提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADUC83x和ADUC84x,以及Infineon的XC866等。系统调试如下:5.1调试方法本图为系统总体仿真图,总体阐述了系统主要使用了什么元器件,以及运用ISIS8Professional仿真软件实现通过总图完成仿真所需要的几个功能。图5.1电路总体仿真图5.2调试结果与分析当系统通电时,仿真图开始通电调试,电路总体调试图如图5.2所示:图5.2系统通电调试图当用户想要调节时间时,需要先按下时间调解按键,然后再按下加减键。图5.3为系统通电按下时间加键程序图。图5.3按下时间加调试图图5.4为系统按下时间减键电路图,具体如下图所示。5.4按下时间减调试图
总结本次设计的万年历系统采用了模块化设计方式,以单片机STM32F103RBT6作为主控制模块、TFT-LCD作为液晶显示模块、内部的RTC时钟作为实时时钟模块。整体程序的开发方式是基于按键的,每一个模块的程序逻辑清晰、目的明确、结构简单、易于编写、调试和修改程序可读性强,可以很方便对程序在保持主体不动的前提下进行局部修改以达到更好的显示效果.通过本次设计可知采用STM32F103RBT6作为主控器件、TFT-LCD作为液晶显示、内部的RTC时钟作为实时时钟的方式是可行.而且该万年历具有计时准确、功耗低、反应快、等特点.同时用TFT-LCD作为液晶显示模块使时间与图片等可以的直观清晰显示。但由于课程设计时间有限,本设计还存在很多不足之处.比如:整点报时、音乐闹铃等。
参考文献[1]文化.嵌入式系统的开发与应用分析[J].电脑编程技巧与维护,2020,(12):53-55.[2]刘军.精通STM32F4[M].北京:北京航空航天大学出版社,2015.[3]曾文兵.基于STM32F407的视频采集与传输系统设计[D].武汉:华中师范大学,2016.[4]杨宸,王智超,徐浩然,李天宇,王啸岳.基于STM32的智能万年历的定时闹钟设计[J].中外企业家,2019,(25):56-57.[5]邝爱华.基于STM32的智能家居系统基本实现[J].微型电脑应用,2019,35(04):136-140.[6]张路莹,许亚迪,郑文青,周麟坤.基于STM32的智能万年历设计[J].现代工业经济和信息化,2018,8(13):40-41.[7]刘磊.基于STM32的电子万年历系统设计[J].科技资讯,2015,13(01):20.[8]焦江丽,李凤莲.以ARMCortex-M3为基础的STM32开发板的设计与实现[J].中国新通信,2013,15(09):94-96.[10]\o"Showauthordetails"ZhuW\o"Showauthordetails"Ruan.Designandresearchofsolarphotovoltaicpowergenerationcontrollerbasedonstm32microcontroller[J].AdvancedMaterialsResearch,2017(34):66-69.
附录#include"stm32f10x.h"#include"bsp-lcd1602.h"#include"delay.h"#include"sys.h"#include"adc.h"voidDisplay_Time(void);unsignedintnian=2019;charyue=12;charri=1;charshi=12;charfen=30;charmiao=30;charmiao1=30;unsignedcharzhou=3;unsignedchartanble[8]="nyrzsfm";charTimes=0;unsignedcharKEY_num=0;voidKey_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure; /*开启按键端口(PA)的时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; //IO口做输入口时,不用设置输出频率 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOA,&GPIO_InitStructure);}voidKEY_Scan(void){ if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1) { /*等待按键释放*/ while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1); while(1) { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1) { while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1); KEY_num++; if(KEY_num>7) { KEY_num=0; break; } } if(Get_ADC(ADC_Channel_1)>1000) { if(KEY_num==1) { nian++; if(nian>2999) { nian=0; } } if(KEY_num==2) { yue++; if(yue>12) { yue=1; } } if(KEY_num==3) { ri++; if(ri>30) { ri=1; } } if(KEY_num==4) { zhou++; if(zhou>7) { zhou=0; } } if(KEY_num==5) { shi++; if(shi>23) { shi=0; } } if(KEY_num==6) { fen++; if(fen>59) { fen=0; } } if(KEY_num==7) { miao++; if(miao>59) { miao=0; } } Display_Time(); } if(Get_ADC(ADC_Channel_2)>1000) { if(KEY_num==1) { nian--; if(nian<2000) { nian=2999; } } if(KEY_num==2) { yue--; if(yue<=0) { yue=12; } } if(KEY_num==3) { ri--; if(ri<=0) { ri=30; } } if(KEY_num==4) { zhou--; if(zhou<=0) { zhou=7; } } if(KEY_num==5) { shi--; if(shi<0) { shi=23; } } if(KEY_num==6) { fen--; if(fen<0) { fen=59; } } if(KEY_num==7) { miao--; if(miao<0) { miao=59; } } } Display_Time(); } }}voidDisplay_Time(void){ LCD1602_WriteCmd(0x80); LCD1602_WriteDat(''); LCD1602_WriteDat(''); LCD1602_WriteDat(nian/1000+0x30); LCD1602_WriteDat(nian%1000/100+0x30); LCD1602_WriteDat(nian%100/10+0x30); LCD1602_WriteDat(nian%10+0x30); LCD1602_WriteDat('-'); LCD1602_WriteDat(yue/10+0x30); LCD1602_WriteDat(yue%10+0x30); LCD1602_WriteDat('-'); LCD1602_WriteDat(ri/10+0x30); LCD1602_WriteDat(ri%10+0x30); LCD1602_WriteDat(''); LCD1602_WriteDat(''); LCD1602_WriteDat(zhou+0x30); LCD1602_WriteDat(''); LCD1602_WriteCmd(0x80+0x40
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年将大数据应用于状态监测
- 园林景观照明安装与调试方案
- 钻孔灌注桩施工质量控制方案
- 2026年自动化测试对市场需求敏感性的回复
- 2026年环境教育对经济发展的促进作用
- 公共充电桩项目可行性研究报告
- 屋顶排水设计方案
- 车用线束生产线项目可行性研究报告
- 2026年新型发动机设计的创新路径
- 2026年实验设计在控制系统仿真中的应用
- 审计局复审抽审制度
- 2025年幼儿园保育员考试试题及答案
- 2026年宁夏财经职业技术学院单招综合素质考试题库及答案详解(历年真题)
- 2026年宁夏财经职业技术学院单招职业技能测试题库及参考答案详解1套
- 2026春新版二年级下册道德与法治全册教案教学设计(表格式)
- 鸡场卫生防疫方案制度
- 2026年度大学生云南西部计划考试参考试题及答案
- 中兴新云行测题库
- 2025年温州肯恩三位一体笔试英语真题及答案
- 无锡市锡山区2025年网格员考试题库及答案
- 管理干部胜任力
评论
0/150
提交评论