基于单片机的多功能数字时钟的设计资料.docx
- 文档编号:23720320
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:85
- 大小:225.46KB
基于单片机的多功能数字时钟的设计资料.docx
《基于单片机的多功能数字时钟的设计资料.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能数字时钟的设计资料.docx(85页珍藏版)》请在冰豆网上搜索。
基于单片机的多功能数字时钟的设计资料
本科毕业设计
基于单片机的多功能数字时钟
负西弱
201030580405
指导教师
XXX讲师
学院名称
工程学院
专业名称
电子信息工程
论文提交日期
2014年4月30日
论文答辩日期
2014年5月10日
摘要
随着数字集成电路的发展和石英晶体与振荡器的广泛应用,数字时钟的精度远远超过了老式钟表,而且能够方便地扩展钟表原先的报时功能,满足人们日常应用的各种需求,数字时钟不管在性能还是功能上都远远超过了传统的钟表。
本设计中的多功能数字时钟采用基于ARMCortex-M3核心的32位微控制器STM32F103RCT6作为控制系统的核心,采用内置晶振、具有标准I2C接口的实时时钟芯片SD2403API计算当前的秒、分、时、日、月、年,可保证时钟精度为+5ppm(在25℃±1℃下),通过编程配合芯片内置的数字化时间精度调整电路还可以进一步提高时钟精度,通过2.2寸TFT液晶屏的友好人机界面将结果直观地呈现给用户。
为具有更高的实用价值,利用数字温湿度传感器DHT11获取温湿度,增加了温湿度显示功能;移植Fatfs文件系统读取SD卡的文件,增加了数码相框功能;通过阳历转阴历算法,实现了阴历显示;此外,还增加了红外遥控、闹钟、电子挂历、节日提醒、备忘录等功能。
关键词:
Cortex-M3STM32F103RCT6数字时钟
TheMultifunctionalDigitalClockBasedOnSingleChipMicrocomputer
FuDongqiang
(CollegeofEngineering,SouthChinaAgriculturalUniversity,Guangzhou510642,China)
Abstract:
Withthedevelopmentandwideapplicationofdigitalintegratedcircuitsandquartzcrystaloscillators,precisiondigitalclockisfarmorethantheold-fashionedclocks,watchesandclocks,andcaneasilyextendtheoriginaltimekeepingfeaturestomeetthediverseneedsofeverydayapplications,digitalclockregardlessofperformanceorfeaturesarefarmorethanthetraditionalwatches.
Thedesignofthemulti-functiondigitalclockbasedonARMCortex-M3core,32-bitmicrocontrollersSTM32F103RCT6asthecoreofthecontrolsystem,withbuilt-incrystaloscillator,withastandardI2Cinterface,real-timeclockchipSD2403APIcalculatethecurrentseconds,minutes,hours,day,month,year,canguaranteethattheclockaccuracyof+5ppm(at25℃±1℃),adjustmentcircuitprogrammedwithchipbuilt-indigitaltimeaccuracycanbefurtherimprovedclockaccuracy,by2.2-inchTFTLCDscreenandfriendlypeoplemachineinterfacewillresultvisuallypresentedtotheuser.Tohaveahigherpracticalvalue,theuseofdigitaltemperatureandhumiditysensorDHT11gettemperature,humidity,increasedtemperatureandhumiditydisplayfunction;transplantFatfsSDcardfilesystemreadsfiles,increasingthedigitalphotoframefunction;throughGregorianlunartransferalgorithmtoachievealunardisplay;addition,ithasaddedaninfraredremotecontrol,alarmclock,electroniccalendar,festivalreminders,memosandotherfunctions.
Keywords:
Cortex-M3STM32F103RCT6digitalclock
华南农业大学本科生毕业设计成绩评定表
1前言
1.1设计意义
自1975年美国德州仪器公司第一块微型计算机芯片TMS-1000问世以来,在短短的20年间,单片机技术已发展成为计算机领域一个非常有前途的分之,它有自己的技术特征、规范和应用领域。
单片机是自动控制系统的核心部件,主要用于工业控制、智能化仪器仪表、家用电器等机器中。
它具有体积小、性能突出可靠性高、价格低廉等优点,并且其应用领域不断扩大,除了工业控制、智能化仪表、通信、家用电器外,在智能化的高档电子玩具产品中也大量采用单片机芯片作为核心控制部件,已经渗入到人们工作和生活的每个角落,有力地推动了各行业的技术改造和产品的更新换代,前景广阔。
这多功能数字钟具备单片机最小系统的基本组成,对于我们了解单片机有很大的帮助。
当今社会是一个追求快速、高效的社会,时间就是金钱因此准确的掌握时间和分配时间对人们来说至关重要。
在飞速发展的单片机技术的推动下,现代的电子产品几乎渗透到了社会的各个领域,人们对时间计量的精度要求越来越高,应用越来越广。
时钟不仅要更好、更方便、更精确的显示时间,还要有其它的一些实用的附加功能,这就要求人们不断设计研发出新型的时钟。
所以一个能够精确计时以及有其他多种用途的时钟是对人们的生活工作是非常具有现实意义的。
由于数字集成电路的发展和石英晶体与振荡器的广泛应用,使得数字时钟的精度远远超过老式钟表,而且能够方便地扩展钟表原先的报时功能,数字时钟不管在性能还是功能上都远远超过了传统的钟表,给人们的生活带来了极大的便利。
因此,对多功能数字钟进行研究有着非常现实的意义。
而且本设计还实现了电子挂历功能,在日常生活当中,一般挂历都用纸做成的,对于现今世界的环保问题有不少坏处,虽然也有一些是用可再循环的材料,但是一般的挂历基本上都是用完就扔掉,但是电子挂历则可以一直用,既能支持环保又能跟上时代。
1.2设计内容
多功能数字时钟的基本功能就是时钟显示时分秒,年月日,闹钟。
另外还根据人们日常生活需求扩展了以下几种功能:
阴历、万年历、温湿度显示、红外遥控、数码相框、节日提醒。
本设计以单片机STM32F103RCT6作为数字时钟的核心控制器;采用实时时钟芯片SD2403API计算当前的秒、分、时、日、月、年;通过数字温湿度传感器DHT11获取环境温湿度;使用SPI接口配合文件系统Fatfs读取SD卡文件实现数码相框和备忘录功能;并且通过软件编写,实现电子挂历、节日提醒等功能。
2总体方案确定
2.1主控芯片方案
方案一:
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
方案二:
选用意法半导体公司推出的基于ARMCORTEX-M3内核的STM32F103RCT6微控制器。
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。
按性能分成两个不同的系列:
STM32F103“增强型”系列和STM32F101“基本型”系列。
增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。
时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
STM32F103RCT6属于“增强型”,其包含256KB闪存和48KBRAM,时钟频率可达72MHz,指令速度可接近80MIPS,且集成了丰富的片内外设。
在芯片功耗方面,已接近MSP430超低功耗单片机水平,而且芯片价格便宜。
方案三:
采用S3C2410A作为嵌入式处理芯片实现TFT液晶显示。
S3C2410A的CPU内核采用的是ARM公司设计的16/32为ARM920TRISC处理器,该处理器提供了一组完整的系统外围设备,从而大大减少了整个系统的成本,省去了为系统配置额外器件的开销。
方案比较:
STC89C52的片上ROM和RAM较少,而本设计的软件程序较大,需要外扩ROM和RAM;而且STC89C52的运行速度较慢,用户体验效果不好。
基于S3C2410A的系统硬件构建比较复杂,成本也较高。
相比之下,STM32F103RCT6的系统构建比较简单,成本较低,再结合本设计对于硬件资源、功耗等方面的需求,选用方案二更合适。
2.2显示方案
方案一:
采用LED数码管动态扫描。
LED数码管价格便宜,对于显示数字最合适,但功耗较大,占用体积大,且显示容量不够。
方案二:
采用TFT液晶屏幕,响应速度快,一般是在40MS以下,色彩丰富有过渡感,工作稳定,除了可以显示数字和汉字外,还能显示真彩图像。
方案比较:
本设计中的显示内容较多,包括了数字、汉字、图片,显然TFT液晶屏幕更符合本设计的需求,因此选择方案二。
2.3实时时钟方案
方案一:
利用STM32的RTC模块实现,RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。
修改计数器的值可以重新设置系统当前的时间和日期。
RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。
当我们需要在掉电之后,又需要RTC时钟正常运行的话,单片机的VBAT脚需外接3.3V的锂电池。
当我们重新上电的时候,主电源给VBAT供电,当系统掉电之后VBAT给RTC时钟工作,RTC中的数据都会保持在后备寄存器当中。
方案二:
采用常用的DS1302芯片。
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
方案三:
采用内置晶振、具有标准I2C接口的高精度国产实时时钟芯片SD2403API。
SD2403API是一种内置晶振、具有标准IIC接口的实时时钟芯片,CPU可使用该接口通过5位地址寻址来读写片内32字节寄存器的数据(包括时间寄存器、报警寄存器、控制寄存器、通用SRAM寄存器);内置晶振,该芯片可保证时钟精度为±5ppm(在25℃±1℃下),即年误差小于2.5分钟;具有一个后备电池输入脚VBAT,当芯片检测到主电源VDD掉到后备电池电压以下,芯片会自动转为由接在VBAT的后备电池供电。
方案比较:
STM32的RTC模块工作时不稳定,受外部晶振的影响较大。
DS1302的时钟精度易受外加晶振和电容的影响,而高精度的晶振和电容价格较贵。
而SD2403API不需要外加晶振和电容,而且内置时钟精度数字调整功能,不需要太多设置就能保证很高的精度,因此选择方案三。
2.4温湿度传感器方案
方案一:
采用常用的温度传感器DS18B20加湿度传感器HS1101/HS1100。
DS18B20,常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
HS1101是法国Humirel公司推出的一款电容式相对湿度传感器。
该传感器可广泛应用于办公室、家庭、汽车驾驶室、和工业过程控制系统等,对空气湿度进行检测。
方案二:
采用由瑞士Sensirion推出的SHT10数字温度传感器。
SHT10体积微小、响应迅速、低能耗、可浸没、抗干扰能力强、温湿一体,兼有露点测量,性价比高,使该产品能够适用于多种场合的应用。
方案三:
采用常用的温湿度传感器DHT11。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
方案比较:
采用温湿一体的传感器可以简化电路,节约成本。
DHT11的价格便宜,电路简单,测量精度:
湿度±5%RH,温度±2℃,既能满足本设计的需求,性价比又高,因此选择方案三。
2.5图片存储方案
方案一:
通过取模软件将图片的点阵信息和颜色信息提取出来并以数组形式保存,把这些数组直接放在主控芯片的片上ROM上,这样就可以不用添加外部存储器。
方案二:
将图片直接保存在SD卡上,由主控芯片从SD卡中读取图片数据并完成解码,然后送往TFT液晶屏进行显示。
方案比较:
虽然方案一更容易实现,但是只能显示特定的几张图片,而且需要更换图片时就必须要进行重新进行取模、修改代码、烧录程序等操作,缺乏灵活性。
而方案二更换图片时只需要更换SD卡内的图片,不涉及程序改动,更具灵活性,因此选择方案二。
3硬件电路设计
3.1系统总体框图
图1系统总体框图
3.2STM32F103RCT6最小系统设计
STM32F103RCT6最小系统包括晶振电路、复位电路、启动模式选择电路、SWJ接口电路、供电电路,如图2所示:
图2STM32F103RCT6最小系统电路图
3.3SD2403电路图设计
SD2403API内置晶振,不需要外加晶振和电容作为振荡电路,只需要为IIC引脚加上上拉电阻,并添加主电源VDD和后背电源VBAT电路。
在电源设计方面,需要注意,当VDD=3.3V时,VBAT接3V电池会有一些问题:
通常标称3V的电池在刚开始使用时电压会达到3.3V或更多,这是芯片会进入VBAT模式而读不出数据。
要解决此问题,应将VBAT脚接地,电池和主电源均通过二极管向芯片的VDD供电,如图3所示:
图3SD2403API电路图
3.4DHT11电路图设计
主控芯片STM32F103RCT6通过单总线方式和DHT11进行通信,从而获取到温湿度信息,如图4所示:
图4DHT11电路图
3.5TFT显示电路设计
本设计采用一块2.2寸的TFT液晶屏,该液晶屏采用ILI9340作为主控芯片,采用SPI通信协议,最少只需要4个IO口驱动,只需要把液晶屏的SPI引脚与主控芯片STM32F103RCT6对应的硬件SPI引脚相连即可,如图5所示:
图5TFT显示电路图
3.6SD存储卡电路设计
SD卡有两种读取模式:
SD方式和SPI方式。
本设计中采用的是SPI方式,这样只需要把SD卡的SPI引脚与主控芯片STM32F103RCT6对应的硬件SPI引脚相连即可,如图6所示:
图6SD存储卡电路图
3.7红外接收电路设计
本设计采用红外一体化接收头VS1838接收来自遥控器的调制信号,VS1838将调制信号转化为脉冲信号后传输给主控芯片,再由主控芯片进行软件解码,电路图如图7所示:
图7红外接收电路
4程序设计
本设计的程序设计主要包括以下几个部分:
1、系统初始化流程;2、时间调整程序设计;3、日期调整程序设计;4、闹钟处理程序设计;5、节日提醒程序设计。
下面会对这几个部分的程序设计进行解析并附有相应的流程图。
4.1系统初始化流程
系统初始化主要完成一下几个工作:
1、主控芯片STM32F103RCT6引脚配置、中断和片上外设的初始化;2、TFT液晶屏幕的初始化;3、SD卡的初始化;4、Fatfs文件系统的初始化;5、主界面初始化。
流程图如下所示:
图8系统初始化流程图
4.1.1SD卡初始化介绍
SD卡的初始化对于后续的Fatfs文件系统初始化和图片的显示是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。
在初始化过程中,SPI的时钟不能太快(400KHz以下),否则会初始化失败。
初始化成功后再提升SPI的时钟速率,以提高读取文件的速度。
初始化步骤如下:
(1)延时至少74个时钟,等待SD卡内部操作完成,在MMC协议中有明确说明。
(2)CS低电平选中SD卡。
(3)发送CMD0,需要返回0x01,进入Idle状态。
(4)为了区别SD卡是2.0还是1.0,或是MMC卡,这里根据协议向上兼容的原理,首先发送只有SD2.0才有的命令CMD8,如果CMD8返回无错误,则初步判断为2.0卡,进一步发送命令循环发送CMD55+ACMD41,直到返回0x00,确定SD2.0卡初始化成功,进入Ready状态,再发送CMD58命令来判断是HCSD还是SCSD,到此SD2.0卡初始化成功。
如果CMD8返回错误则进一步判断为1.0卡还是MMC卡,循环发送CMD55+ACMD41,返回无错误,则为SD1.0卡,到此SD1.0卡初始成功,如果在一定的循环次数下,返回为错误,则进一步发送CMD1进行初始化,如果返回无错误,则确定为MMC卡,如果在一定的次数下,返回为错误,则不能识别该卡,初始结束。
(5)CS拉高。
(6)SPI设置到高速模式。
4.1.2Fatfs文件系统介绍
Fatfs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。
Fatfs的编写遵循ANSIC,因此不依赖于硬件平台。
它可以嵌入到便宜的微控制器中,如8051,PIC,AVR,SH,Z80,H8,ARM等等,不需要做任何修改。
FatFs提供下面的函数:
f_mount-注册/注销一个工作区域(WorkArea)
f_open-打开/创建一个文件f_close-关闭一个文件
f_read-读文件f_write-写文件
f_lseek-移动文件读/写指针
f_truncate-截断文件
f_sync-冲洗缓冲数据FlushCachedData
f_opendir-打开一个目录
f_readdir-读取目录条目
f_getfree-获取空闲簇GetFreeClusters
f_stat-获取文件状态
f_mkdir-创建一个目录
f_unlink-删除一个文件或目录
f_chmod-改变属性(Attribute)
f_utime-改变时间戳(Timestamp)
f_rename-重命名/移动一个文件或文件夹
f_mkfs-在驱动器上创建一个文件系统
f_forward-直接转移文件数据到一个数据流Forwardfiledatatothestreamdirectly
f_gets-读一个字符串
f_putc-写一个字符
f_puts-写一个字符传
f_printf-写一个格式化的字符磁盘I/O接口
Fatfs的移植:
(1)定义数据类型,修改integer.h,使其中定义的数据类型与相应的MCU相匹配。
(2)配置ff.h,用户可以对应于不同的文件系统的配置,在相应的地方进行修改,ff.h文件中有详细注释,用户可以根据具体情况进行修改。
(3)最关键的一步,底层函数的修改。
本系统有6个底层函数需要用户根据具体情况进行修改:
DSTATUSdisk_initialize磁盘初始化,如果SD卡设置正常,直接返回0或者其他状态。
DSTATUSdisk_status磁盘状态监测,可以返回0或者其他状态。
DRESULTdisk_read磁盘读函数,调用SPI读单个或多个区块的函数。
DRESULTdisk_write磁盘写函数,调用SPI写单个或多个区块的函数。
DRESULTdisk_ioctl仅在磁盘格式化时需要,如不需要可返回0。
DWORDget_fattimeRCT时间获得,具体格式可以参考具体的文献说明。
此外还需要配置4个底层函数,函数分别是主控芯片使用SPI读/写一个sector和读/写多个sector的函数。
4.2时间调整程序设计
时间调整的主要调整程序流程为:
首先按下设置键进行状态转换,进入时间设置状态(此时屏幕在时间下会出现下划线),然后通过左右键,就可以进行移位调整,依次能够利用上下键调整秒、分、时。
当调整完所有时间后,就可以通过设置键退出时间设置状态,或者系统检测无输入按键状态超时后自动退出时间设置状态,接着就把新设置的时间更新到SD2403中。
流程图如下所示:
图9时间调整流程图
4.3日期调整程序设计
日期调整的主要调整程序流程为:
首先按下设置键进行状态转换,进入日期设置状态(此时屏幕在日期下会出现下划线),然后通过左右键,就可以进行移位调整,依次能够利用上下键调整日、月、年。
当调整完所有日期后,就可以通过设置键退出日期设置状态,或者系统检测无输入按键状态超时后自动退出日期设置状态,接着就把新设置的日期更新到SD2403中。
流程图如下所示:
图10日期调整流程图
4.4闹钟处理程序设计
闹钟处理的主要程序流程为:
首先按下设置键进行状态转换,进入闹钟设置状态,可以设置闹钟的开关状态和闹钟时间。
系统每过一分钟,就取当前时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 多功能 数字 时钟 设计 资料