基于STM32的万年历设计
- 格式:doc
- 大小:219.50 KB
- 文档页数:34
课程设计说明书设计题目:基于STM32的智能万年历专业:电气工程及其自动化班级:设计人:课程设计任务书学院电气信息系专业电气工程及其自动化一、课程设计题目:基于STM32的智能万年历专题名称:最小应用系统二、课程设计主要参考资料(1)刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社.2013.5(2)ADS7943中文参考资料[M/CD].(3)ILI9320控制器中文参考资料[M/CD].三、课程设计应解决主要问题(1)最小应用系统:包括MCU、复位、启动、晶振、电源等。
(2)日历的显示和设置;(3)万年历的算法和实现;(4)定时闹钟功能;(5)无线设置功能。
四、课程设计相关附件(如:图纸、软件等)(1)软件:Keil μVision4(2)开发平台:神州Ⅱ号STM32嵌入式技术开发板五、任务发出日期:课程设计完成日期:指导教师签字:系主任签字:指导教师对课程设计的评语指导教师(签章):日期:摘要单片机应用技术飞速发展,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中广泛使用的各种智能IC卡、电子宠物等,从大到国家防卫,小到日常生活,方方面面都离不开单片机。
单片机是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
二十一世纪的今天科技与经济迅速发展,人们的生活节奏变得越来越快,生活水平越来越高,对于生活的品味和质量的要求也更高。
人们不再满足于只能提供简单计时功能的时钟,希望在能保证计时精确的基础上能多添加一些其他功能,诸如日历、定时等。
本文主要介绍了以STM32F103VCT6开发板为核心部件来设计的一款万年历,以其内部的RTC时钟模块作为时钟,用TFTLCD液晶显示器作为显示模块,时钟电路能准确提供24小时制时间、平年闰年的判断以及定时。
一、引言万年历是一种显示当前日期和时间的器件或软件。
随着科技的发展,电子产品普及率愈来愈高,基于单片机的万年历设计成为了一种非常受欢迎的设计方案。
本文将介绍一种基于单片机的万年历设计。
二、设计原理1.显示模块:采用液晶显示屏作为显示模块,可以显示日期、时间等信息。
2.时钟模块:基于RTC(实时时钟)模块,用于获取当前日期和时间。
3.按键模块:采用按键模块作为输入模块,用于设置日期和时间、切换显示模式等。
4.控制模块:基于单片机,用于控制各个模块的工作,并进行相关的计算和显示。
三、硬件设计1.单片机选择在本设计中,选择了一款常用的单片机,STM32F103C8T6、它具有低功耗、高性能的特点,并且具备丰富的外设接口,非常适合用来设计万年历。
2.RTC模块选择在本设计中,选择了一款常用的RTC模块,DS1302、它具有低功耗、稳定性好的特点,并且具备SPI接口,非常适合用来获取当前日期和时间。
3.液晶显示屏选择在本设计中,选择了一款常用的液晶显示屏,1602液晶显示屏。
它具有较大的屏幕尺寸、低功耗的特点,并且可以显示多行字符,非常适合用来显示日期、时间等信息。
4.按键模块选择在本设计中,选择了一款常用的按键模块,4x4按键模块。
它具备4行4列的按键布局,可以满足设置日期和时间、切换显示模式等功能的需求。
五、软件设计1.初始化设置在软件设计中,首先需要对各个硬件模块进行初始化设置。
2.获取当前日期和时间使用RTC模块获取当前日期和时间,并将其存储在相应的变量中。
3.显示日期和时间使用液晶显示屏将当前日期和时间显示出来。
4.设置日期和时间通过按键模块获取用户的输入,并将对应的日期和时间设置到RTC模块中。
5.切换显示模式通过按键模块获取用户的输入,并根据用户的选择切换不同的显示模式,例如切换到年模式、月模式、日模式等等。
六、总结通过以上的设计,基于单片机的万年历完成了日期和时间的获取、显示和设置等功能。
基于STM32的智能万年历设计方案1.课程设计任务1.1 课程设计目的(1)学习万年历的原理,学会定时器、触摸屏在万年历中的应用。
(2)通过万年历的制作使学生熟练掌握所学的相关知识内容,并培养学生工程设计的一般方法和技巧。
1.2 设计要求:独立思考、共同合作、保质保量、按时完成。
1.3 技术要求:(1)系统组成系统选用STM32F103单片机为微处理器,使用开发板上具有的按键、指示灯、触摸屏和串口等实现万年历的功能。
(2)实现功能:1)日历、时间的调整,通过按键切换实现对年月日时分秒的调整控制,可以设置每一部分的初始值。
2)具备闰年的自动调整功能3)具有定时闹钟功能:通过按键/触摸屏设置定时时间。
定时时间到,蜂鸣器发出鸣叫声,维持5S。
4)上位机功能:可以把单片机的时间数据通过串口或者USB传送至上位机。
5)无线设置功能:通过远程设置万年历。
(3)模块组成:STM32 单片机最小应用系统;设置显示模块;闹钟模块;时间运行模块等;1.4 解决的主要问题:(1)最小应用系统设计:设计STM32的最小应用系统,包括MCU、复位、启动、晶振、电源等。
(2)日历的显示和设置;(3)万年历的算法和实现;(4)定时闹钟功能;(5)无线设置功能。
1.5 两周时间安排(1)第一周:星期一:布置设计任务,收集相关资料。
星期二:确定设计方案星期三:软、硬件的总体设计星期四、五、六、日:上机调试(2)第二周星期一、二、三:上机调试星期四:完成设计报告。
星期五:17:00之前上交课程设计报告。
2 总体方案设计2.1 整体方案设计2.2 模块工作原理2.2.1 最小应用系统模块最小应用系统包括MCU和电源、复位、晶振、启动等,该系统可以接收数据传给上位机,通过上位机将数据传输到显示屏上显示数据,也可以通过改变数据让其调整显示屏上的数据。
另外它能使蜂鸣器发声。
2.2.2 基础配置模块基础配置模块实现对SysClock、RCC、GPIO、EXTI、NVIC、Timer、USART 等功能模块进行基础配置,设置其输入输出方式、速度及其它专属配置,并使能需要的管脚及外设,设置中断。
基于STM32的万年历设计班级:姓名:学号:成绩:电子通信工程系题目:基于STM32的万年历设计前言:随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS12C887。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS12C887的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,采用数字式温度传感器DS18B20提取外界温度,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
进入新世纪LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。
伴随社会信息化进程的推进,LCD显示屏技术也在不断的推陈出新,应用领域愈加广阔。
基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。
现基于STM32在液晶显示屏幕上显示文本及图形。
目前,显示技术和显示工业的发展迅速。
显示技术是传递视觉的信息技术。
液晶显示器件LCD 是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。
它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。
截至目前,我国在液晶显示取得较大进步,我国LCD产业已经走过了近30年的历程.经历几次大的投资浪潮之后,我国内地已经成为世界最大的TN-LCD(扭曲液晶显示器)生产基地和主要的STN-LCD(超扭曲液晶显示器)生产基地,并且从2003年开始,涉足TFT-LCD(薄膜晶体管液晶显示器)领域.本课题设计采用STM32F103VE开发板,实现在LCD显示屏上显示由按键可操控的万年历功能。
基于STM32万年历设计一、课题研究背景和意义1.1课题研究背景C教学起步的背景 1996年,国外计算机产业界正在全面兴起面向对象编程与设计的热潮,其主要工具就是C。
C在数据类型的安全上,弥补了C的不足,克服了C的种种安全隐患,用C开发的产品正在稳步上市,并开始超过了C。
C的开发工具正在稳步推出,在Windows环境下的两个主要C开发工具——Borland C++ Builder4.0和Microsoft Visual C++6.0标志着C开发工具已经成熟。
1.2课题研究意义二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。
电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。
由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。
二、系统总体设计本系统以STM32为控制核心,通过与DS1302和DS18B20通信获取实时时间和实时环境温度,并将得到的数据通过1602液晶显示出来,同时通过相应的按键调整相应的值。
因此本设计可分为一下模块:显示模块、实时时间计算模块、实时环境温度采集模块、报警模块、设置模块(时间设置模块、最高温度设置模块、闹钟设置模块)。
2.1 液晶显示模块方案(1):数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。
要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此本设计应采用动态显示方式。
由于动态显示方式利用的是人眼视觉暂留的特性,扫描的时间应不大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。
方案(2):1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
摘要:随着科技的不断发展,单片机在各个领域的应用越来越广泛。
其中,基于单片机的万年历设计是一项非常有实际意义的项目。
本论文通过仿真和制作的方式,设计了一个基于单片机的万年历系统,并对其进行了详细的介绍和分析。
该系统具有显示年、月、日等功能,能够自动识别闰年,并能够自动调整日期。
通过本论文的研究,可以对基于单片机的万年历设计有一个更加深入的了解,并为相关领域的应用提供参考。
关键词:单片机;万年历;仿真;制作一、引言随着信息技术的迅速发展,人们对计算机和电子产品的需求越来越大。
而单片机则是当今电子技术领域中一种非常重要的器件,其应用范围非常广泛。
单片机以其简单的结构和强大的功能,成为了各个领域研究和应用的热点。
其中,基于单片机的万年历设计是一项非常有实际意义的项目。
本论文将通过仿真和制作的方式,设计并实现一个基于单片机的万年历系统。
二、设计原理三、系统设计系统设计包括硬件设计和软件设计两部分。
硬件设计:硬件设计主要包括单片机控制器、液晶显示屏、按键等部分。
单片机控制器采用XX型号的单片机,具有较高的运算能力和存储空间。
液晶显示屏则采用XX型号的液晶屏,具有较高的分辨率和显示效果。
按键部分采用XX型号的按键开关。
软件设计:软件设计主要包括单片机程序的编写和逻辑设计。
其中,编写的程序主要负责接收按键输入、对日期进行计算和调整,并将结果显示在液晶屏上。
逻辑设计则是对系统的各个模块进行相应的设计和调试。
四、系统制作系统制作包括原理图设计、电路板制作和程序烧录等步骤。
原理图设计主要是根据硬件设计部分的要求进行设计,然后利用电路板制作设备将其制作成实际的电路板。
程序烧录则是将软件设计部分编写好的程序烧录到单片机控制器上。
五、系统仿真系统仿真是通过软件仿真来验证系统设计的正确性和可靠性。
利用专门的仿真软件,将系统的各个部分进行模块化的仿真和测试,并进行相应的修正和调试。
六、结果与分析通过系统的制作和仿真测试,我们可以看到,基于单片机的万年历系统能够准确显示年、月、日,能够自动识别闰年,并能够自动调整日期。
STM32学习笔记一竹天笑实现的功能:1、日历功能。
2、数字和模拟时钟功能。
图1(为LCD截屏保存在SD卡中的图像)最终界面如下,但还存在不少漏洞。
1、没有更改时间的设置;2、只有节气显示没有节假日显示3、背景不是用uCGUI画的,是在PS中画好然后存在SD卡中,然后显示的BMP 格式图像。
要点分析:1、STM32自带了RTC时钟计数器,从0开始计数到232。
每一个计数代表秒计数,每六十个计数代表分计数,以此类推。
24(小时)*60(分钟)*60(秒钟)=86400代表一天的计数时间。
假设当前计数为count,count/86400得到计数的天数,根据这个得到年月日。
Count%86400得到时分秒。
2、一些根据1中得到的年月日时分秒,进行计算的程序有:阳历转阴历,闰年判断,节气判断,星期几计算,当前月有多少天等等。
3、模拟时钟的绘制:时钟指针运动算法、屏幕重绘方法、RTC消息、画笔/画刷等。
指针运动算法和屏幕重绘方法是本程序主要难点所在。
(以下参照百度文库之模拟时钟)不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。
计算指针端点(x, y)的公式如下:x =圆心x坐标+ 指针长度* cos (指针方向角)y =圆心y坐标+ 指针长度* sin (指针方向角)注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
由于屏幕的重绘1秒钟一次,如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。
本程序采用非删除式重绘,假定指针将要移动一格,则先采用背景色(这里是白色)重绘原来指针以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针(如果指针没有动,则直接绘制指针,此句在程序中被我删除,具体原因,为数据截断导致一些误差)。
另外,秒表为RTC一秒钟定时计数。
程序分析:uCGUI+uCOS,一共三个任务:主处理任务、触摸屏任务、秒更新任务。
万年历是一种可以显示年、月、日、星期的电子设备,广泛应用于日常生活和办公场所。
本文将介绍一个基于STM32单片机的万年历的设计思路和实现过程。
首先,我们需要明确设计目标。
在这个项目中,我们的目标是使用STM32单片机开发一个功能齐全、易于操作的万年历。
具体地说,这个万年历应该能够显示当前的年、月、日和星期,并且能够进行日期的加减操作,同时应该具备一些辅助功能如闹钟设置、倒计时等。
接下来,我们需要进行硬件设计。
首先需要选择适当的显示屏,比如常见的LCD或OLED屏幕。
然后,我们需要选择合适的按键和外部触发器,用于用户的交互输入。
同时,还需要添加一些必要的接口,如USB接口用于数据传输和维护。
在软件设计方面,我们需要定义合适的数据结构来存储日期、时间、闹钟等信息。
同时,需要编写相应的程序来实现日期的显示和更新、日期的加减、闹钟的设置等功能。
在实现倒计时功能时,我们可以使用定时器中断来实现精确的计时。
此外,为了提高用户体验,我们可以添加一些额外的功能。
比如,我们可以为万年历设计一个简洁美观的用户界面,考虑使用图形库绘制用户界面元素。
同时,可以添加一些实用的功能如温湿度监测、天气预报等。
最后,在整个开发流程结束后,我们需要进行集成测试和调试,确保万年历的各项功能正常运行。
并且,我们还可以考虑为万年历添加一些优化和改进措施,如增加存储容量、优化节能技术等。
综上所述,基于STM32单片机的万年历设计主要涉及硬件设计和软件设计两个方面。
通过精心的设计和合理的实现,我们可以开发出一款功能丰富、易于使用的万年历产品,满足用户的各种需求。
基于单片机的万年历设计毕业设计**基于单片机的万年历设计****引言**在当今科技高速发展的时代,电子产品已经深入到我们的生活的方方面面。
其中,基于单片机的电子设计在各个领域都有着广泛的应用,其灵活性和可编程性使得单片机成为了电子设计中的主力。
本文将介绍基于单片机的万年历设计,通过利用单片机的功能和特性,实现一个功能强大、易用便捷的万年历系统。
**设计目的**本设计的目的是利用单片机技术设计一个能够显示年、月、日、星期的万年历,同时具备节气、节假日、农历等信息显示的功能。
通过这个设计,可以方便人们查看日期信息,了解节气、节假日和农历等重要信息,提高生活效率。
**设计原理**1. **单片机选择**本设计选择常用的单片机作为控制核心,如ATmega328P,它具有良好的性能和丰富的外设,能够满足日历系统的要求。
2. **时钟模块**时钟模块采用DS1302实时时钟芯片,通过与单片机的串行通信接口进行数据交换,实现对时间的精准控制和显示。
3. **LCD显示模块**使用液晶显示器(LCD)作为显示器件,能够清晰地显示日期、星期、节气、节假日等信息,用户界面友好。
4. **数据存储**利用单片机内部的EEPROM或外部的存储器,存储一些固定信息,如节假日、节气等,以及用户设置的一些参数,保证系统断电后数据不丢失。
5. **算法设计**设计合适的算法来计算农历、节气等信息,并将其与公历对应显示,保证信息的准确性和可靠性。
**系统功能**1. **日期显示**系统能够实时显示当前的公历日期和星期,用户可以随时了解到当前的时间信息。
2. **节气显示**根据当前日期计算节气,并显示在屏幕上,用户可以了解到当前所处节气,增强生活的趣味性。
3. **节假日提醒**系统能够根据预设的节假日信息,在节假日前一天提醒用户,并显示节假日名称,方便用户做好假期安排。
4. **农历转换**系统能够将当前公历日期转换为农历日期,并显示在屏幕上,用户可以了解到农历日期的信息。
目录4 (7)5.总结 (8)万年历系统摘要:万年历在日常生活中最常见,应用也最广泛。
本次课程设计主要就是设计一款电子万年历系统,本次嵌入式系统课程设计以STM32F103RB芯片为核心,主要能够实现显示时间、日期、节日、以及24节气和12生肖等功能。
其中时间显示包括时、分、秒,日期显示包括年、月、日,显示部分通过电脑上的超级终端进行显示,当程序编译无误后,将其下载至开发板中,然后通过超级终端进行显示,开始时用户需要自行设置时间和日期,然后万年历系统才会按照用户设计的功能开始工作。
关键字:STM32F103RB 超级终端时间日期显示 24节气显示十二生肖显示1引言STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM 内核。
按性能有不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。
此次我们所使用的STM32F103RB芯片就是增强型系列,增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。
时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于MHz。
ARM公司的高性能”Cortex-M3”内核具有一流的外设(1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度)、低功耗(在72MHz 时消耗36mA(所有外设处于工作状态),待机时下降到2μA)、最大的集成度(复位电路、低电压检测、调压器、精确的RC振荡器等)\简单的结构和易用的工具,STM32F10x重要参数主要有供电、容忍5V的I/O管脚、优异的安全时钟模式、带唤醒功能的低功耗模式、内部RC振荡器、内嵌复位电路、工作温度范围是-40°C至+85°C或105°C。
基于单片机的万年历设计毕业设计标题:基于单片机的万年历设计摘要:本文设计了一种基于单片机的万年历,实现了日期、时间、温湿度等功能的显示和设置。
通过运用单片机技术,结合LCD显示屏、温湿度传感器和按键等硬件模块,实现了精确的时间和日期显示,并通过按键进行设置和调整。
该设计具有结构简单、功能齐全、易于操作的特点,可广泛应用于家庭和办公环境中。
关键词:单片机;万年历;日期和时间显示;温湿度传感器;按键第1章引言1.1 研究背景万年历是一种常见的时间管理工具,能够显示日期、时间和其他相关信息,对人们的日常生活起到重要的辅助作用。
随着科技的不断发展,单片机技术已经得到广泛应用,并在各个领域取得了显著的成果。
基于单片机的万年历设计将为人们提供一种更加方便、准确和实用的时间管理工具。
1.2 研究目的本文旨在设计一种基于单片机的万年历,实现日期、时间、温湿度等功能的显示和设置。
通过探究单片机技术在万年历设计中的应用,提高时间管理的效率和准确性,满足人们对时间管理需求的不断增长。
第2章设计原理2.1 单片机选择在本设计中,选择适用于万年历设计的单片机芯片,考虑到处理能力、接口数量和成本等因素,最终选择了XX单片机芯片。
2.2 硬件设计通过连接LCD显示屏、温湿度传感器和按键等硬件模块,实现了万年历的功能。
其中,LCD显示屏用于显示日期和时间等信息,温湿度传感器用于获取环境温湿度数据,按键用于进行设置和调整。
2.3 软件设计通过编写单片机程序,实现日期、时间、温湿度等功能的显示和设置。
程序中包括时钟控制、日期计算、温湿度采集等功能模块,通过按键的触发,实现对日期和时间的设置和调整。
第3章系统实现3.1 系统硬件搭建按照设计原理中的硬件设计要求,搭建了基于单片机的万年历系统。
将LCD显示屏、温湿度传感器和按键等硬件模块连接到单片机芯片上,确保各个硬件模块正常工作。
3.2 系统软件编写根据设计原理中的软件设计要求,编写了单片机程序。
S T M32实现万年历STM32学习笔记一竹天笑实现的功能:1、日历功能。
2、数字和模拟时钟功能。
图1(为LCD截屏保存在SD卡中的图像)最终界面如下,但还存在不少漏洞。
1、没有更改时间的设置;2、只有节气显示没有节假日显示3、背景不是用uCGUI画的,是在PS中画好然后存在SD卡中,然后显示的BMP格式图像。
要点分析:1、STM32自带了RTC时钟计数器,从0开始计数到232。
每一个计数代表秒计数,每六十个计数代表分计数,以此类推。
24(小时)*60(分钟)*60(秒钟)=86400代表一天的计数时间。
假设当前计数为count,count/86400得到计数的天数,根据这个得到年月日。
Count%86400得到时分秒。
2、一些根据1中得到的年月日时分秒,进行计算的程序有:阳历转阴历,闰年判断,节气判断,星期几计算,当前月有多少天等等。
3、模拟时钟的绘制:时钟指针运动算法、屏幕重绘方法、RTC消息、画笔/画刷等。
指针运动算法和屏幕重绘方法是本程序主要难点所在。
(以下参照百度文库之模拟时钟)不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。
计算指针端点(x, y)的公式如下:x =圆心x坐标 + 指针长度 * cos (指针方向角)y =圆心y坐标 + 指针长度 * sin (指针方向角)注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
由于屏幕的重绘1秒钟一次,如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。
本程序采用非删除式重绘,假定指针将要移动一格,则先采用背景色(这里是白色)重绘原来指针以删除原来位置的指针,再采用指针的颜色在当前位置绘制指针(如果指针没有动,则直接绘制指针,此句在程序中被我删除,具体原因,为数据截断导致一些误差)。
另外,秒表为RTC一秒钟定时计数。
程序分析:uCGUI+uCOS,一共三个任务:主处理任务、触摸屏任务、秒更新任务。
本科生毕业论文(或设计)(申请学士学位)论文题目基于STM32单片机的万年历设计作者姓名李杨专业名称自动化指导教师王斌2014年5月学生:(签字)学号:2010210328答辩日期:2014年5 月24日指导教师:(签字)目录摘要 (1)Abstract (1)1绪论 (2)1.1 研究背景及意义 (2)1.2 国内外研究现状 (2)1.3 论文主要内容 (2)2系统硬件电路设计 (3)2.1单片机开发板的介绍 (3)2.2硬件电路总体结构设计 (4)2.3 硬件电路各单元电路设计 (4)2.3.1 按键电路的设计 (4)2.3.2 显示电路的设计 (5)3系统软件设计 (6)3.1 RealView MDK3.80简介 (6)3.2 软件总体设计 (6)3.3 TFT-LCD显示程序设计 (7)3.4 时钟程序设计 (8)3.5 汉字显示程序 (10)3.6 图片显示程序 (11)3.7 按键功能程序 (11)4系统调试 (12)结论 (14)参考文献 (14)附录一 (15)程序列表 (15)主程序 (15)TFT-LCD显示程序 (21)时钟程序 (24)汉字显示程序 (29)图片显示程序 (31)按键程序 (36)致谢 (39)基于STM32单片机的万年历设计摘要:随着现代社会生活和工作节奏的加快,及时准确的掌握时间变得越来越重要。
STM32包含Cortex-M3内核,具有低功耗、低成本、丰富的片内外设以及处理速度快等特点。
本文采用STM32F103RBT6作为主控制器,利用其内部的实时时钟(RTC)在相应软件的配置下,设计了具有时间显示功能的电子万年历,可提供24小时制的实时时钟和区分平、闰年的日历。
测试表明该设计计时准确、界面美观、操作简便。
关键词:万年历;STM32F103RBT6;TFTLCD;Cortex-M3;RTCCalendar Design Based On STM32 MicrocontrollerAbstract:With the development of modern society, the accelerated pace of life and work,to grasp time timely and accurately becomes more and more important. STM32 contains the Cortex-M3 kernel, with low power consumption, low cost, rich on-chip and high processing speed. This paper uses STM32F103RBT6 as the main controller, using real time clock the internal (RTC) with the corresponding software configuration, designs electronic calendar with the function of time display, and it can provide 24 hour real-time clock and the calendar which can distinguish the flat year or the leap year. The test shows that the design of accurate timing, beautiful interface, and easy operation.Key words: Calendar; STM32F103RBT6; TFTLCD; Cortex-M3; RTC1 绪论1.1 研究背景及意义对于时间这个概念一开始在长达几千年的时间里,根本就没有任何测定时间的精确方法。
使用STM32的RTC制作万年历(2013-09-14 16:39:34)转载▼标签:it注意:红色代码部分,如果不加这两句,修改时间一直卡死在RTC_WaitForLastTask()#include "stm32f10x.h"#include "STM32_RTC.h"#define BKP_TIME_FLAG BKP_DR1#define BKP_TIME_YEAR BKP_DR2#define BKP_TIME_MONTH BKP_DR3#define BKP_TIME_DAY BKP_DR4#define BKP_TIME_DATE BKP_DR5u32 Month_Days_Accu_C[13] = {0,31,59,90,120,151,181,212,243,273,304,334,365}; u32 Month_Days_Accu_L[13] = {0,31,60,91,121,152,182,213,244,274,305,335,366}; #define SecsPerDay (3600*24)extern T_STRUCT Real_Time;//实时时间值void RTC_Configuration(void){RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);PWR_BackupAccessCmd(ENABLE);BKP_DeInit();RCC_LSEConfig(RCC_LSE_ON);while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){}RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);RCC_RTCCLKCmd(ENABLE);RTC_WaitForSynchro();RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC, ENABLE);RTC_WaitForLastTask();RTC_SetPrescaler(32767);RTC_WaitForLastTask();}void RTC_init(void){if(BKP_ReadBackupRegister(BKP_TIME_FLAG) != 0xA5A5){RTC_Configuration();Real_Time.year = 2013;Real_Time.month = 1;Real_Time.day = 1;Real_Time.hour = 12;Real_Time.minute = 0;Real_Time.second = 0;Real_Time.date = 1;SetRTCTime(&Real_Time);BKP_WriteBackupRegister(BKP_TIME_FLAG, 0xA5A5);}else{if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET){//电源复位}else if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET){//External Reset occurred}RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE);BKP_TamperPinCmd(DISABLE);BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);RTC2Time();}RTC_WaitForSynchro();RCC_ClearFlag(); //清除RCC重启标志}void GetRTCTime(T_STRUCT* time){RTC_ITConfig(RTC_IT_SEC, DISABLE); //关闭秒中断RTC_WaitForLastTask();time->year=Real_Time.year;time->month=Real_Time.month;time->day=Real_Time.day;time->hour=Real_Time.hour;time->minute=Real_Time.minute;time->second=Real_Time.second;time->date=Real_Time.date;RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC, ENABLE); //打开秒中断}const u8 TAB_DATE[12]={6,2,2,5,0,3,5,1,4,6,2,4,};u8 GetDate(T_STRUCT* time){return( (time->year + time->year/4 - ( (time->month<3)&&(time->year%4==0) ) +TAB_DATE[time->month-1] + time->day )%7);}const u8 Month2Day_Tab[12]={31,28,31,30,31,30,31,31,30,31,30,31} ;void RTC2Time(void){u32 count;u8 tmp,change=0;Real_Time.year=BKP_ReadBackupRegister(BKP_TIME_YEAR);//年值Real_Time.month=BKP_ReadBackupRegister(BKP_TIME_MONTH);//月值Real_Time.day=BKP_ReadBackupRegister(BKP_TIME_DAY);//日值Real_Time.date=BKP_ReadBackupRegister(BKP_TIME_DATE);//星期值RTC_ITConfig(RTC_IT_SEC, DISABLE); //为了避免代码重入引起的问题,这里吧RTC秒中断屏蔽了count=RTC_GetCounter();//计算新的年月日while (count>=0x0001517f) //上次关电到本次跨越了一天以上{change=1;count-=0x0001517f;//星期自加if ((++Real_Time.date)>=8)Real_Time.date=1;//如果是2月,计算闰年(不需要考虑2099以后的400年一非润) if (Real_Time.month==2){if (Real_Time.year%4)tmp=28;elsetmp=29;}else{tmp=Month2Day_Tab[Real_Time.month-1];}if ((++Real_Time.day)>tmp){Real_Time.day=1;if ((++Real_Time.month)>12){Real_Time.month=1;if ((++Real_Time.year)>=100){Real_Time.year=0;}}}//如果跨越了一天,则计算后,要存回寄存器内if (change){RTC_SetCounter(count);BKP_WriteBackupRegister(BKP_TIME_DATE,Real_Time.date);BKP_WriteBackupRegister(BKP_TIME_DAY,Real_Time.day);BKP_WriteBackupRegister(BKP_TIME_MONTH,Real_Time.month); BKP_WriteBackupRegister(BKP_TIME_YEAR,Real_Time.year);}}//计算新的时分秒Real_Time.hour=count/3600;Real_Time.minute=(count600)/60;Real_Time.second=(count600)`;//重新打开RTC中断// Check if the Power On Reset flag is setRCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);PWR_BackupAccessCmd(ENABLE);RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC, ENABLE);}void SetRTCTime(T_STRUCT* time){u32 count;RTC_ITConfig(RTC_IT_SEC, DISABLE); //关闭秒中断RTC_WaitForLastTask();//付时间值到Real_Time上Real_Time.year=time->year;Real_Time.month=time->month;Real_Time.day=time->day;Real_Time.hour=time->hour;Real_Time.minute=time->minute;Real_Time.second=time->second;//计算星期time->date=Real_Time.date=GetDate(time);//把新的年月日存到掉电寄存器上BKP_WriteBackupRegister(BKP_TIME_DATE,Real_Time.date);// RTC_WaitForLastTask();BKP_WriteBackupRegister(BKP_TIME_DAY,Real_Time.day);// RTC_WaitForLastTask();BKP_WriteBackupRegister(BKP_TIME_MONTH,Real_Time.month); // RTC_WaitForLastTask();BKP_WriteBackupRegister(BKP_TIME_YEAR,Real_Time.year);// RTC_WaitForLastTask();//计算新的RTC count值count=Real_Time.hour*3600+Real_Time.minute*60+Real_Time.second; RTC_WaitForLastTask();RTC_SetCounter(count);// Check if the Power On Reset flag is set//注意红色代码部分,如果不加这两句,修改时间一直卡死在 RTC_WaitForLastTask()RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);PWR_BackupAccessCmd(ENABLE);RTC_WaitForLastTask();RTC_ITConfig(RTC_IT_SEC, ENABLE); //打开秒中断}void RTCTick(void){u8 tmp;if ((++Real_Time.second)>59){Real_Time.second=0;if ((++Real_Time.minute)>59){Real_Time.minute=0;if ((++Real_Time.hour)>23){Real_Time.hour=0;//星期自加if ((++Real_Time.date)>=8)Real_Time.date=1;//--存储新的星期BKP_WriteBackupRegister(BKP_DR5,Real_Time.date);//如果是2月,计算闰年(不需要考虑2099以后的400年一非润)if (Real_Time.month==2){if (Real_Time.year%4)tmp=28;elsetmp=29;}else{tmp=Month2Day_Tab[Real_Time.month-1];}if ((++Real_Time.day)>tmp){Real_Time.day=1;if ((++Real_Time.month)>12){Real_Time.month=1;if ((++Real_Time.year)>99){Real_Time.year=0;}//--储存新的年BKP_WriteBackupRegister(BKP_DR2,Real_Time.year); }//--储存新的月BKP_WriteBackupRegister(BKP_DR3,Real_Time.month); }//--储存新的日BKP_WriteBackupRegister(BKP_DR4,Real_Time.day);}}}}。
基于STM32的万年历设计班级:姓名:学号:成绩:电子通信工程系题目:基于STM32的万年历设计前言:随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS12C887。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS12C887的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,采用数字式温度传感器DS18B20提取外界温度,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
进入新世纪LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。
伴随社会信息化进程的推进,LCD显示屏技术也在不断的推陈出新,应用领域愈加广阔。
基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。
现基于STM32在液晶显示屏幕上显示文本及图形。
目前,显示技术和显示工业的发展迅速。
显示技术是传递视觉的信息技术。
液晶显示器件LCD 是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。
它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。
截至目前,我国在液晶显示取得较大进步,我国LCD产业已经走过了近30年的历程.经历几次大的投资浪潮之后,我国内地已经成为世界最大的TN-LCD(扭曲液晶显示器)生产基地和主要的STN-LCD(超扭曲液晶显示器)生产基地,并且从2003年开始,涉足TFT-LCD(薄膜晶体管液晶显示器)领域.本课题设计采用STM32F103VE开发板,实现在LCD显示屏上显示由按键可操控的万年历功能。
基于STM32的万年历设计班级:姓名:学号:题目:基于STM32的万年历设计前言:随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS12C887。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS12C887的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、一,目前,体经历几次)领域.在液00:00:00。
1.功能描述1.1设计要求1.具有数字时钟功能。
2.具有简单日历功能。
3.具有手动校准时间功能。
4.具有闰年识别功能。
1.2RTC(实时时钟)简介实时时钟是一个独立的定时器。
RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
修改计数器的值可以重新设置系统当前的时间和日期。
RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。
系统复位后,禁止访问后备寄存器和RTC,防止对后备区域(BKP)的意2.需要主电源给得到时4.个小键盘。
方案一:采用89C51芯片采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:采用AT89S52芯片片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
基于STM32的万年历设计基于STM32的万年历设计班级:姓名:学号:成绩:电子通信工程系题目:基于STM32的万年历设计前言:随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS12C887。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS12C887的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,采用数字式温度传感器DS18B20提取外界温度,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
进入新世纪LCD显示屏的技术和产业都取得了长足的发展,作为重要的现代信息发布媒体之一,LCD显示屏在证券交易、金融、交通、体育、广告等领域被广泛的应用。
伴随社会信息化进程的推进,LCD显示屏技术也在不断的推陈出新,应用领域愈加广阔。
基于STM32的LCD显示可以更好的满足各种需求,也更便于操作和实现。
现基于STM32在液晶显示屏幕上显示文本及图形。
目前,显示技术和显示工业的发展迅速。
显示技术是传递视觉的信息技术。
液晶显示器件LCD是当今最有发展前途的一种平板显示器件,它具有很多独到的优异特性。
它具有显示信息多、易于多彩化、体积小、重量轻、功耗低、寿命长、价格低、无辐射、无污染、接口控制方便等优点。
截至目前,我国在液晶显示取得较大进步,我国LCD产业已经走过了近30年的历程.经历几次大的投资浪潮之后,我国内地已经成为世界最大的TN-LCD(扭曲液晶显示器)生产基地和主要的STN-LCD(超扭曲液晶显示器)生产基地,并且从2003年开始,涉足TFT-LCD(薄膜晶体管液晶显示器)领域.本课题设计采用STM32F103VE开发板,实现在LCD显示屏上显示由按键可操控的万年历功能。
本实验用到的硬件部分主要有STM32开发板、USB线、LCD液晶模块,在LCD显示屏上显示相关内容。
综上所述万年历应具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
本课题利用 STM32 的 RTC 实现一个简易的电子时钟,在液晶显示屏中显示时间值。
显示时间格式为XX:XX:XX(时:分:秒),当时间计数为: 23: 59: 59 时将刷新为: 00: 00: 00。
1.功能描述1.1设计要求1.具有数字时钟功能。
2.具有简单日历功能。
3.具有手动校准时间功能。
4.具有闰年识别功能。
1.2 RTC(实时时钟)简介实时时钟是一个独立的定时器。
RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。
系统复位后,禁止访问后备寄存器和 RTC,防止对后备区域(BKP)的意外写操作。
执行以下操作使能对后备寄存器和 RTC 的访问:1.设置寄存器 RCC_APB1ENR 的 PWREN 和 BKPEN 位来使能电源和后备接口时钟。
2.设置寄存器 PWR_CR 的 DBP 位使能对后备寄存器和 RTC 的访问。
当我们需要在掉电之后,又需要 RTC 时钟正常运行的话,单片机的 VBAT脚需外接3.3V 的锂电池。
当我们重新上电的时候,主电源给 VBAT 供电,当系统掉电之后 VBAT 给 RTC 时钟工作, RTC 中的数据都会保持在后备寄存器当中。
野火STM32 开发板的 VBAT 引脚接了 3.3V 的锂电。
3.STM32自带了RTC时钟计数器,从0开始计数到232。
每一个计数代表秒计数,每六十个计数代表分计数,以此类推。
24(小时)*60(分钟)*60(秒钟)=86400代表一天的计数时间。
假设当前计数为count,count/86400得到计数的天数,根据这个得到年月日。
Count%86400得到时分秒。
4.根据1中得到的年月日时分秒,进行计算的程序有:闰年判断,星期几计算,当前月有多少天等等。
另外,秒表为RTC一秒钟定时计数1.3设计方案的选择1.3.1可选择的芯片方案整个系统用STM32F103VE单片机作为中央控制器,由单片机执行采集内部RTC值,时钟信号通过单片机I/O口传给LCD12864,单片机模块控制驱动模块驱动显示模块,通过显示模块来实现信号的输出、LCD12864的显示及相关的控制功能。
系统设有按键模块用于对时间进行调整及扩展多个小键盘。
方案一:采用89C51芯片采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:采用AT89S52芯片片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
不使用时钟芯片,而直接用AT89S52单片机来实现电子万年历设计。
AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦写1000余次。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
若采用单片机计时,利用它的一个16位定时器/计数器每50ms产生一个中断信号,中断20次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。
这样就实现了直接用单片机来实现电子万年历设计。
方案三:采用STM32单片机STM32是一个低功耗,高性能32位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。
主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。
从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案采用STM32F103VE。
1.3.2 显示模块选择方案和论证:方案一:采用ILI9341LED液晶显示屏采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,显示质量高,没有电磁辐射,可视面积大,应用范围广,画面效果好,数字式接口,匀称小巧,功耗小。
方案二:采用点阵式数码管显示动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。
利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。
显示器的亮度与导通电流、点亮时间及间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示.方案三:采用LED数码管动态扫描LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采用方案一,既ILI9341LED显示。
1.3.3时钟芯片的选择方案和论证:方案一:直接采用单片机定时计数器直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:采用DS1302时钟芯片实现时钟采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.方案三:采用STM32的RTC定时器由于STM32自带了实现计时功能的RTC时钟计数器,可以直接使用。
1.3.4电路设计最终方案综上各方案所述,对本课题方案选定: 采用STM32F103VE作为主控制芯片; STM32自带的RTC提供时钟;LCD液晶显示作为显示。
1.4电源电路本设计所需电源电压为直流、电压值大小5V的电压源。
从硬件实物设计简易程度与经费方面考虑,用两节电压值大小2.5V干电池与电路电压源引脚相连接即可达到硬件设计要求。
即本设计可采用两节电压值大小2.5V干电池做硬件电路电压源。
为了方便改写程序,本次实验采用USB线连接电脑进行操作。
1.5按键电路本设计所需按键用于进行显示时间的调整与设置扩展的小键盘。
单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求。
2.硬件设计2.1设计组成框图电脑USB线图 设计的组成框图 2.2 STM32F103VE 实验板STM32F103系列属于中低端的32位ARM 微控制器,该系列芯片是意法半导体(ST )公司出品,其内核是Cortex-M3。
该系列芯片按片内Flash 的大小可分为三大类:小容量(16K 和32K )、中容量(64K 和128K )、大容量(256K 、384K 和512K )。
芯片集成定时器,CAN ,ADC ,SPI ,I2C ,USB ,UART ,等多种功能。
分为三大类: LD(小于64K), MD (小于256K ), HD (大于256K ), STM32F103VET6类属第三类。
STM32F103ZET6芯片介绍:●基于ARM Cortex-M3核心的32 位微控制器,LQFP-144封装.●512K 片内FLASH (相当于硬盘),64K 片内RAM (相当于内存) ,片内FLASH 支持在线编程(IAP).●高达72M 的频率,数据,指令分别走不同的流水线,以确保 CPU 运行速度达到最大化 .●通过片内BOOT 区,可实现串口下载程序(ISP).●片内双RC 晶振,提供8M 和32K 的频率.●支持片外高速晶振(8M),和片外低速晶振(32K).其中片外低速晶振可用于 CPU 的实时时钟,带后备电源引脚,用于掉电后的时钟行走.●42个16位的后备寄存器(可以理解为电池保存的RAM),利用外置的纽扣电池,和实现掉电数据保存功能.●支持 JTAG,SWD 调试.配合廉价的J-LINK,实现高速低成本的开发调试方STM32开发板LCD 液晶模块按键 区案。