单片机数字闹钟的设计毕业报告.docx_第1页
单片机数字闹钟的设计毕业报告.docx_第2页
单片机数字闹钟的设计毕业报告.docx_第3页
单片机数字闹钟的设计毕业报告.docx_第4页
单片机数字闹钟的设计毕业报告.docx_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计报告课题:单片机数字闹钟的设计系 部 电气工程系 专 业 电气自动化 班 级 姓 名 学 号 指导老师 目 录摘要II第一章 绪论- 1 -1.1 单片机的发展史21.2 单片机的发展趋势21.3 单片机的应用2第二章 整体设计方案22.1 单片机的选择22.2 DS1302芯片2第三章 PROTEL硬件开发软件23.1 protel软件组成23.2 PCB板设计2第四章 数字钟的硬件设计24.1单片机电路24.2时钟电路24.3液晶屏显示电路24.4键盘驱动电路24.5闹铃电路24.6电源电路2第五章软件设计25.1系统软件设计流程图25.2时间调整程序设计25.3 主程序2第六章调试与功能说明26.1硬件调试26.2系统时钟误差分析26.3软件调试问题及解决2结束语2参考文献2附录2摘要纵观当今,随着科技的发展,各种自动化设备的发展突飞猛进,单片机担任着不可或缺的重任。而单片机的特殊结构形式,在某些领域中,它承担了大中型计算机和通用的微型计算机无法完成的一些工作。使其具有很多显著的优点和特点,因此在各个领域中都得到了迅猛的发展。它是控制中心和设备之间的桥梁;它可对光、热、电、力、速度等各种物理量进行采集,处理合成各种电信号送到控制中心进行处理,从而实现了自动化控制。现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式机械钟。在这次设计中,我采用液晶屏电路显示时、分、秒,以24小时计时方式。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。数字闹钟其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。本文从硬件电路到单片机控制器再到微处理器程序进行了一系列的设计,最终将各模块整合到Proteus中进行仿真,最终在Proteus中仿真的结果令人满意本数字闹钟可实现如下功能:1、采用数字显示,外形美观、大方,显示醒目、直观。2、秒、分钟及小时的显示,计时准确,每年的时间误差小于一分钟。3、可显示星期,不得有误差。关键字:单片机 数字闹钟 汇编语言II江苏信息职业技术学院毕业设计报告第一章 绪论1.1 单片机的发展史 1974年,美国仙童(Firchild)公司研制的世界第一台单片微型机F8。该机有两块集成电路芯片组成,结构奇特,具有与众不同的指令系统,深受民用电器和仪器仪表领域的欢迎和重视.从此,单片机开始迅速发展,应用领域也在不断扩大.现已成为微型计算机的重要分支,单片机的发展过程通常可以分为一下几个发展过程.(1)第一代单片机(1974-1976):这是单片机发展的起步阶段.在这个时期生产的单片机特点是,制造工艺落后和集成度低,而且采用了双片形式.典型的代表产品有Fairchild公司的F8和Mostek387公司的3870等.(2)第二代单片机(1976-1978):这是单片机的第二发展阶段.这个时代生产的单片机随眼已能在单块芯片内集成CPU,并行口,定时器,RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广,典型的产品有Inrel公司的MCS-48系列机.(3)第三代单片机(1979-1982):这是八位单片机成熟的阶段.这一代单片机和前两代相比,不仅存储容量和寻址范围大,而且中断源,并行I/O口和定时器/计数器个数都有了不同程度的增加,更有甚者是新集成了全双工穿行通信接口电路.在指令系统方面,普遍增设了惩处法和比较指令.这一时期生产的单片机品种齐全,可以满足各种不同领域的需要.代表产品有Intel公司的MCS-51系列机,Motorola公司的MC6801系列机,TI公司的TMS7000系列机,此外,Rockwell,NS,GI和日本松下等公司也先后生产了自己的单片机系列.(4)第四代单片机(1983年以后):这是十六位单片机和八位高性能单片机并行发展的时代,十六位机的特点是,工艺先进,集成度高和内部功能强,加法运算速度可达到1us以上,而且允许用户采用面向工业控制的专用语言,如PL/MPLUSC和Forth语言等.代便产品有intel公司的MCS-96系列,TI公司的TMS9900,NEC公司的783系列和NS公司的HPC16040等. 然而,由于十六位单片机价格比较贵,销售量不大,大量应用领域需要的是高性能,大容量和多功能新型八位单片机.这些单片机有Intel公司的88044(双CPU工作),Zilog公司的Super8(含DMA通道),Motorola公司的MC68CH11(内含E2prom及A/D电路)和WDC公司的65C124(内含网络接口电路),等等.目前,八位高性能单片机以成为主流,单片机发展具体体现在以下几个方面:1.CPU功能增强;2.内部资源增多;3.引脚的多功能化;4.低电压低功耗1.2 单片机的发展趋势目前,单片机正朝着高性能和多品种方向发展,其发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势:(1) CMOS化CMOS电路的特点是低功耗、高密度、低速度、低价格。采用双极型半导体工艺的TTL电路速度快,但功耗和芯片面积较大。随着技术和工艺水平的提高,又出现了HMOS(高密度、高速度MOS)、CHMOS工艺以及CHMOS和HMOS工艺的结合。目前生产的CHMOS电路已达到LSTTL的速度,传输延迟时间小于2ns,它的综合优势已大于TTL电路。因而,在单片机领域,CMOS电路正在逐渐取代TTL电路。(2) 低功耗化单片机的功耗已从Ma级,甚至1uA以下;使用电压在36V之间,完全适应电池工作。低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。(3) 低电压化几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在36V范围内工作。低电压供电的单片机电源下限已可达12V。目前0.8V供电的单片机已经问世。(4) 低噪声与高可靠性为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术措施。5) 大容量化以往单片机内的ROM为1KB4KB,RAM为64128B。但在需要复杂控制的场合,该存储容量是不够的,必须进行外接扩充。为了适应这种领域的要求,须运用新的工艺,使片内存储器大容量化。目前,单片机内ROM最大可达64KB,RAM最大为2KB。(6) 高性能化主要是指进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。现指令速度最高者已达100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能。这类单片机的运算速度比标准的单片机高出10倍以上。由于这类单片机有极高的指令速度,就可以用软件模拟其I/O功能,由此引入了虚拟外设的新概念。随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将列强。在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、NEC、ATMEL、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。1.3 单片机的应用近几年,单片机在各个领域得到广泛的应用。从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。在它问世之前,自动控制设备不能被广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。在第一台微处理器成功研制不久,第一个单片机就问世了。因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。今天,单片机成为了解决低复杂度,中等复杂度控制问题的传统选择。数字时钟系统可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机ATc89c52。第二章 整体设计方案2.1 单片机的选择单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。1、采用STC89C52单片机作为主控芯片,实现数字钟表主控功能。2、采用液晶屏显示当前年、月、日、时、分、秒,闹铃时间及状态等信息。3、采用六键键盘设定时间初始值,具体方法是按时间设定键依次进入年、月、日、时、分、秒设定状态,然后通过向上、向下键修改设定值。正在设定的变量以闪烁状态突出显示。4、采用六键键盘设定闹铃时间,具体方法是按闹铃设定键依次进入时、分设定状态,然后通过向上、向下键修改设定值。正在设定的变量以闪烁状态突出显示。5、采用DS1302实时时钟芯片完成后台计时功能,要求具有后备电源,即使主电源掉电时间仍然保持运行。6、可设定闹铃使能,具体方法是按闹铃使能键,按一次打开,再按一次关闭。闹铃使能关闭时不报警。 7、当闹铃使能打开,且当前时间到达闹铃设置时间,则蜂鸣器和LED红灯同时报警,如不按取消键,报警时间为1分钟。报警状态可以通过按取消键退出。8、系统通过USB电源供电,单片机程序也可通过USB线串行下载。2.2 DS1302芯片(1) DS1302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位RAM;最少引脚的串行I/O;2.55.5V电压工作范围;2.5V时耗电小于300nA; 高精度实时时钟芯片24小时误差不超过2秒;用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至Vcc1)的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h格式。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中Vcc1连接到备份电,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。(2) DS1302数据操作原理 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输出。无论是读周期还是写周期,开始8位指定40存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的始终周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字数。 如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc 2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图1所示。图2-1 DS1302引脚图及内部结构DS1302的引脚功能如表1所示。表1 DS1302引脚功能引脚号引脚名称功能1Vcc2主电源2,3X1,X2震荡源,外接32.768kHz晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行数据输入端8Vcc1后备电源DS1302的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为0。则不能把数据写入到DS1302中。位6如果为0则表示存取日历时钟数据;为1表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。图2-2 DS1302的控制字DS1302的读写时序如图3所示。为了提高对32个地址的寻址能力(地址/命令位15 = 逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每一字都将传送至RAM。图2-3 DS1302数据读/写时序DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2,其中奇数为读操作,偶数为写操作。表2 内部寄存器地址和内容寄存器名命令字节取值范围寄存器内容写读76543210秒寄存器80H81H0059CH10sSEC分寄存器82H83H0059010minMIN小时寄存器84H85H0023或011212/24010A/PHRHR日期寄存器86H87H0128,29,30,310010DATEDATE月份寄存器88H89H011200010MMONTH周寄存器8AH8BH010700000DAY年寄存器8CH8DH009910YEARYEAR时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式。通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5是AM/PM位,此位是高电平时表示PM,低电平表示AM。在24小时方式下,位5为第二个10小时位(2023h)。 DS1302的晶振选用32.768kHz,电容推荐值为6pF,因为振荡频率较低,也可以不接电容,对记时精度影响不大。第三章 Protel硬件开发软件Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个实用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基础上Protel 99SE又增加了一些新的功能,用户使用更加方便灵活。Protel的功能十分强大,在电子电路设计领域占有极其重要的地位。它以其强大功能和实用性,逐渐获得广大硬件设计人员的青睐,是目前众多EDA设计软件中用户最多的产品之一。3.1 Protel软件组成Protel软件主要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有强大的功能,可以很好的实现电路设计与分析。(1) 原理图设计模块(Schematic模块)电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完成的。Schematic模块具有如下功能:丰富而灵活的编辑功能、在线库编辑及完善的库管理功能、强大的设计自动化功能、支持层次化设计功能等。 (2) 印制电路板设计模块(PCB设计模块)印制电路板(PCB)制板图是由电路原理图到制作电路板的桥梁。设计了电路原理图后,需要根据原理图生设计成印制电路板的制板图,然后在根据制板图制作具体的电路板。印制电路板设计模块具有如下主要功能和特点:可完成复杂印制电路板(PCB)的设计;方便而又灵活的编辑功能;强大的设计自动化功能;在线式库编辑及完善的库管理;完备的输出系统等。(3) 电路信号仿真模块电路信号仿真模块是一个功能强大的数字/模拟混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。它运行在Protel的EDA/Client集成环境下,与Protel Advanced Schematic原理图输入程序协同工作,作为Advanced Schematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。在Protel中进行仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上激励源,然后单击防真按钮即可自动开始。3.2 PCB板设计(1) 定元件的封装 打开网络表(可以利用一些编辑器辅助编辑),将所有封装浏览一遍,确保所有元件的封装都正确无误并且元件库中包含所有元件的封装,网络表中所有信息全部大写,一面载入出问题,或PCB BOM不连续。 标准元件全部采用公司统一元件库中的封装。 元件库中不存在的封装,应自己建立元器件库。(2) 建立PCB板框 根据PCB结构图,或相应的模板建立PCB文件,包括安装孔、禁布区等相关信息。 尺寸标注。在钻孔层中应标明PCB的精确结构,且不可以形成封闭尺寸标注。(3) 载入网络表 载入网表并排除所有载入问题,具体请看PROTEL技术大全。其他软件载入问题有很多相似之处,可以借鉴。 如果使用PROTEL,网表须载入两次以上(没有任何提示信息)才可以确认载入无误。(4) 布局 首先要确定参考点。一般参考点都设置在左边和底边的边框线的交点(或延长线的交点)上或印制板的插件的第一个焊盘。 一但参考点确定以后,元件布局、布线均以此参考点为准。布局推荐使用25MIL网格。 根据要求先将所有有定位要求的元件固定并锁定。 布局的基本原则 A. 遵循先难后易、先大后小的原则。B. 布局可以参考硬件工程师提供的原理图和大致的布局,根据信号流向规律放置主要原器件。C. 总的连线尽可能的短,关键信号线最短。D. 强信号、弱信号、高电压信号和弱电压信号要完全分开。E. 高频元件间隔要充分。F. 模拟信号、数字信号分开。 相同结构电路部分应尽可能采取对称布局。 按照均匀分布、重心平衡、版面美观的标准来优化布局。图3-1PCB安装图第四章 数字钟的硬件设计最小系统设计 单片机的最小系统是由电源ND20接地端工作电压为5V,另有AT89LV51工作电压则是2.7-6V.(1) STC89C52 单片机概述STC89C52系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。(2) STC89C52 单片机特点增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;工作电压: 5.5V - 3.5V(5V单片机);工作频率范围:040MHz,相当于普通8051的 080MHz;用户应用程序空间 4K/8K/16k/32K/64K字节;片上集成1280字节 RAM;通用I/O口(32/36个),复位后为准双向口/弱上拉(普通8051传统I/O口);ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器。每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;有EEPROM功能;看门狗;内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);时钟源:外部高精度晶体/时钟,内部R/C振荡器;用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟;常温下内部R/C 振荡器频率为:5.0V 单片机为: 11MHz 17MHz;共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;外部中断I/O口4路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤醒;通用全双工异步串行口(UART) ;工作温度范围:-40 +85(工业级) / 0 75(商业级) ;封装:PDIP-40, PLCC-44。 (3) STC89C52 单片机管脚及封装STC89C52 单片机有多种封装形式,本设计中选用40DIP封装,其管脚定义如图4所示。其最小应用系统如图5所示。图4-1 STC89C52 管脚图4.1单片机电路 如图10所示,单片机采用STC89C52芯片,电路采用11.0592MHz外部无源晶体,振荡电容采用20pF。复位电路采用10uF(C1)电容和10K(R2)组成的阻容复位电路。图4-2 单片机电路 单片机管脚连接标号中,P00P07为液晶屏数据线,P25P27为液晶屏控制线。标号RxD和TxD是单片机的异步串行通信引脚,用于单片机程序的ISP下载。单片机数字闹钟硬件框图如图9所示 图4-3 硬件框图其中DS1302完成计时功能,单片机主控芯片读取DS1302的时间数据,在液晶屏上显示出来。用户可以通过按键设定时间初始值、闹铃初始值等。主电源和备份电源给各芯片供电。4.2时钟电路 单片机的时钟电路由振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。时钟电路是单片机系统的心脏,它控制着单片机的工作节奏。本设计采用内部时钟方式,12MHz的石英晶体振荡器。DS1302时钟电路如图11所示,其中BT1是后备电池,以保证在主电源掉电时时钟依然运行。Y2是时钟晶振,因为频率较低,故可以不加电容。R10R12为上拉电阻。DS1302通过SCLK、I/O和RST管脚和单片机相连。图4-4 DS1302时钟电路4.3液晶屏显示电路显示部分采用SMC 1602液晶屏进行数据显示,其主要技术参数为:表2 液晶屏技术指标接口信号说明如表4所示。表3液晶屏接口信号说明图4-6 LCD与单片机接口电路4.4键盘驱动电路键盘驱动电路如图14所示。图4-7 键盘驱动程序电路使用与单片机管脚直接相连的按键实现键盘。当按键按下时管脚为低电平,无按键时为高电平。单片机采用查询方式获取按键信息。4.5闹铃电路图4-8 闹铃电路 闹铃电路由单片机管脚驱动蜂鸣器和报警灯实现,当闹铃时间到时,蜂鸣器鸣响,红灯报警。4.6电源电路本设计采用USB接口供电,电源电压5V。同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。其电路原理如图所示。图4-9 供电及程序下载电路第五章软件设计系统的软件设计也是工具系统功能的设计单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性5.1系统软件设计流程图这次的数字闹钟钟设计用到很多子程序,它们的流程图如下所示主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间本设计软件流程如图17所示。图5-1软件流程图5.2时间调整程序设计调整时间用4个调整按纽,1个作为移位、控制用,另外2个作为加个减用,分别定义为时间设置按纽、加按纽、减按纽。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定时间熄灭一次,比如说50ms。利用定时器记时,当到达50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。5.3 主程序程序源代码子程序见附录第六章调试与功能说明单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。6.1硬件调试拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。6.2系统时钟误差分析时间是一个基本物理量,具有连续、自动流逝、不重复等特性。我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。本次设计的单片机数字闹钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。6.3软件调试问题及解决软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。软件调试可以采取离线调试和在线调试两种方式。前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。提供例程在uVision4环境下编译,如果是其他版本uVision,只需将所有.c和.h文件拷贝至新建项目,重新编译即可。当编译生成.hex文件后,就可以下载并进行调试了。(1)USB转串口驱动安装打开USB驱动文件夹下的PL2303_Prolific_DriverInstaller_v130.exe安装文件,按提示安装USB转串口驱动程序。安装完成后,插入USB下载线后,在开始-控制面板-打印机和其他硬件-设备管理器,在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口号,如果没有说明USB转串口驱动没有安装,须重新安装。记住括号里的COM口号。图6-1成功安装USB转串口驱动示意图下载程序打开STC单片机下载软件文件夹,点击运行STC_ISP_V481.exe程序,出现如下界面。图6-2下载软件正确选择MCU 类型为STC89C52,COM口(与刚才安装的COM号一致),最高波特率和最低波特率选择高速,如果不成功则尝试降低拨特率,并打开正确的.hex数据文件。 Chinese:连接失败,请尝试以下操作: 1.在单片机停电状态下,点下载按钮,再给单片机上电 2.停止下载,重新选择 RS-232 串口, 接好电缆 3.可能需要先将 P1.0/P1.1 短接到地 4.可能外部时钟未接 5.因 PLCC、PQFP 转换座引线过长而引起时钟不振荡,请 调整参数 6.可能要升级电脑端的 STC ISP.exe 软件 7.若仍然不成功,可能 MCU/单片机内无 ISP 系统引导码, 或需退回升级,或 MCU 已损坏 8.若使用 USB 转 RS-232 串口线下载,可能会遇到不兼容 的问题,可以让我们帮助购买兼容的 USB 转 RS-232 串口线 仍在连接中, 请给 MCU 上电.按下电路板上的电源按纽,保证其有个失电至上电的过程,则窗口烧录芯片。运行下载完成后程序自动运行,或重上电后程序正常运行,图6-1上电运行图结束语基于单片机技术数字闹钟的实现不是一个新兴的课题,但是对我来讲,几个月来忙碌紧张而又有条不紊的毕业设计,使我有机会对本专业的基本理论、专业知识和基本技术有了更深入的了解和体会,使我在三年中所学到的知识得到了系统和升华,真正达到了学以致用, 特别是对单片机原理及接口技术有了深深的体会。本毕业设计工作所取得的结论主要有以下几个方面:(1)在对数字时钟系统开发之前,必须了解该系统的特点、适用范围以及使用者需要一个什么样的系统,以此作为基础为开发系统准确定位,然后对使用者所需实现的功能进行分析总结,根据使用者的实际要求来给系统设计一个初步方案。数字时钟系统的开发不仅是要实现对时间的正确显示,而且要考虑数字时钟系统是否具有控制功能,操作者是否可以对其进行调整,保证时间的正常运行。同时也要考虑是否具有扩展功能,以便日后满足使用者更多的功能需求。(2)程序设计的基础是明确思路绘制流程图,但设计的最主要的工作是编程。汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。因此选择用汇编语言编制系统程序。源程序的编写是一个繁琐的过程,很容易产生错误。因此要结合程序编译调试,在编写过程中,对每一个模块进行编译调试,如果有问题再进行修改,以确保每个模块的正确性,从而提高整体编译调试成功的可能性。对于每一个模块,除了编译调试,如果可以用硬件电路仿真则要进行仿真,以便直观地观察程序的运行情况,如有错误很容易就能发现。程序中任何一个小的错误都可能造成系统无法正常运作,因此必须保证每一个语句都准确无误。参考文献1陈 宁. 单片机技术应用基础M. 南京:南京信息职业技术学院, 20052顾永杰.电工电子技术实训教程.上海:上海交通大学出版社,1999 3陈小虎.电工实习(I).北京:中国电力出版社,1996 4康华光.电子技术基础.数字部分北京:高等教育出版社,2000 5陈坚.电力电子学M.北京:高等教育出版社,2002 6王法能. 单片机原理及应用M. 科学出版社,2004 7高吉祥.电子技术基础实验与课程设计.电子工业出版社,2002 8吕思忠.数子电路实验与课程设计.哈尔滨工业大学出版社,2001 9谢自美.电子线路设计、实验、测试.华中理工大学出版社,2000 10 杨子文. 单片机原理及应用M. 西安电子科技大学出版社2006 11李群芳等单片微型计算机机与接口技术M北京:电子工业出版社, 2001 12张毅刚新编MCS-51单片机应用设计M哈尔滨:哈尔滨工业大学出版社, 2003 13 朱定华等单片微机原理与应用M北京: 北京清华大学出版社, 14 周润景,袁伟亭,景晓松Proteus在MCS-51&ARM7系统中的应用百例M.北京:电子工业出版社,2006附录程序源代码#include #include #include 1602.h#include DS1302.h#define AMHOURADDR 0xC0 /存闹铃时的地址#define AMMINUTEADDR 0xC2 /存闹铃分的地址#define AMENADDR 0xC4 /存闹钟使能标志的地址/定义管脚sbit Led_Alarm=P21;/报警灯sbit Beep_Alarm=P20; /蜂鸣器sbit Key_TMSet = P32; /时间设置sbit Key_AMSet = P33;/闹铃设置sbit Key_Up = P34;/上调sbit Key_Down = P35;/下调sbit Key_AMEn = P36;/闹铃开关sbit Key_Review = P37;/查看/定义标识volatile bit FlagKeyPress = 0; /有键按下标志volatile bit FlagShow = 0; /显示标志volatile bit FlagTMSet = 0; /时间设置状态标志volatile bit FlagAMSet = 0; /闹铃设置状态标志volatile bit FlagAMEn = 0; /闹铃使能标志,0为闹铃不使能,1为闹铃使能volatile bit FlagAlarm = 0; /闹铃状态标志/按键响应用变量uchar keyvalue,keyTMSet,keyAMSet,keyUp,keyDown,keySet,keyAMEn,keyReview;/DS1302时钟用变量SYSTEMTIME CurrentTime;uchar year, month, day, hour, minute, second;uchar AMhour, AMminute,AMStart;/报警及存储用变量/char * pSave;/字符串显示用变量uchar str16 = 000000;uchar Date9=00-00-00, Time9=00:00:00;uchar hide, SetNum;uint Counter;/函数声明void int2str(int x, char* str);void Delay1ms(unsigned int count);void Data_Init();void Timer0_Init();void Timer0_ISR () ;void KeyProcess(uint num);子程序#include #ifndef _REAL_TIMER_DS1302_2003_7_21_#define _REAL_TIMER_DS1302_2003_7_21_sbit DS1302_CLK = P14; /实时时钟时钟线引脚 sbit DS1302_IO = P15; /实时时钟数据线引脚 sbit DS1302_RST = P16; /实时时钟复位线引脚sbit ACC0 = ACC0;sbit ACC7 = ACC7;typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString9;unsigned char TimeString9;SYSTEMTIME;/定义的时间类型#define AM(X)X#define PM(X)(X+12) / 转成24小时制#define DS1302_SECOND0x80#define DS1302_MINUTE0x82#define DS1302_HOUR0x84 #define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH0x88#define DS1302_YEAR0x8C#define DS1302_RAM(X)(0xC0+(X)*2) /用于计算 DS1302_RAM 地址的宏 void DS1302InputByte(unsigned char d); /实时时钟写入一字节(内部函数)unsigned char DS1302OutputByte(void); /实时时钟读取一字节(内部函数)void Write1302(unsigned char ucAddr, unsigned char ucDa);/ucAddr: DS1302地址, ucData: 要写的数据unsigned char Read1302(unsigned char ucAddr);/读取DS1302某地址的数据void DS1302_SetProtect(bit flag); /是否写保护void DS1302_SetTime(unsigned char Address, unsigned char Value); / 设置时间函数void DS1302_GetTime(SYSTEMTIME *Time);void DateToStr(SYSTEMTIME *Time);void TimeToStr(SYSTEMTIME *Time);void Initial_DS1302(void);#endif#include DS1302.hvoid DS1302InputByte(unsigned char d) /实时时钟写入一字节(内部函数) unsigned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void W

温馨提示

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

评论

0/150

提交评论