基于STM32开发板的多功能四面钟设计毕业设计
基于单片机的多功能电子时钟毕业设计答辩ppt

基于单片机的 多功能电子时钟设计
班级:电科09-3班 学号:310908040315 姓名:李浩
LOGO 指导教师:王帅
系统的背景及意义
设计研究背景 设计研究意义
设计任务
设计主要内容
1、选择适当的芯片和元器件,确定 系统电路; 2、利用Protel完成系统原理图的设 计; 3、熟悉单片机的C语言的编程规则, 编写相应模块程序; 4、进行功能的调试,完成实物的制作。
实现功能:
1、具有显示日期、时间、星期功功能; 2、具有日期、时间校准功能; 3、具有闹钟和整点提醒功能; 4、具有温度显示功能;
硬件电路主要模块
单片机主控制 温度传感器电路 液晶显示模块 时钟电路模块 蜂鸣器提醒模块 键盘模块
系统总体设计框图
图3-1 多功能电子时钟系统设计硬件框图
设计总结
通过设计提高了对单片机的认识,掌握了单片机 外围扩展电路设计。在实际程序设计和调试中, 逐步掌握模块化程序设计方法和调试技术,提高 了软件设计、调试 由于时间和个人能力的原因,整个系统看起来还 是显得非常的简单,扩展功能不够完善,操作界 面体验不佳,操作按键过多等,整体设计仍需要 不断的完善。还望各位老师予以指正和修改。
基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全) 电子时钟设计随着现代人类生活节奏的加快,人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。
对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。
数码管显示的时间简单明了而且读数快、时间准确性更高~数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
数字钟的精度、稳定度远远超过老式机械钟。
在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,并且由单片机的定时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
关键词:数字钟;单片机;数码管;时间;准确性1目录第一章绪论1. 数字电子钟的意义和应用…………………………………………………………………… 3 第二章整体设计方案2.1 单片机的选择…………………………………………………………………………… 3 2.2 单片机的基本结构……………………………………………………………………… 5 第三章数字钟的硬件设计3.1 最小系统设计…………………………………………………………………………… 9 3.2 LED显示电路…………………………………………………………………………… 12 3.3 键盘控制电路…………………………………………………………………………… 14 第四章数字钟的软件设计4.1 系统软件设计流程图…………………………………………………………………… 15 4.2 数字电子钟的原理图…………………………………………………………………… 18 4.3 主程序…………………………………………………………………………………… 19 4.4 时钟设置子程序………………………………………………………………………… 20 4.5 定时器中断子程序……………………………………………………………………… 20 4.6 LED显示子程序………………………………………………………………………… 21 4.7 按键控制子程序………………………………………………………………………… 23 第五章系统仿真5.1 PROTUES软件介绍................................................................................. 24 5.2 电子钟系统PROTUES仿真........................................................................ 24 结束语. (2)5 参考文献 (26)2第一章绪论1.数字电子钟的意义和应用数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
基于单片机的多功能数字电子钟设计学士学位毕业设计论文

学士学位毕业设计(论文)基于单片机的多功能数字电子钟设计学生姓名:XX学号:XXXXXX指导教师:XXXX所在学院:XXXXXXXX专业:XXXXXXXXXXXXX中国·大庆2014 年 5 月黑龙江八一农垦大学本科毕业设计(论文)任务书注:1.任务书由指导教师填写后交给学生,要求学生妥善保存。
2.此任务书夹于论文扉页与论文一并装订,作为论文评分依据之。
摘要电子钟是当今社会中最主要的计时工具,它广泛的被应用在电脑,手机,和其他社会生活的各个方面,和所有要求时间的场所。
20世纪90年代,电子技术的飞速成长推动了现代电子商品的发展,电子产品已经深入社会的各个领域,为社会生产力的发展和社会信息化程度的发展提供了强大的动力,电子技术的发展如今越来越快,电子产品的更新换代的节奏更快。
在当今社会,人们越来越重视时间,生活节奏越来越快,时间就是金钱。
时间如果不准确,会对那些需要精确时间的人带来极大的麻烦。
本设计的核心元件是STC89C52,LCD12864液晶模块、DHT11温湿度感应模块、DS1302时间模块及按键模块组成。
本设计实现了万年历的基本功能,显示年、月、日、时、分、秒、星期,温湿度而且可以整点报时,闹表功能,无源时钟芯片再接一个3V电源,掉电后能正常工作,重新上电后不用调整时间。
整个设计具有操作简单,性价比高,环保无噪音,低功耗等优点。
关键词:电子时钟单片机DS1302 DHT11ABSTRACTDigital electronic clock is one of the main timing tool in the modern world, widely used cell phones, computers, cars and so on all aspects of social life, and the time required for the occasion.20th century, electronic technology gained rapid development, driven in its modern electronics into almost all areas of society, a strong impetus to the development of the social productive forces and social improvement in the level of information, but also to modern electronic products further improve the performance, product upgrading faster and faster pace.Modern life more and more attention from the concept of time, time and money can be said to equate. For those who are very strict on time and accurate grasp of people and things, time is not accurate will bring great trouble.This design uses AT89S52 micro-controller as the core component, attach ed above power-on reset circuit, crystal oscillator circuit, LCD12864B liquid crystal display modules, DHT11 temperature and humidity sensor module, DS1302 time module and key tone circuit.The design and implementation of the basic functions of the calendar, year, month, day, hour, minute, second, day, temperature and humidity but also the whole point timekeeping, alarm clock function, followed by a clock chip passive 3V power supply can power down after working properly, do not adjust the time after power outages. The whole design is simple, cost-effective, environmentally friendly no noise, low power consumption.Keywords: Electronic Clock MCU DS1302 DHT11目录摘要 (I)ABSTRACT (II)前言 (V)1 绪论 (1)1.1电子时钟的研究背景 (1)1.2电子时钟的国内外研究现状 (1)2 元件介绍 (3)2.1单片机STC89C52 (3)2.2实时时钟芯片DS1302 (5)2.3温湿度传感器DHT11 (7)2.4液晶显示屏LCD12864 (8)2.5本章小结 (8)3 总体方案 (9)3.1系统的设计思路 (9)3.2系统硬件描述 (9)3.3系统软件描述 (10)3.4设计流程 (10)3.5本章小结 (10)4 系统硬件架构 (11)4.1单片机最小系统 (11)4.2时钟模块 (13)4.3温湿度传感器模块 (13)4.4液晶显示模块 (13)4.5按键模块 (14)4.6蜂鸣器报警模块 (14)4.7本章小结 (15)5 软件设计 (16)5.1 软件设计总体说明 (16)5.2系统程序流程图设计 (16)5.3系统程序设计(见附录) (20)5.4本章小结 (20)结论 (21)参考文献 (22)致谢 (23)附录一 (24)附录二 (25)前言近年来,电子产品的成长越来越快,社会竞争也更剧烈,人们对电子时钟的要求更高了。
本科毕业设计--基于单片机的多功能时钟设计

编号淮安信息职业技术学院毕业论文学生姓名学号系部电气工程系专业机电一体化班级指导教师顾问教师二〇一三年十月摘要摘要随着生活节奏的加快,人们时间观念的加强,时钟已经成为人们日常生活中不可或缺的一部分,而如何在时钟的基础上,根据人们生活的需要增加相应的功能以及方便于人们的生活,成为时钟设计方面的重点。
单片机以其强大的功能,低廉的价格成为许多多功能电子产品的首选。
本文探讨了一种带数字温度计的语音时钟的实现方案。
介绍了以AT89C52单片机为核心,控制实时时钟芯片DS1302,数字温度芯片DS18B20,语音芯片ISD4003-4和液晶显示模块OCM12864-1,实现时间和闹钟的显示与调整,温度显示和语音报时。
关键词:实时时钟;语音报时;液晶显示;数字温度芯片IAbstractAbstractWith the quickening pace of life, it enhanced sense of time, the clock has become an indispensable part of daily life. How the clock basis, according to people's live need to increase accordingly, function to facilitate people's lives, become the focus of the clock design. Microcontroller with its powerful features, low price to become the first choice for many multi-functional electronic products. The paper discusses a kind of realization of speech chronopher with digital thermometer. It introduces realizing displaying and adjusting time and alarm-time, displaying temperature and giving time by speech with AT89C52 MCU as the core, controlling RTC Chip DS1302, DTS Chip DS18B20, ChipCorder ISD4003-4, and LCD module.Keywords: RTC; speech chronopher; LCD; DTSII目录目录摘要 (I)ABSTRACT (II)第一章绪论 (1)1.1发展现状、目的及意义 (1)1.2设计内容 (2)第二章系统硬件设计 (3)2.1整体框架概述 (3)2.2主控器AT89C52 (3)2.2.1 概述 (3)2.2.2 主要性能 (4)2.2.3 功能性描述 (4)2.3实时时钟芯片DS1302 (6)2.4温度传感器DS18B20 (7)2.5 液晶显示模块12864 (9)2.5.1 概述 (9)2.5.2 最大工作范围 (9)2.6语音芯片及功放 (10)2.6.1 概述 (10)2.6.2 芯片内部框图以及电路图 (10)2.6.3 芯片管脚 (11)2.6.4 ISD4003-4指令表 (12)2.7独立式键盘设计 (13)第三章系统软件设计 (15)3.1主程序设计 (15)3.2DS1302 (15)3.3温度芯片DS18B20 (16)3.4OCM12864液晶显示 (17)3.5语音芯片ISD4003 (18)3.6源程序 (19)第四章系统调试 (24)4.1P ROTEUS软件介绍 (24)4.2本设计调试 (25)4.2.1 硬件调试 (25)4.2.2 软件调试 (25)第五章结论与展望 (26)5.1结论 (26)5.2展望 (26)III目录致谢 (26)参考文献 (28)第一章绪论第一章绪论1.1 发展现状、目的及意义单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
基于STM32的电子时钟设计

第39卷第11期2020年11月绵阳师范学院学报Journal of Mianyang Teachers'CollegeVol.39No.11Nov.2020D01:10.16276/51-1670/g.2020.11.005基于STM32的电子时钟设计郭辛(绵阳师范学院机电工程学院,四川绵阳621000)摘要:随着嵌入式技术的应用与推广.ARM32位处理器已逐步占据电子消费品和工业测控制造领域主导地位.本文以Cortex-M系列产品的典型代表STM32F103RC为平台,采用固件库技术思想为导向,按照CMSIS标准构建工程,将定时器、LCD驱动以及中断系统等各功能模块进行整合,设计一款电子时钟.通过综合设计的应用开发,摸索和总结出一套针对STM32的学习和设计方法,为高端处理器的应用开发提供新思路.关键词:STM32;嵌入式系统;固件库;定时器;LCD显示中图分类号:TN91文献标志码:A文章编号:1672-612X(2020)11-0028-040引言单片机自诞生之日起已走过近半个世纪的历程.随着电子技术和计算机技术的飞速发展,进入21世纪以来以嵌入式系统为代表的新兴技术正在逐渐占据工业控制领域主导地位,并逐步取代以8位处理器为核心的传统测控系统⑴.近年来由于数字信息技术和网络技术的广泛应用,单片机作为主流核心处理器的地位逐步下降,现代电子技术的发展正朝着智能化、网络化和低功耗的方向迈进•新技术的不断更新,需要新的设计思想的注入才能满足技术发展需求•那么,如何将新兴技术融合到传统知识架构体系,将基础理论与工程应用实际相结合,就成为设计人员急需破解的难题•ARM作为一种32位的高性能、低成本的嵌入式RISC微处理器,得到了广泛的应用,STM32系列是意法半导体(STMicroelectronics)集团专为要求高性能、低成本和低功耗的嵌入式应用设计的ARM Cortex-M系列产品的代表作•基于STM32的嵌入式技术已经渗透在工业控制系统、数据采集系统、智能化仪器仪表和办公自动化等诸多领域的应用,甚至在很大程度上正在改变我们现有的商业模式和工作生活方式,如智能手机、导航系统、无人机和平板电脑等,并呈现出明显的系统化、人工智能化和物联网的趋势.目前,Cortex系列处理器已经占据了大部分嵌入式处理器的中高端产品市场,而嵌入式系统的应用开发对从业者要求很高,初学者若要快速掌握其原理并在实际工程中加以应用,必须改变传统的思维方式并构建新的设计理念■本文以STM32F103RC处理器(Cortex-M普通型号之一)为平台,通过对定时器、中断系统和LCD显示模块的组合设计为例,针对基于固件库设计思想的方法进行探讨与总结,以开启嵌入式系统的应用设计学习之门⑵.1固件库概述固件库是指“STM32标准函数库”,它是由ST公司针对STM32提供的函数接口,即API(Application Program Interface),是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征.它是架设在构成部件的寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口⑶.部件的调用和基本操作写成了通用的子函数,对复杂的硬件操作实现了函数封装■在以51单片机为代表的8位机由于硬件系统相对简单,通常采用宜接配置寄存器的方式来进行应用开发;而32位处理器核内系统复杂,外设资源丰富•应用系统若仍旧采用传统的设计方式,不但效率低、可移收稿日期:2020-04-30作者简介:郭辛(1971-),男,四川成都人,讲师,硕士,研究方向:汽车电子控制技术.绵阳师范学院学报(自然科学版)植性差,而且技术难度大,已不能适应较复杂的工程应用•基于固件库的技术思想为解决这一问题提供了新思路:开发者根据具体任务需求按照CMSIS标准构建工程,利用固件库提供的资源,设计和改造相关函数以实现对部件的操作•本文结合综合实验项目的开发——电子时钟的设计为例,首先介绍库函数中主要涉及的定时器和LCD显示驱动的基本结构和工作原理,在此基础上利用现有库资源进行功能设计与系统构建•2定时器概述STM32F1系列中,共有8个定时器TIM1-TIM8,分为基本定时器,通用定时器和高级定时器.基本定时器TIM6和TIM7是一个16位的只能向上计数的定时器,它只能定时,没有外部I/O;通用定时器TIM2/ 3/4/5是一个16位的可以向上/下计数的定时器,可以定时、输出比较和输入捕捉,每个定时器有四个外部I/O;高级定时器TIM1/8是一个16位的可以向上/下计数的定时器,可以定时、输出比较,输入捕捉,以及实现三相电机互补输出信号,每个定时器有8个外部I/O⑷.此例以TIM6作定时器,设计一款LCD屏显电子时钟,计时60min,最小显示值Is.2.1TIM6定时器组成根据STM32参考手册基本定时器的功能结构如图1所示⑶.定时器若要向外提供基本时钟信号,需对相关寄存器进行参数设置:1)时钟源TIM*CLK:根据STM32时钟系统设置,通常挂载APB1时钟总线,默认取值为72MH z[5];2)16位分频器PSC:用于存放预分频值,分频范围1-65536,则时钟周期图1基本定时器功能框图Fig.l Block Diagram of Basic Timer FunctionCK_CLK=(PSC+1)/TIM*CLK(1)即每计1个数的时间间隔3)自动重装载寄存器ARR:用于存放16位计数值,用于设定定时长度Td=CK_CLK*ARR(2)综上所述,首先对定时器初始化,将所预设参数写入到对应的结构体中,赋值包含以下内容:#define BASIC_TIM#define BASIC_TIM_CLK #define BASIC_TIM_ARR #define BASIC_TIM_PSC TIM6RCC_APB1Periph_TIM6 1000-171按照以上参数设置,基本定时时长为:Td=〔(PSC+1)/TIM*C LK〕*A RR=(72/72M)*1000=1ms(3) 2.2电子时钟定时原理如图2所示,内部定时器提供基准时长Td=lms,引入定时中断,每计时1ms中断一次;中断次数time二1000产生Is定时,即LCD显示屏每隔1s更新一次秒位(sec)计数值;每计满60s更新一次分位(min)计数值,并将其分别显示到LCD屏上.2.3LCD显示内部时基信号产生后,还需将结果显示出来,每次中断定时时长为:Td=((PSC+1)/TIM*CLK)*ARRL J701ARR MAX(65535)ls=Td*t ime(中断次数)图2定时原理示意图Fig.2Schematic Diagram of Timing PrincipleSTM32F103实验板配2.8吋16位数据接口液晶屏,控制芯片采用了ILI0341.ILI0341是一个用于TFT液晶郭辛:基于STM32的电子时钟设计显示的单芯片控制驱动器,具有262,144色的240RGBX320像素显示方案;IU0341支持8/9/16/18位数据总线的MCU接口,6/16/18位数据总线的RGB接口以及3/4线的SPI接口⑷,本示例中液晶屏控制器采用了预先配置的8080接口通讯,使用16根数据线的RGB565格式.其相关驱动程序按照IU9341标准编制,主要由如下几步完成:1)初始化LCD数据/控制管脚ILI9341_GPIO_Config().2)点亮背光ILI9341_BackLed_Control(ENABLE).3)初始化控制寄存器ILI9341_REG_Config().4)设置显示模式ILI9341_GramScan(LCD_SCAN_MODE).初始化液晶屏完成后,调用显示驱动函数•5)清屏ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH).6)设置显示字符字体(8x16)、颜色(红字)及背景(黑底)LCD_SetFont(&Font8xl6);LCD_SetColors (RED,BLACK).7)使用c标准库把时间变量转化成字符串并显示sprintf(dispBuff,"time:%d:%d”,y,x);[6]LCD_ ClearLine(LINE(6));ILI9341_DispStringLine_EN(UNE(6),dispBuff).将数据转换成字符串,存放于数组dispBuff并写入指定行•3系统设计在以51单片机为主控单元的系统中,我们往往采用直接配置寄存器控制字的方法来操控硬件,因为MCS-51内部寄存器只有21个,而且功能简单,程序设计宜观简便;而STM32作为系统主控制器,其内部设备多达几十个,而控制这些设备的寄存器有几百个,若要使系统维持基本运转,操作这些寄存器所需的驱动程序代码成千上万行,这对于应用开发者来说逐条写程序是不现实的•芯片厂商将这些外设的驱动源码封装成固件函数包提供给用户,由用户在此基础上进行应用开发,因此以STM32为主控制器的应用系统开发就包括项目搭建和程序设计两部分•3.1固件库文件结构分析1)启动文件startup_stm32fl0x_hd.s:设置堆栈、PC指针和配置系统时钟等.2)时钟配置文件system_stm32fl0x.c:将外部时钟倍频并为各子模块提供配套的时钟源.3)内核相关的驱动文件core_cm3.h:内核的外设寄存器映射;core_cm3.c:内核的夕卜设驱动固件库•NVIC(嵌套向量中断控制器)描述文件:misc.h和misc.c.4)夕卜设相关的库文件stm32fl0x.h:实现了内核之夕卜的寄存器映射;stm32fl0x_xx.c:夕卜设的驱动函数库文件;核外设备:GPIO、USRAT、I2C、SPI、FSMC等驱动文件.5)头文件的配置文件stm32flO X_conf.h头文件的配置文件,将多个外设的头文件进行统一调配管理,如:stm32fl0x_usart.h,stm32fl0x_i2c.h,stm32fl0x_spi.h,stm32fl0x_adc.h, stm32f10x_fsmc.h...对外设描述的结构体,映射地址的头文件都放在stm32fl0x_conf.h中进行声明,使用时只需包含该配置头文件即可,并可通过“宏断言”函数进行选配•6)专门注册中断服务函数的C文件:stm32fl0x_it.c和stm32fl0x_it.h.这些文件按照相应的规贝!]分布在不同的路径下,这个规则就是ST集团与各芯片开发商共同制订的CMSIS标准⑶.3.2工程项目构建参照CMSIS标准创建项目文件以及组文件夹:CMSIS、FWlib、inc、src、Project、Output和User,并将固件库提供的基本源代码拷贝到对应目录下,如:项目文件创建并保存在Project路径下;核外外设的驱动程序复制到src源码目录下;对描述部件的寄存器结构体统一定义在inc头文件目录下;而宜接针对任务而设计的程序文件通常放置在用户目录User中,如main()程序,中断服务程序等等.在本例的电子时钟设计中,根据前面所介绍的定时器和LCD的工作原理,配置相关驱动程序或函数集,并写入预设的定时参数,重新组合、设计功能程序:1)计算并确定定时初值以及另濒器参数;2)LCD初始化机模式配置,设计变量显示程序;3)中断服务程序的数据处理部分程序设计-绵阳师范学院学报(自然科学版)3.3程序设计首先对定时器、中断寄存器、AFIO 引脚以及液晶屏进 行初始化设置,并将设计的参数值写入对应寄存器中;开启 定时时钟和中断系统,主程序实时不间断显示时间——分 位(min)和秒位(sec);中断服务程序完成定时器计数值的 更新和处理,并将其转换成时间变量传回主程序显示,程序 流程图见图3.4结论由于内部时钟源能提供1K~72MHz 时钟信号,误差 为±1%,则时钟误差最小可以控制在0. 01 us 范围内.通 过上述实验教学项目的开发,总结出32位微处理平台在工 程实践中的设计流程:(1)任务分析:根据设计要求明确项 目所需实现功能,提出设计方案主体框架、功能模块构成、 技术实现路线;(2)搭建工程项目:根据STM32平台所提供 资源,确定主控系统模块并搭建项目主体框架;对照现有资 源匹配现有的子模块,制作与主系统的接口函数并确定底 层部件参数;(3)主系统集成:完成主要业务的程序编制并 进行系统整和调试.基于STM32平台的嵌入式系统开发, 应采用立足于对系统资源的整合和集成的思维方式,将各 部件的驱动程序看作一种供开发者使用的函数集合,开发 主程序流程图|清除定時中断标志|开始Itime++I 中断服务流程图图3程序流程图Fig.3 Program Flow Chart 者需要做的是将这些离散、抽象的“程序块”有机地进行组合,以搭积木的方式进行模块化设计,这才是嵌入 式系统应用的本质所在.参考文献:[1]严武军.后PC 时代计算机专业建设的思考和探索[J].现代计算机,2011,23:92-97.[2]张良.Multisim 在“自动控制原理”实验教学中的应用[J].绵阳师范学院学报,2019,11(38):27-32.[3]刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2017:317-403.[4]田泽.ARM9嵌入式开发实验与实践[M].北京:北京航空和航天大学出版社,2006:279-282.[5]Jean brosse .嵌入式实时操作系统|jl C\OS-U [ M].邵贝贝译.北京:北京航天航空大学出版社,2007: 116-121.[6] 苏小红.C 语言大学实用教程[M].北京:电子工业出版社,2011:309-322.The Design of An Electronic Clock Based on STM32GUO Xin(School of Mechanical and Electrical Engineering , Mianyang Teachers x College , Mianyang , Sichuan 621000)Abstract : With the development of the embedded system technology , ARM32 bit processor has gradually taken a dominant position in the field of electronic consumer goods and industrial measurement and control manu facturing. This paper takes The STM32F103RC , a typical representative of Cortex-M series products , as the plat form, adopts the technical thought of firmware library as the guidance , and builds projects according to CMSIS standard , integrates various functional modules such as timer , LCD driver and interrupt system , and designs an e- lectronic clock. Through the application development of comprehensive design , a set of learning and design methods for STM32 is explored and summarized to provide new ideas for the application development of high-end processors.Keywords : STM32, embedded system , firmware library , timer , LCD display(责任编辑:陈桂芳)。
单片机多功能电子钟毕业设计论文

单片机多功能电子钟毕业设计论文一、设计题目:基于单片机并行口的电子钟的设计二、任务与要求:在智能化仪器外表中,操纵核心均为微处理器,而单片机以其高性能、高速度、体积小、价格低廉、稳固可靠而得到广泛应用,是设计智能化仪器外表的首选微操纵器,单片机结合简单的接口电路即可构成电子钟,它可广泛应用于工业、农业、日常生活等领域,与传统钟表相比较,它具有高精度、高可靠性、操作方便、价格廉价、智能化等特点,是钟表的一个进展方向,具有一定的有用价值。
1、本课题任务如下:设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟预备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,现在可利用各调整键调整时刻,调整终止后可按启动/调整键再次进入时钟运行状态。
2、本课题要求如下:(1)在AT89S51的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口(P0.0~P0.7对应于LED的a~dp),P2.5~P2.0作LED的位控输出线(P2.5~P2.0对应于LED5~LED0),P1口外接四个按键A、B、C、D(对应于P1.0~P1.3)。
(2)、利用六个LED显示当前时刻。
(3)、四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范畴0-23,0为24点,每按一次时加1;C键用于调分,范畴0-59,0 为60分,每按一次分加1;D键用于调秒, 范畴0-59,0为60秒,每按一次秒加1。
(4)、单片机采纳AT89S51,f osc=12MH Z。
(5)、电子钟供电电源电路的设计。
(6)、电子钟时钟电路,复位电路的设计。
(7)、编写系统监控程序、键扫子程序、显示子程序及其它所需子程序、功能程序和中断服务程序。
(8)、运算机输出课程设计说明书一份。
基于STM32开发板的多功能四面钟设计毕业设计

多功能四面钟毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日一.概述本设计基于STM32F107/207基板,该基板集成了OLED显示、8563日历时钟芯片、DS18B20温度传感器、LIS35DE加速度计、蜂鸣器、按键等多种外扩硬件,本设计充分利用基板上的资源,并将其结合在一起,设计成多功能四面钟。
基于单片机的多功能数字钟的设计毕业设计

基于单片机的多功能数字钟的设计毕业设计目录第1章绪论 (3)1.1 前言 (3)1.2 设计的目的及意义 (3)第2章数字钟的功能实现与设计方案 (4)2.1 数字钟的功能及设计要求 (4)2.2数字钟的实现形式 (4)2.3 方案的确定 (5)2.3.1 微处理器 (5)2.3.2 显示电路 (5)2.3.3 按键电路 (6)第3章数字钟的硬件系统设计 (7)3.1数字时钟的硬件系统框架 (7)3.2 数字时钟的主机电路设计 (7)3.2.1系统控制芯片CPU(AT89C2051)的选择 (7)3.2.2系统时钟电路设计 (12)3.2.3 系统复位电路设计 (14)3.2.4 按键与按钮电路设计 (15)3.2.5闹铃声光指示电路设计 (15)3.2.6 数字钟的显示电路设计 (15)3.3校时电路设计 (19)3.3.1校时原理 (20)3.3.2 国家授时中心 (20)3.3.3窗口比较器 (21)3.3.4 校时电路电路图 (22)3.4 电源设计 (22)第4章程序设计 (26)4.1 主控模块设计 (26)4.2基本现实模块设计 (27)4.3 当前编辑位闪烁功能的实现 (28)4.4时间设定模块设计 (28)4.5脉冲发生器原理与走时处理 (29)4.6 闹铃功能的实现 (30)第5章系统的调试及结果 (32)5.1 系统调试环境 (32)5.2 软件调试 (32)5.3硬件调试 (32)5.4调试结果 (32)结论 (33)致谢 (34)参考文献 (35)附录1:完整的汇编语言源程序 (36)附录2:系统设计原理图 (59)附录3:系统设计PCB图 (60)附录4:实物照片 (61)第1章绪论1.1前言计算机尤其是以微细加工技术支持的微型计算机技术飞速发展,其应用渗透到了各行各业。
以单片机、嵌入式处理器、数字信号处理器(DSP)为核心的计算机系统,以其软硬件可裁剪、高度的实时性、高度的可靠性、功能齐全、低功耗、适应面广等诸多优点而得到极为广泛的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多功能四面钟毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日一.概述本设计基于STM32F107/207基板,该基板集成了OLED显示、8563日历时钟芯片、DS18B20温度传感器、LIS35DE加速度计、蜂鸣器、按键等多种外扩硬件,本设计充分利用基板上的资源,并将其结合在一起,设计成多功能四面钟。
利用加速度计,进行阈值划分,在上下左右四个方向上分别调用不同的程序,分别实现日历、闹钟、秒表、时间温度的功能,并用OLED显示器将四个功能显示出来。
二.总体设计1. 系统方案(1)方案介绍本系统充分利用STM32F107/207基板和核心板,将板上的资源充分开发,将LED 显示、8563日历时钟芯片、DS18B20温度传感器、LIS35DE加速度计、蜂鸣器、按键等多种外扩硬件结合到一起,设计成可以在OLED四个面上分别显示日历、闹钟、秒表、时间温度不同的内容的多功能四面钟。
本系统能够实现的功能为在四个面上分别显示不同的内容。
首先,通过调用加速度计程序,将得到的数据进行阈值划分,分成四个部分,来分别调用不同的程序,以实现在不同的方向上显示不同内容。
在正面时显示日历,此部分依靠调用8563日历芯片程序实现;在左侧面显示秒表,依靠定时器程序实现;在右侧面显示闹钟,依靠调用8563日历芯片程序实现;在反面显示时间及温度,依靠调用8563时钟芯片程序以及DS18B20温度传感器程序实现。
当然每一部分的显示都离不开OLED部分的程序调用,也可以通过调用按键程序对日期和时间进行修改,对闹钟进行设定,对秒表进行分时计时控制,通过蜂鸣器实现闹铃以及整点报时。
(2)方案结构图 1 多功能四面钟系统总体设计框图2. 模块化分本系统根据实现功能划分为几大模块,分别为:加速度计部分、8563日历时钟芯片部分、温度传感器部分、OLED显示部分、定时器部分、按键部分。
3. 人员分工李德志、胡新洋:完成了对加速度计的研究,编写此部分程序,李德志设计系统的整体框架,对全组所有子程序进行整合,并解决按键的消抖问题、蜂鸣器的使用;刘赛、李瑞芹:完成了对OLED的研究学习,实现在四个方面的显示;刘长战、刘国磊:研究ARM定时器,完成秒表功能;郭壮、付强、房韶轩:研究了8563芯片,完成时钟、日历、闹钟功能;侯化安:研究DS18B20温度传感器芯片,完成实时温度检测功能。
三.关键模块设计1. 不同面的显示设计,由于OLED的设计为倒序纵向点阵,所以要显示横向就在代码点整应按照横向输入生成代码,经过我们的实验完成其他三面的字符和汉字代码。
2. 不同面的切换要刷掉当前页面的内容,而如果采用简单的清屏则会使得在同一面时也实时刷屏这不能达到我们的设计,解决这个问题我们做了标记变量解决了刷屏问题。
3. 实际中我们校对时钟时对应的数字是闪烁的,所以我们的设计也采用这一理念,我们具体的做法是在对应的校对时,只让其对应的点阵清屏加延时已达到闪烁的效果4. 为了达到按键在对应的界面校对其参数,我们的按键做了判断条件使得在其相应界面进行调整并退出时其参数刷零以至不影响其它面的校对。
四.测试结果通过测试,我们顺利实现预期功能,主要功能叙述如下:1.在四个界面上显示出不同的内容:日历(包括年、月、日、星期)、闹钟、秒表、温度及时间;2.修改日期(包括年、月、日)按键1为选择键,每按四次循环一周,按下按键1后,需要调整的时间就一直处于闪烁状态,此时可以用按键2、按键3进行修改,按键表示日期加,按键3表示日期减;3.修改时间(包括时、分、秒)按键1为选择键,也是每四次循环一周,需要修改的处于闪烁状态,通过按键2、按键3进行时间加、减;4.整点报时,每次到整点时,就会有铃声响起,响起时间为一分钟;如果在此时按下按键4时,闹铃就停止;5.设定闹钟时间,按键1为选择键,按键2、3分别表示时间加或减;6.闹钟铃响,如果没有按下按键4,在设定的时间的那一分钟里会一直响;7.秒表的设定。
按键1为启动/停止键,按键2为清零键。
五.设计不足时间仓促,本设计并不是尽善尽美,仍有很多不足之处。
主要是在以下几个方面需要进一步完善:1.断电后,闹钟的设定值会消失,原则上调用8563时钟芯片的数据,断电以后,在一定的时间内,是不会消失的,这个问题需要找清楚原所在。
2.加速度计利用不完善,加速度计有X、Y、Z三个轴,本设计中,只是利用了X、Y两个轴,致使显示的时候,并不是很稳定。
这个问题的解决,需要将X、Y、Z三个轴都计算进去,利用三维坐标,求出其重力加速度方向,据此确定所显示的界面。
3.以下几点为答辩过程中,本小组存在的问题:1)问:OLED显示器的尺寸发生变化,本设计能否适应不同的尺寸显示?对应的显示比例能否跟着改变?答:本设计中OLED显示采用的是最基本的办法:按照每个界面所需要的内容不同,用字模取字软件生成不同的代码,然后用显示函数调用不同的代码,实现不同界面的显示。
如果OLED的屏幕尺寸发生改变,本设计中的显示内容,不能根据屏幕尺寸的变化而发生相对应的改变。
因为,如果屏幕尺寸改变,需要的显示代码就发生对应的改变,本设计无法对显示内容的代码进行操作,使之适应不同尺寸的屏幕。
2)问:秒表的晶振准确吗?误差是多少?答:定时器所采用的中断的晶振是存在一定的误差的,通过我们计算其经过分频后三分钟与实际差一秒,所以误差为:1/(3*60) * 100% = 0.56%3)闹钟是如何实现报警的?是比较吗?答:本设计中的闹钟是利用8563时钟芯片中的报警功能,采用硬件报警,而不是软件报警。
采用例程中所给的函数设定报警的时间之后,就会将此时间传递给8563时钟芯片,如果芯片内检测到报警时间与真实时间相等的话,就会触发报警标志,我们根据得到的报警标志来使蜂鸣器响。
六.总结本次系统设计,我们小组充分利用STM32F107基板以及ARM核心板上的资源,设计完成了多功能四面钟。
在设计的过程中,我们小组,首先对已有的学习资料进行了研究,对DS18B20温度传感器、8563时钟芯片、加速度计、OLED显示等芯片的原理以及程序使用方法进行了一定程度的了解。
随后,我们分工合作,将整个系统的程序分成了五个模块,由五个设计小队分别完成,这样,既可以提高整体进度,又可以让每一位同学参与到设计过程中,学习到更多的知识,享受团队合作的乐趣和成就感。
当然,设计的过程并不可能一帆风顺,我们的知识有限,对整个程序的了解程度也不是很多,编写程序的过程中还是遇到了很多的问题。
将各个子程序编写完成之后,进行整合的难度更大。
就拿一点来说,开始时,整个系统程序的结构不合理,导致了按键的循环延时时间影响了OLED的显示,出现了画面不断闪现的现象。
后来,我们不得不对整个程序框架进行重新调整,才是问题得到解决。
虽然难题不可避免,我们还是努力调试,修改程序,在这个过程中,我们也学习到了很多的知识。
通过这次实习设计,我们充分认识到了实践的重要性,也认识到了要想完成一个设计,只是设想是没用的,要的是不断的实践。
只有在实践的过程中,才会遇到各种问题,解决问题就是实践的过程。
动手之后才明白存在哪些问题,并积极想办法解决,这就是丰富经验的过程。
同时,我们也清楚的认识到,团队合作的重要性,一个人的思考能力和知识面是有限的,很多问题,一个人可能深陷其中,百思不得其解,但是在队友的帮助下,这些问题就不再那么令人头疼了。
正是通过团队合作,我们小组才能顺利解决设计路上的种种难题,顺利完成了设计任务。
七.附录1.关键程序代码①主程序int main (void){SystemInit();//设置系统时钟I2C_GPIOInit();//i2c总线设置OLED_init();//oled初始化Timer4Init();//定时器4设置RealTime_Init();NVIC_Configuration();TIMER3_Init();//定时器3初始化MEMS_Init();//重力加速度计初始化DS18B20_Init();//温度传感器初始化GetTime(&RealTime);//读取当前时间while(1){keyscan(); // 按键扫描mems_change();//获取xyz坐标值alarm_running();//闹钟判断}}②按键扫描程序void keyscan(){if(status == Time_change)//时间按键设置{if(KEY1Read()){select++;DelayMs(100);if(select>=4)select = 0;}if(select==1){if(KEY2Read())RealTime.hour ++;if(KEY3Read())RealTime.hour --;if(RealTime.hour > 23)RealTime.hour = 0;SetTime(&RealTime);}else if(select==2){if(KEY2Read())RealTime.minute ++;if(KEY3Read())RealTime.minute --;if(RealTime.minute > 59)RealTime.minute = 0;SetTime(&RealTime);}else if(select==3){if(KEY2Read())RealTime.second = 0;if(KEY3Read())RealTime.second = 0;SetTime(&RealTime);}}if(status == ALARM_change)//闹钟按键{if(KEY1Read()){select++;DelayMs(100);if(select>=3)select = 0;}if(select==1){if(KEY2Read())AlarmTime.hour ++;if(KEY3Read())AlarmTime.hour --;if(AlarmTime.hour > 23)AlarmTime.hour = 0;SetAlarmHour(AlarmTime.hour,TRUE);}else if(select==2){if(KEY2Read())AlarmTime.minute ++;if(KEY3Read())if(AlarmTime.minute > 59)AlarmTime.minute = 0;SetAlarmMinute(AlarmTime.minute,TRUE);}}if(status == DA TE_change)//日期按键{if(KEY1Read()){select++;DelayMs(100);if(select>=4)select = 0;}if(select==1){if(KEY2Read())RealDate.year ++;if(KEY3Read())RealDate.year --;if(RealDate.year > 2500)RealDate.year = 1990;SetDate(&RealDate);}else if(select==2){if(KEY2Read())RealDate.month ++;if(KEY3Read())if(RealDate.month > 12)RealDate.month = 1;SetDate(&RealDate);}else if(select==3){if(KEY2Read())RealDate.day ++;if(KEY3Read())RealDate.day --;if(RealDate.day > 31)RealDate.day = 0;SetDate(&RealDate);}}if(status == MIAOBIAO_change)//秒表设定{if(KEY1Read()){select++;DelayMs(200);if(select==2)select = 0;}if(select==0){flag=STOP;}else if(select==1){flag=START;}if(KEY2Read()){flag=CLEAR;}}}③获取XYZ轴坐标程序void mems_change(){MEMS_Get(&mems); //获取加速度计坐标DelayMs(80);if( (mems.x>=40&&mems.x<=60)&&((mems.y>=0&&mems.y<=30)||(mems.y>=230&&me ms.y<=255)) ){status = DATE_change;if(down==1)WriteData(0,0,132,0,8,0); //清屏down_display();}elseif( (mems.y>=30&&mems.y<=60)&&((mems.x>=0&&mems.x<=39)||(mems.x>=230&&me ms.x<=255)) ){status = ALARM_change;if(right==1){select=0;WriteData(0,0,132,0,8,0); //清屏}right_display();}elseif( (mems.x>=200&&mems.x<=230)&&((mems.y>=0&&mems.y<=30)||(mems.y>=230&& mems.y<=255)) ){status = Time_change;if(up==1){select=0;WriteData(0,0,132,0,8,0); //清屏}up_display();}elseif((mems.x>=200&&mems.x<=255)||(mems.x>=0&&mems.x<=39)&&(mems.y>=200&&m ems.y<=229)){status = MIAOBIAO_change;if(left==1){select=0;WriteData(0,0,132,0,8,0); //清屏}left_display();}else{status = Time_change;if(up==1){select=0;WriteData(0,0,132,0,8,0); //清屏}up_display();}}④显示程序//向上显示void up_display(){up = 0;right =1;down =1;left =1;GetTime(&RealTime);f_temp = (unsigned int)((DS18B20_Get_Temp()*10)); char mark = 0;if(f_temp < 0){f_temp = 0-f_temp;mark = 1;}if(select==1){WriteData(0,64,81,5,7,0); //清屏DelayMs(1000);}if(select==2){WriteData(0,37,54,5,7,0); //清屏DelayMs(1000);}if(select==3){WriteData(0,10,27,5,7,0); //清屏DelayMs(1000);}WriteData(hanzi[16],99,115,5,7,1);//时WriteData(hanzi[17],82,98,5,7,1);//间WriteData(downnumber[RealTime.hour/10],73,81,5,7,1); WriteData(downnumber[RealTime.hour%10],64,72,5,7,1); WriteData(downnumber[10],55,63,5,9,1);WriteData(downnumber[RealTime.minute/10],46,54,5,7,1); WriteData(downnumber[RealTime.minute%10],37,45,5,7,1); WriteData(downnumber[10],28,36,5,7,1);WriteData(downnumber[RealTime.second/10],19,27,5,7,1); WriteData(downnumber[RealTime.second%10],10,18,5,7,1); WriteData(hanzi[18],96,112,2,4,1);//温WriteData(hanzi[19],79,95,2,4,1);//度if(mark==1)WriteData(downnumber[13],70,78,2,4,1);WriteData(downnumber[f_temp/100],61,69,2,4,1);WriteData(downnumber[(f_temp-(f_temp/100)*100)/10],52,60,2,4,1); WriteData(downnumber[11],43,51,2,4,1);WriteData(downnumber[f_temp%10],34,42,2,4,1);WriteData(hanzi[20],17,33,2,4,1);//℃}//向下显示void down_display(){up = 1;right =1;down =0;left =1;if(select==1){WriteData(0,3,38,1,3,0); //清屏DelayMs(1000);}if(select==2){WriteData(0,56,73,1,3,0); //清屏DelayMs(1000);}if(select==3){WriteData(0,91,108,1,3,0); //清屏DelayMs(1000);}GetDate(&RealDate);WriteData(upnumber[RealDate.year/1000],3,11,1,3,1);WriteData(upnumber[(RealDate.year-(RealDate.year/1000)*1000)/100],12,20,1,3,1); WriteData(upnumber[(RealDate.year-(RealDate.year/100)*100)/10],21,29,1,3,1); WriteData(upnumber[RealDate.year%10],30,38,1,3,1);WriteData(hanzi[0],39,55,1,3,1); //年WriteData(upnumber[RealDate.month/10],56,64,1,3,1);WriteData(upnumber[RealDate.month%10],65,73,1,3,1);WriteData(hanzi[1],74,90,1,3,1);//月WriteData(upnumber[RealDate.day/10],91,99,1,3,1);WriteData(upnumber[RealDate.day%10],100,108,1,3,1);WriteData(hanzi[2],109,125,1,3,1);//日WriteData(hanzi[3],34,50,4,6,1);//星WriteData(hanzi[4],51,67,4,6,1);//期WriteData(hanzi[5+RealDate.weekday],68,84,4,6,1); }//向左显示void left_display(){up = 1;right =1;down =1;left =0;// WriteData(0,0,132,0,8,0); //清屏WriteData(hanzi[12],96,112,2,4,1);//秒WriteData(hanzi[13],96,112,5,7,1);//表WriteData(leftnumber[min/10],64,80,2,3,1);WriteData(leftnumber[min%10],64,80,3,4,1);WriteData(leftnumber[10],64,80,4,5,1);WriteData(leftnumber[sec/10],64,80,5,6,1);WriteData(leftnumber[sec%10],64,80,6,7,1);WriteData(leftnumber[_10us/10],32,48,3,4,1);WriteData(leftnumber[_10us%10],32,48,4,5,1);}//向右显示void right_display(){up = 1;right =0;down =1;left =1;if(select==1){WriteData(0,48,64,5,7,0); //清屏DelayMs(1000);}if(select==2){WriteData(0,48,64,2,4,0); //清屏DelayMs(1000);}WriteData(hanzi[14],17,33,2,4,1);//闹WriteData(hanzi[15],17,33,5,7,1);//钟WriteData(rightnumber[AlarmTime.hour/10],48,64,6,7,1);WriteData(rightnumber[AlarmTime.hour%10],48,64,5,6,1);WriteData(rightnumber[10],48,64,4,5,1);WriteData(rightnumber[AlarmTime.minute/10],48,64,3,4,1);WriteData(rightnumber[AlarmTime.minute%10],48,64,2,3,1);}⑤闹钟判断void alarm_running(){ if(!alarmflag)alarmflag = Alarm_Get()&&(AlarmTime.hour == RealTime.hour);if(alarmflag){AlarmTime.minute = RealTime.minute;BuzzOn();DelayMs(200);BuzzOff();DelayMs(200);if((AlarmTime.minute != RealTime.minute ) || (KEY4Read())) alarmflag = FALSE;}while(RealTime.minute == 0){Timer4OutEnable();SetBellF(MusicData[0]);DelayMs(400);SetBellF(MusicData[0]);DelayMs(400);SetBellF(MusicData[4]);DelayMs(400);SetBellF(MusicData[4]);DelayMs(400);SetBellF(MusicData[5]);DelayMs(400);SetBellF(MusicData[5]);DelayMs(400);SetBellF(MusicData[4]);DelayMs(400);DelayMs(400);SetBellF(MusicData[3]);DelayMs(400);SetBellF(MusicData[3]);DelayMs(400);SetBellF(MusicData[2]);DelayMs(400);SetBellF(MusicData[2]);DelayMs(400);SetBellF(MusicData[1]);DelayMs(400);SetBellF(MusicData[1]);DelayMs(400);SetBellF(MusicData[0]);DelayMs(400);DelayMs(400);Timer4OutDisable();DelayMs(100);keyscan();if(mems.x>=30&&mems.x<=57){status = DA TE_change;if(down==1){select=0;WriteData(0,0,132,0,8,0); //清屏}down_display();}elseif((mems.x>=230&&mems.x<=255)&&(mems.y>=30&&mems.y<=55)){status = ALARM_change;if(right==1){select=0;WriteData(0,0,132,0,8,0); //清屏}right_display();}else if(mems.x>=180&&mems.x<=200){status = Time_change;if(up==1){select=0;WriteData(0,0,132,0,8,0); //清屏}up_display();}elseif((mems.x>=200&&mems.x<=255)&&(mems.y>=160&&mems.y<=225)){status = MIAOBIAO_change;if(left==1) {select=0;WriteData(0,0,132,0,8,0); //清屏}left_display();}else{status = Time_change;if(up==1){select=0;WriteData(0,0,132,0,8,0); //清屏}up_display();}}}2.照片图1 正面显示图图2 反面显示图图3 右侧面显示图图4 左侧面显示图。