毕业设计(论文)-基于单片机的多功能电子时钟系统.doc_第1页
毕业设计(论文)-基于单片机的多功能电子时钟系统.doc_第2页
毕业设计(论文)-基于单片机的多功能电子时钟系统.doc_第3页
毕业设计(论文)-基于单片机的多功能电子时钟系统.doc_第4页
毕业设计(论文)-基于单片机的多功能电子时钟系统.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的多功能电子钟-0-学学院院:电气信息工程学院专专业业:电子信息工程班班级级:08电子1班姓姓名名:学学号号:指导老师指导老师:JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY基基于于单单片片机机的的多多功功能能电电子子时时钟钟系系统统基于单片机的多功能电子钟-1-摘要摘要电子钟主要是利用现代电子技术将时钟电子化、数字化。与传统的机械钟相比,具有时钟精确、显示直观、无机械传动装置等优点。本设计是以单片机为核心,附加必要的外围电路,还用到时钟芯片DS1302和LCD1602的液晶显示器。在这些硬件基础上,通过编写配套的C语言程序,实现对年、月、日、时、分、秒在液晶屏上的显示,此外还实现整点报时和秒表计时功能。日期和时间通过相应的时钟芯片DS1302与单片机的配合工作将数据传送到液晶显示器上来实现的。整点报时和秒表计时的功能主要是通过软件和单片机的控制来实现的。因此我们要加上一些必要的按键,对相关数据进行设置于操作,如工作模式的选择,对年、月、日、时、分、秒的上、下调节,以及在秒表计时模式下有启动、清零、记录。通过此次实物制作增强了我们的动手能力把理论与实践融合在一起。同时,也进一步加深了对单片机的硬件结构的理解和巩固,编程能力也得到了提高。在此将电子钟制作过程中用到的知识进行了一些总结,并记录了遇到的问题,希望自己今后能注意。同时也希望能成为读者的参考资料,能帮助读者避免出现相同的问题,并能从中得到一些启发。Electronicclockistheuseofmodernelectronictechnologydigitalelectronicclock.Comparedwiththetraditionalmechanicalclockwithprecisionclockvisualdisplaynomechanicaltransmissiondeviceetc.Thedesignisbasedonthesingle-chipmicrocomputerasthecoretheadditionalnecessaryperipheralcircuitsinadditiontothesinglechipalsousestheclockchipDS1302andLCD1602liquidcrystaldisplay.OnthebasisofhardwarethroughthepreparationofsupportingClanguageprogramrealizestotheyearmonthdaytimesecondintheLCDscreentodisplayinadditiontorealizethewholepointtimekeepingandstopwatchfunctionoftime.DateandtimethroughtheclockchipDS1302andMCUworktogethertotransmitdatatotheLCDdisplaytoachieve.Thewholepointtimekeepingandstopwatchfunctionmainlybysoftwareandsinglechipcomputercontroltoachieve.Sowearegoingtoaddsomenecessarykeytherelevantdataforsettinginoperationsuchastheselectionofworkingmodefortheyearmonthdaytimesecondsregulationaswellasinthestopwatchmodestartresetrecording.Throughthephysicalproductionenhanceourabilityputtheoryandpracticetogether.Atthesametimealsofurtherdeepenedtosingle-chiphardwarestructurestounderstandandconsolidateprogrammingabilityhasbeenimproved.Theelectronicclockmakingtheknowledgeusedinthecourseofanumberofsummaryandrecordedtheencounteredproblemshopethattheirfuturewillpayattention.Alsohopetobecomereadersreferencecanhelpreaderstoavoidthesameproblemandcangetsomeinspiration.基于单片机的多功能电子钟-2-目录目录11、绪论、绪论.-33-1.11.1研究目的与意义研究目的与意义.-3-1.21.2课题研究内容及技术指标课题研究内容及技术指标.-3-22、系统的方案设计、系统的方案设计.-33-2.12.1系统方案设定与确定系统方案设定与确定.-3-2.22.2系统实现总框图系统实现总框图.-4-33、硬件电路设计、硬件电路设计.-44-3.13.1电源部分模块电源部分模块.-4-3.23.2主控模块主控模块.-4-.1单片机的发展阶段单片机的发展阶段.-4-.2STC89C52STC89C52单片机单片机.-5-主控模块的实现主控模块的实现.-7-3.33.3时钟产生电路时钟产生电路.-8-3.3.1DS1302的简介.-8-.2DS1302DS1302的结构及工作原理的结构及工作原理.-8-.3DS1302DS1302实时显示时间的软硬件实时显示时间的软硬件.-9-.4DS1302DS1302的调试与电路实现的调试与电路实现.-9-3.43.4显示模块显示模块.-10-.1LCD1602LCD1602的简介的简介.-10-.2LCD1602LCD1602引脚图及功能引脚图及功能.-10-33.55按按键键控控制制模模块块.-11-33.55.11键键盘盘电电路路原原理理.-11-33.55.22键键盘盘电电路路与与8899CC5522的的连连接接如如图图.-11-44、软件设计、软件设计.-1212-4.14.1系统软件设计系统软件设计.-12-4.2模块软件设计.-14-.1LCD1602LCD1602的驱动程序的驱动程序.-14-.2DS1302DS1302的驱动程序的驱动程序.-16-.3整点报时的闹铃驱动程序整点报时的闹铃驱动程序.-18-.4延时程序延时程序.-18-55、测试结果、测试结果.-1919-66、结论、结论.-1919-77、参考文献、参考文献.-1919-88、附录、附录.-1919-附录一:元器件清单附录一:元器件清单.-20-附附录录二二:电电路路原原理理图图.-20-附录三:程序清单附录三:程序清单.-22-基于单片机的多功能电子钟-3-11、绪论、绪论1.11.1研究目的与意义研究目的与意义目前市场上出售的很多电子时钟中,功能虽五花八门,种类齐全,外表也非常精美,但对时钟的功能要求总是因人而异。针对此种情况,我们设计的此款新型多功能电子时钟应运而生,它既能够显示时间,又能整点报时,而准确的显示年、月、日、时、分、秒且可以进行秒表计时。满足了很多人愿望数字钟是一种多用电子时钟与机械式时钟相比具有更高的准确性和直观性且无机械装置而与一般的电子时钟相比,由于其多功能性,而不同于市场上其它同类产品,会多人的青睐。1.21.2课题研究内容及技术指标课题研究内容及技术指标1、课题任务设计制作一台利用单片机作为核心控制的多功能电子时钟系统2、课题内容及技术指标(1)、系统具有3种工作模式状态(正常时钟显示模式、系统校准模式,秒表计时模式)(2)、在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能(3)、在正常时钟显示模式时,时钟具有整点报时功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每隔1秒鸣叫一次,前4响为低音,后1响为高音,共鸣叫5次,最后一响结束时为整点。高音频率为1KHZ。(4)、在系统校准模式时,系统具有快速校准时间的功能(5)、在秒表计时模式时,可兼做比赛时间记录表,秒表计时的精确度为0.1秒,由三个键分别控制秒表启动,清零,记录功能,可连续记录三组时间。并能够显示记录时间。(6)、系统显示器采用LCD液晶显示器1602或其他显示器件,并采用键盘对相关数据进行设置与操作。22、系统的方案设计、系统的方案设计2.12.1系统方案设定与确定系统方案设定与确定多功能电子时钟有多种实现方案,现在我有两种方案实现本次的课程设计。方案一:利用EDA技术实现多功能电子时钟运用EDA软件开发平台,基于FPGA现场可编程技术,运用自顶向下的设计思想设计电子钟。可将系统分为计时模块、校时模块、译码显示模块、按键模块等。方案二:利用单片机技术实现多功能电子时钟运用89C52单片机为核心,将系统分为主控模块、按键扫描模块、显示模块、电源电路、复位电路、驱动电路、晶振电路、时钟电路等几个模块组成。对比两个方案:方案一的外围电路比较简单,但需要我们能够熟练的使用EDA语言汇编,而且是基于FPGA实验平台实现;方案二的外围电路相对比较复基于单片机的多功能电子钟-4-杂,但其软件程序使用C语言编程,大大简易,其下载端口也相对比较简单。综上两种方法,结合自己的能力,我选择用单片机来完成这次的课程设计。2.22.2系统实现总框图系统实现总框图本设计是以单片机为核心,附加必要的外围电路,构成一个数字电子钟,整体由5V的电源供电。在硬件方面,除了单片机芯片外,还用到时钟芯片DS1302和LCD1602的液晶显示器。在这些硬件基础上,通过编写配套的C语言程序,实现对年、月、日、时、分、秒在液晶屏上的显示,此外还实现整点报时和秒表计时功能。日期和时间通过相应的时钟芯片DS1302与单片机的配合工作将数据传送到液晶显示器上来实现的。整点报时和秒表计时的功能主要是通过软件和单片机的控制来实现的。因此我们要加上一些必要的按键,对相关数据进行设置于操作,如工作模式的选择,对年、月、日、时、分、秒的上、下调节,以及在秒表计时模式下有启动、清零、记录。系统实现的总框图如下:电源电路晶振电路复位电路蜂鸣器电路时钟模块主控模块89C52按键电路驱动电路串行通信接口LCD1602显示电路33、硬件电路设计、硬件电路设计3.13.1电源部分模块电源部分模块由于本系统功耗并不很大,而且不需要功率输出部分,因此只需用简单的输出5V的电源供电。3.23.2主控模块主控模块.1单片机的发展阶段单片机的发展阶段单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。(1)SCM即单片微型计算机(SingleChipMicrocomputer)阶段,主要是基于单片机的多功能电子钟-5-寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。(2)MCU即微控制器(MicroControllerUnit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。(3)单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。单片机作为微型计算机的一个重要分支,应用面很广,发展很快。自单片机诞生至今,已发展为上百种系列的近千个机种。.2STC89C52STC89C52单片机单片机(一)主要功能特性标准MCS-51内核和指令系统片内8kROM(可扩充64kB外部存储器)32个双向IO口256x8bit内部RAM(可扩充64kB外部存储器)3个16位可编程定时计数器时钟频率3.5-122433MHz向上或向下定时计数器改进型快速编程脉冲算法6个中断源5.0V工作电压全双工串行通信口布尔处理器帧错误侦测4层优先级中断结构自动地址识别兼容TTL和CMOS逻辑电平空闲和掉电节省模式PDIP(40)和PLCC(44)封装形式(二)STC89C52功能引脚图如图:基于单片机的多功能电子钟-6-(三)引脚功能说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向IO口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是基于单片机的多功能电子钟-7-由于上拉的缘故。P3口作为AT89C51的一些特殊功能口,管脚备选功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(计时器0外部输入)P3.5T1(计时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALEPROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EAVPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。(四)振荡器特性外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路(AT89C52内部有一个用于构成内部振荡器的高增益反相放大电路,XTAL1、XTAL2分别是该放大器的输入和输出端)中构成并联振荡电路。为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。这是由于振荡器电容和反馈电容之间的相互作用。当外部信号是标准高电平或者低电平时,电容不会超过20pF。主控模块的实现主控模块的实现本设计的系统以STC89C52为主控芯片,主要进行基于STC89C52低功耗MCU的字符型电子时钟及其系统的研究。整个系统利用52系列单片机AT89C52为控制核心,结合高精度计时的时钟日历芯片DS1302用四四矩阵按键使用来对其进行时钟校时、周数设置显示部分LCD1602液晶显示,用片选扫描的方式对其进行扫描,从而使数码管得以高亮度显示。单片机的连接如下图所示:基于单片机的多功能电子钟-8-主控模块原理图3.33.3时钟产生电路时钟产生电路3.3.1DS1302的简介现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。.2DS1302DS1302的结构及工作原理的结构及工作原理DS1302的引脚排列其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,IO引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。IO为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。DS1302的引脚功能图如图所示。基于单片机的多功能电子钟-9-图DS1302封装图控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据位5至位1指示操作单元的地址最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。数据输入输出(IO)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。为了实现系统报警计时等功能,此设计采用了DS302实时时钟芯片。DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。.3DS1302DS1302实时显示时间的软硬件实时显示时间的软硬件DS1302与CPU的连接需要三条线,即SCLK(7)、IO(6)、RST(5)。图中显示出DS1302与89C52的连接图,其中,时钟的显示用LCD。在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。.4DS1302DS1302的调试与电路实现的调试与电路实现要特别说明的是备用电源3V,可以用电池或者超级电容器(0.1F以上)。虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。DS1302在第一次加电后,必须进行初始化操作。初始化基于单片机的多功能电子钟-10-后就可以按正常方法调整时间。实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。电路原理图如下:3.43.4显示模块显示模块.1LCD1602LCD1602的简介的简介工业字符型液晶,能够同时显示16x02即32个字符。(16列2行).2LCD1602LCD1602引脚图及功能引脚图及功能基于单片机的多功能电子钟-11-33.55按按键键控控制制模模块块33.55.11键键盘盘电电路路原原理理键盘是由16个按键组成的开关矩阵,是最简单的也是最常用的单片机输入设备,操作员可以通过键盘输入数据或命令,实现简单的人机通信。33.55.22键键盘盘电电路路与与8899CC5522的的连连接接如如图图基于单片机的多功能电子钟-12-44、软件设计、软件设计4.14.1系统软件设计系统软件设计整个软件系统采用模块化思想,把1602,DS1302的驱动程序做成头文件,在功能程序中调用。采用这种方法不仅使程序模块化,使程序结构层次分明,便于管理和维护,同时可方便以后开发的调用,只要包含头文件,功能程序模块中再调用接口函数就可以了,而不必关心底层驱动是如何实现的,这样缩短了开发周期,开发效率大大提高。在主程序中采用事件顺序驱动机制的编程方法,按键处理中采用采用网状多级状态结构的编程方法,而秒表功能采用定时中断实现,精确到1ms。主程序采用事件驱动机制,事件为某个按键按下,则主程序响应这个按键,并进入相应的功能程序,其编程思想如下:基于单片机的多功能电子钟-13-YYYN开始IO初始化DS1302初始化定时中断初始化读取DS1302的静态RAM中的时间1:调整时间键盘扫描进入设置状态退出2:正常显示调用读取时间函数并显示时间定时中断初始化整点时间到?显示并蜂鸣50s到?3:秒表模式NNYYYNNN键盘扫描进入设置状态退出键盘扫描基于单片机的多功能电子钟-14-设置键的状态机处理过程为:每按一下“设置”键,则其状态改变一次(标记状态从1改变到8),如图:状态0状态1状态2正常显示时间系统时间校准秒表模式在正常显示时间是,按设置键转换模式。在系统校准时间模式下,通过按键改变光标的移动,按数字键调试,具有快速调时间的功能。在秒表模式下,通过按键启动、记录、清零。4.2模块软件设计.1LCD1602LCD1602的驱动程序的驱动程序#ifndef_1602_H_#define_1602_H_sbitE=P251602使能引脚sbitRW=P261602读写引脚sbitRS=P271602数据命令选择引脚voidenable(uchardel)1602命令函数P0=delRS=0RW=0E=0delayms(2)E=1delayms(2)voidwrite(uchardel)1602写数据函数P0=delRS=1RW=0E=0delayms(2)基于单片机的多功能电子钟-15-E=1delayms(2)voidL1602_init(void)1602初始化,请参考1602的资料enable(0 x01)显示清屏,数据指针加1enable(0 x38)显示模式设置162enable(0 x0c)设置开显示,不显示光标enable(0 x06)写一个字符后地址指针加1enable(0 xd0)改变液晶中某位的值,如果要让第一行,第五个字符显示b,调用该函数如下L1602_char(15b)voidL1602_char(ucharhangucharliecharsign)ucharaif(hang=1)a=0 x801602第一行的首地址是0 x80if(hang=2)a=0 xc01602第二行的首地址是0 xc0a=a+lie-1enable(a)write(sign)改变液晶中某位的值,如果要让第一行,第五个字符开始显示abcdef,调用该函数如下L1602_string(15abcdef)voidL1602_string(ucharhangucharlieucharp)ucharaif(hang=1)a=0 x801602第一行的首地址是0 x80if(hang=2)a=0 xc01602第二行的首地址是0 xc0a=a+lie-1enable(a)while(1)if(p=0)breakwrite(p)p+基于单片机的多功能电子钟-16-#endif.2DS1302DS1302的驱动程序的驱动程序#ifndef_DS1302_h#define_DS1302_hsbitACC0=ACC0sbitACC7=ACC7sbitT_CLK=P22实时时钟时钟线引脚sbitT_IO=P21实时时钟数据线引脚sbitT_RST=P20实时时钟复位线引脚voidv_RTByte(ucharucDa)往DS1302写入1Byte数据uchariACC=ucDaT_RST=1for(i=8i0i-)T_IO=ACC0T_CLK=1T_CLK=0ACC=ACC1ucharuc_RTOutputByte(void)从DS1302读取1Byte数据uchariT_RST=1for(i=8i0i-)ACC=ACC1T_IO=1ACC7=T_IOT_CLK=1T_CLK=0return(ACC)voidv_W1302(ucharucAddrucharucDa)往DS1302写入数据基于单片机的多功能电子钟-17-T_RST=0T_CLK=0T_RST=1v_RTByte(ucAddr)写地址_nop_()_nop_()v_RTByte(ucDa)写1Byte数据T_CLK=1T_RST=0ucharuc_R1302(ucharucAddr)读取DS1302某地址的数据ucharucDaT_RST=0T_CLK=0T_RST=1v_RTByte(ucAddr)写地址,命令_nop_()_nop_()ucDa=uc_RTOutputByte()读1Byte数据T_CLK=1T_RST=0return(ucDa)uchardectobcd(uchardec)DEC码转换为BCD码ucharbcdbcd=0while(dec=10)dec-=10bcd+bcd0j-)基于单片机的多功能电子钟-19-#endif55、测试结果、测试结果在本次课程设计过程中,虽然非常顺利地完成了软件和硬件的设计和仿真,并最终实现了题目所要求实现的功能。但还有可深入研究和可改进之处。在调试过程中,最让人头痛的是DS1302的驱动,除了注意时序以外,引脚的连接和抗干扰很重要,特别是使用了备份电池,当备份电池直接接在芯片第1脚时,芯片的发热量很大,温度上升达到了很高的度数,经过查看数据手册,我的主电源与备用电源接反了,将线路正确和好后,温度还是很高,经过再仔细的看了芯片使用手册后,我认为是电池容量超过了芯片涓细充电电流所容许的容量,于是在第8脚和备用电池之间串联了30欧姆的电阻,减小充电电流,消除了DS1302的发热问题但不影响备用电池的功能。需要改进的地方是按键和时间的显示部分星期应该可以自己更新。在实际的操作中,按键的反应很慢,原因是为了防抖而在程序中加入只有按键弹起才执行的程序,虽然防抖了,但按键反应迟钝,带来了操作上的不便。但是在时间校准的设计上采用矩阵按键功能,能够快速校准时间,给设置时间带来了极大地方便。66、结论、结论从最终的作品来看,本电子钟具有如下优点:走时准确;能快速校准时间;整点报时闹铃提示功能;秒表功能计时准确,精确到1毫秒;功耗低,操作界面友好,操作简便。本课程设计从软件设计到仿真到硬件制作和调试,我收获不小。首先,我认真复习了C语言编程,其次我学习了使用protus和keil画电路原理图和编程。特别是在仿真编程和硬件调试方面。在编程过程中一直灌输给自己“编程是一种思想”,一定要用编程的思想去编程,如模块化思想,文件管理思想,头文件和接口函数的思想,设计程序时要考虑到程序的可扩充性,兼容性,可维护性以及重用性,并归纳和总结各种功能算法,各种调度和事件驱动机制等等。在编程方面有了一定的进步。在使用仿真软件时得到了一些启示:仿真只是提供一个实现的大概参考,真正的功能实现仍需在实际硬件调试中完善。此次的课程设计为我的毕业设计做了良好的基础。77、参考文献、参考文献1楼然苗,李光飞.单片机课程设计指导M.北京:北京航空航天大学出版社,20072李海滨,片春媛,许瑞雪.单片机技术课程设计与项目实例M.北京:中国电力出版社,20093杨居义.单片机课程设计指导M.北京:清华大学出版社,20094张友德、赵金英、涂时亮单片微型计算机原理、应用与实验(第四版)M上海:复旦大学出版社2003.5肖金球单片机原理与接口技术M北京:清华大学出版社2003.6张超琦单片机原理及实例实践篇M上海:上海交通大学出版社2006.88、附录、附录基于单片机的多功能电子钟-20-附录一:元器件清单附录一:元器件清单单片机STC89C52蜂鸣器电阻:4.7k4个三极管:80501个10k1个电容:20PF4个1k1个电解电容:10uF1个电位器:10k1个按键:17个晶振:12MHz1个排阻:33081个32.7MHz1个液晶显示LCD1602时钟芯片DS1302附附录录二二:电电路路原原理理图图基于单片机的多功能电子钟-21-基于单片机的多功能电子钟-22-附录三:程序清单附录三:程序清单#include#include#include#defineucharunsignedchar#defineuintunsignedint#includedelay.h#include1602.h#includeds1302.h#includekey.hucharkeytemp键值的暂存ucharkeyflag按键值有效确定标志ucharcounttimecount设置键按键次数,定时器1的计时次数ucharsecminhourweekdaymonthyear秒、分、时、星期、日、月、年的数据ucharmodel模式选择键ucharT_msT_secT_min秒表uintnbitflagbitf_secf_minf_hourf_weekf_dayf_monthf_year秒、分、时、星期、日、月、年的闪烁标志sbitbeep=P24闹铃引脚voidT_init(void)定时器初始化TMOD=0 x11定时器0、1定时都工作在方式1TH0=0 x0D8定时时间:10msTL0=0 x0F0TH1=0 x3cTL1=0 x0b0EA=1开总中断ET0=1定时器0允许ET1=1TR0=0打开定时器0TR1=0voidt0(void)interrupt1using0定时器0中断服务子程序TH0=0 x0D8定时时间:10msTL0=0 x0F0T_ms+基于单片机的多功能电子钟-23-if(T_ms99)T_ms=0T_sec+if(T_sec59)T_sec=0T_min+voidt1(void)interrupt3using1TH1=0 x3c50ms定时TL1=0 x0b0timecount+if(timecount9)timecount=0flag=flagvoidscan(void)调整函数switch(count)case1:f_hour=1breakcase2:f_hour=0f_min=1breakcase3:f_min=0f_year=1breakcase4:f_year=0f_month=1breakcase5:f_month=0f_day=1基于单片机的多功能电子钟-24-breakcase6:f_day=0f_week=1breakdefault:f_sec=0f_min=0f_hour=0f_week=0f_day=0f_month=0f_year=0breakswitch结束液晶显示voiddisp_time(void)sec=bcdtodec(uc_R1302(0 x81)读出DS1302中的秒min=bcdtodec(uc_R1302(0 x83)读出DS1302中的分hour=bcdtodec(uc_R1302(0 x85)读出DS1302中的小时day=bcdtodec(uc_R1302(0 x87)读出DS1302中的日month=bcdtodec(uc_R1302(0 x89)读出DS1302中的月week=bcdtodec(uc_R1302(0 x8b)读出DS1302中的星期year=bcdtodec(uc_R1302(0 x8d)读出DS1302中的年if(f_hour=1flag=1)时闪烁标志位L1602_char(250 x20)L1602_char(260 x20)elseL1602_char(25hour10%10+0 x30)L1602_char(26hour%10+0 x30)if(f_min=1flag=1)分闪烁标志位L1602_char(280 x20)L1602_char(290 x20)基于单片机的多功能电子钟-25-elseL1602_char(28min10%10+0 x30)L1602_char(29min%10+0 x30)L1602_char(211sec10%10+0 x30)L1602_char(212sec%10+0 x30)if(f_year=1flag=1)年闪烁标志位L1602_char(130 x20)L1602_char(140 x20)else正常显示L1602_char(13year10%10+0 x30)L1602_char(14year%10+0 x30)if(f_month=1flag=1)月闪烁标志位L1602_char(160 x20)L1602_char(170 x20)else正常显示L1602_char(16month10%10+0 x30)L1602_char(17month%10+0 x30)if(f_day=1flag=1)日闪烁标志位L1602_char(190 x20)L1602_char(1100 x20)else正常显示L1602_char(19day10%10+0 x30)L1602_char(110day%10+0 x30)if(f_week=1flag=1)星期闪烁标志位基于单片机的多功能电子钟-26-L1602_char(1160 x20)else正常显示L1602_char(116week%10+0 x30)voidmain(void)T_init()L1602_init()L1602_string(1120-Week)L1602_string(25:)1234567890123456Write_DS1302Init()加了备份电池,第二次下载就可以将其注释了model=0while(1)while(model=0)时钟显示L1602_char(2160)scan()disp_time()key_scan()if(key=10)key=0 xffcount=1model=1TR1=1if(min=59sec50)if(

温馨提示

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

评论

0/150

提交评论