[理学]多功能电子秒表设计与制作 毕业设计.doc
厦门理工学院毕业设计(论文) 毕 业 设 计中文题目 多功能电子秒表设计与制作英文题目 The design and realization of multi-functional electronic stopwatch2011年 5月21日 V摘要毕业设计(论文)诚信声明书本人郑重声明:在毕业设计(论文)工作中严格遵守学校有关规定,恪守学术规范;我所提交的毕业设计(论文)是本人在 指导教师的指导下独立研究、撰写的成果,设计(论文)中所引用他人的文字、研究成果,均已在设计(论文)中加以说明;在本人的毕业设计(论文)中未剽窃、抄袭他人的学术观点、思想和成果,未篡改实验数据。本设计(论文)和资料若有不实之处,本人愿承担一切相关责任。学生签名:年 月 日 摘 要 本设计的电子秒表系统采用STC-89C52RC单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器和单总线温度计DS1820。另外硬件部分设置了存储和查看按键,可以对秒表上一次计时时间进行保存,供使用者查询。将软、硬件有机地结合起来,使得系统能够实现计时,测温度,存储数据和查看数据,设置超设值。能正确地进行计时,同时能记录3次时间。其中软件系统采用汇编语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在WAVE中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。本设计主要特点功能多并且计时精度达到0.01s,解决了传统的由于计时精度不够造成的误差和不公平性。关键词: 单片机,秒表,记录目录Abstract The design of electronic systems using STC-89C52RC stopwatch as the center of the device microcontroller,its timer / counter timing and counting principles,With display circuit, LED digital tubes, and external interrupt circuit to design a single timer and thermometer DS1820 bus. Another set of hardware store and view buttons, the last time the stopwatch can save time for user queries.The hardware and software organically combine to make the system to achieve timing, measuring temperature, storage of data and view data, set over set value. Can be correctly timed, and can record three hours. One software system written in assembly language programs, including display program, interrupt service, external interrupt, delay procedures, and WAVE in the commissioning, the hardware system used to implement powerful PROTEUS, a simple cut easy to observe, in simulation can be observed in actual working condition. The main features of multi-function design and timing accuracy of 0.01s, to solve the traditional result of a lack of accuracy because of timing errors and unfairness.Key words: microcontroller, stopwatch, record 目 录1 绪论.11.1 课题背景及目的.11.2 课题研究内容和意义.22 概述. . .32.1外部中断模块. . .5 2.2定时器中断模块. . .62.3数码管显示模块. . .82.4 DS1820 单总线数字温度计. .93 系统的设计与实现.123.1硬件设计与分析. .12 3.11 单片机的选择. . . . .12 3.12 LED显示器接口原理. . . . . . . . .15 3.13 按键输入. . . . . . . . . . .19 3.2软件设计与分析. . .20 3.2.1软件设计概述. .20 3.2.2程序流程图. .21 3.2.3子程序模块设计. . .224 系统测试.25 4.1 安装软件.254.2 原理图. 254.3 所需工具及电子元件.274.4 焊接.274.5 软件测试与硬件测试.28 4.5.1软件调试. . . .29 4.5.2硬件调试. . . . . . .324.6系统时钟误差分析.33总结与展望. .34致谢. 35参考文献. 36附录. . . . . . . . . . . .37第1章 绪论第1章 绪 论1.1课题背景及目的自首届现代奥运会在雅典举办以来,奥运会计时技术一直在不断地向前发展。一百多年过去了,首届现代奥运会上计时所用的跑表如今换成了一系列高科技计时装置,如高速数码摄像机、电子触摸垫、红外光束、无线应答器等等。鉴于当今计时技术的快速发展,即使千分之一秒的毫微差距,也决定着冠军的归属。在现代的体育竞技比赛中,随着运动员水平的不断提高,差距也在不断缩小。有些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此就需要高精度的秒表来记录成绩。北京时间2008年8月16日,北京奥运会田径比赛进入第二日的争夺。在举世瞩目的男子百米飞人大战中,博尔特以惊人的9秒69获得冠军,并且打破了由他自己保持的世界纪录!特立尼达和多巴哥选手汤普森以9秒89排名第二,美国人迪克斯获得第三,成绩为9秒91。如此细微的差距,即使重新用经典超慢镜头回放,也难以分辨。单片机控制的多功能秒表系统的出现,解决了传统的由于人为因素造成的误差和不公平性。此精确的秒表是基于石英晶体有规则振动而制造的,这种时钟的误差每天不大于千分之一秒。单片机目前在全世界迅速得到了推广应用,它具有集成度高、功能强、通用性好,特别是它具有体积小、重量轻、能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等的独特优点。目前各种传感器、变送器、控制仪表已普遍采用单片机应用系统。单片机构成的智能仪表能使仪表具有数字化、智能化、多功能化、综合化、柔和化等优点,赋予测量仪表以崭新的面貌,使传统的仪器、仪表发生根本性的变革,它代表了仪器仪表的发展趋势本次设计的目的就是让学生在理论学习的基础上,通过完成一个涉及单片机应用并具有多种功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、原理图等方面的知识有进一步的加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。1.2 课题研究内容和意义本课题的研究内容主要采用STC-89C52RC作微型控制器,采用8位LED数码管显示时、分、秒和毫秒,以24小时方式计时,显示时间范围为0.01秒24小时,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。用两个按键K0和K1来控制秒表功能的实现,启动K0键开始计时,重复按下K0键计时停止,K1键复位。主要功能即是键K0和K1控制秒表计时的启动、停止和清零。本课题的意义在于:把理论学习和实验阶段所掌握的知识通过一个设计实例,经历一次理论和实践结合、软件和硬件结合的综合训练,也是一次工程实践能力的检验。2第2章 概述第2章 概述 多功能秒表系统分为3大模块:外部中断模块、定时器中断模块和数码管显示模块。编程时置K0键为“启动/停止”,置K1键为“清零”,在处理按键值时采用外部中断,转至相应的外部中断处理程序,K0键对应外部中断0,入口地址为0003H;K1键对应外部中断1,入口地址为0013H。定时器中断模块采用定时器T0方式1中断,每10ms中断一次,毫秒计数单元33H加1,当记满100次时,毫秒计数单元清零,秒计数单元32H加1,当记满60次时,秒计数单元清零,分计数单元31H加1,当记满60次时,分计数单元清零,时计数单元30H加1,当记满24次时,时计数单元清零。8位LED显示的数据由显示缓冲区30H33H单元中的数据决定,以动态显示方式实现秒表计时显示。P0口输出的数据作为显示的段码。P2口输出的数据作为8个LED的位选信号。如图2.1为主程序设计流程图:主程序先开始,然后初始化,接着不断调用显示子程序来显示秒表的时间,同时不断调用定时器T0中断子程序对时间进行计数,一旦有按键按下,就跳至相应中断服务程序。 初始化调用显示子程序K0键按下下?键建K1键按下下?键建调用T0中断子程 序调用外部中断0子程序WAIINT0调用外部中断1子程序WAIINT1YNN开始 图2.1 主程序设计流程图2.1 外部中断模块在这里,我们有必要介绍一下单片机的中断系统,以利于我们的学习。中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以应对突发事件处理。所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这时CPU暂停当前执行的程序A,立即转去执行处理事件B的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。关于中断的概念有下列几个名词:(1)程序A称为主程序,(2)处理事件B的程序称为中断服务程序,(3)主程序中转向中断服务程序的地方称为断点,(4)引起中断的原因即事件B称为中断源,(5)转去执行中断服务程序称为中断响应。关于中断的概念可以打个如下的比喻。领导(CPU)在自己的房间办公(执行主程序),下属(外设)有问题打电话来请示(中断源),领导停下正在进行的工作,通过电话给下属做指示(执行中断服务程序),指示完后,领导挂断电话,继续做自己的工作(返回主程序继续执行)。中断是一个过程,当中央处理器CPU在处理某件事情时,外部又发生了另一紧急事件,请求CPU暂停当前的工作而去迅速处理该紧急事件。处理结束后,再回到原来被中断的地方,继续原来的工作。引起中断的原因或发出中断请求的来源,称为中断源。单片机一般允许有多个中断源,当几个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断请求源的问题(优先级问题),一般根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求,于是便规定每一个中断源都有一个中断优先级别,并且CPU总是响应级别最高的中断请求。当CPU正在处理一个中断源请求的时候,又发生了另一个优先级比它高的中断源请求,如果CPU能够暂时中止对原来中断处理程序的执行,转而去处理优先级更高的中断源请求,待处理完以后,再继续执行原来的低级中断处理程序,这样的过程称为中断嵌套。本设计中,当按键K0或K1有按下(中断源)时,程序转向断点中去执行相应的中断服务程序。如图2.2为两外部中断服务子程序流程图:返回TR0求反,启动/停止定时器0工作子程序入口 返回时分秒毫秒单元清零,并停止定时器0工作子程序入口 (a)外部中断0子程序流程图 (b) 外部中断1子程序流程图 图2.2 外部中断服务子程序流程图 2.2 定时器中断模块 定时器/计数器的方式控制寄存器TMOD是一种可编程的特殊功能寄存器,字节地址为89H,不可位寻址。其中低4位控制T0,高四位控制T1,其格式如图2.3所示。图 2.3 定时器/计数器的方式控制寄存器TMOD格式方式寄存器TMOD中M1M0=01时,定时器T0工作于方式1,TL1、TH1全部使用,构成16位计数器。逻辑结构如图2.4所示。图2.4 定时器/计数器方式1逻辑结构框图 本设计晶振采用12MHZ,机器周期为10-6s,若每隔10ms定时器T0中断一次,记满100次就是1s,在初始化过程中,置定时初值为X, 则(216X)×10-6=10×10-3,X=55536=D8F0H。图2.5所示为定时器T0中断子程序DINGSHIT0流程图,T0每隔10ms中断一次,毫秒计数单元33H加1,当记满100次时,毫秒计数单元清零,秒计数单元32H加1,当记满60次时,秒计数单元清零,分计数单元31H加1,当记满60次时,分计数单元清零,时计数单元30H加1,当记满24次时,时计数单元清零。中断入口保护现场10ms到了33H单元加1重置定时器初值TH0=0D8HTL0,=0F0H秒计数单元加1毫秒计数单元清0100次到?否?YN恢复现场60秒到?否?秒计数单元清0YN分计数单元加124时到?否?分计数单元清0NY调用显示子程序中断返回60分到?否?分计数单元清0时计数单元加1N图2.5 定时器T0中断子程序DINGSHIT0流程图48第2章 概述 2.3数码管显示模块 此设计用动态显示原理,动态原理在后面的章节会介绍。下图2.6所示为显示子程序CLOCK流程图:子程序入口调用延时子程序选通显示分钟个位的数码管引 脚分钟个位对应的断码送P0口并在数码管上显示出 来选通显示分钟十位的数码管引 脚分钟十位对应的断码送P0口并在数码管上显示出 来选通显示秒钟十位的数码管引 脚秒钟十位对应的断码送P0口并在数码管上显示出 来选通显示时钟个位的数码管引 脚时钟个位对应的断码送P0口并在数码管上显示出 来选通显示秒钟个位的数码管引 脚秒钟个位对应的断码送P0口并在数码管上显示出 来选通显示毫秒百位的数码管引 脚毫秒百位对应的断码送P0口并在数码管上显示出 来选通显示时钟十位的数码管引 脚时钟十位对应的断码送P0口并在数码管上显示出 来选通显示毫秒十位的数码管引 脚毫秒十位对应的断码送P0口并在数码管上显示出 来图2.6 显示子程序流程图2.4 DS1820 单总线数字温度计2.4.1 单总线数字温度计一般说明DS1820 数字温度计提供9 位温度读数,指示器件的温度.信息经过单线接口送入DS1820 或从DS1820, 送出因此从中央处理器到DS1820仅需连接一条线(和地)读写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。因为每一个DS1820 有唯一的系列号(silicon serial number ),因此多个DS1820 可以存在于同一条单线总线上。这允许在许多不同的地方放置温度灵敏器件此特性的应用范围包括HVAC环境控制建筑物设备或机械内的温度检测以及过程监视和控制中的温度检测。2.4.2 单总线数字温度计特性独特的单线接口只需1 个接口引脚即可通信多点multidrop 能力使分布式温度检测应用得以简化不需要外部元件可用数据线供电,不需备份电源测量范围从-55°C 至+125°C 增量值为0.5°C 等效的华氏温度范围是-67° F 至25 增量值为0.9° F以9 位数字值方式读出温度在1 秒典型值内把温度变换为数字用户可定义的非易失性的温度告警设置告警搜索命令识别和寻址温度在编定的极限之外的器件温度告警情况应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统 2.7 引脚说明引脚说明GND 地DQ 数字输入输出VDD 可选的VDDNC 空引脚DNC 不连接 与DS1820 的通信经过一个单线接口。在单线接口情况下在ROM,操作未定建立之前不能使用,存贮器和控制操作主机必须首先提供五种ROM。 操作命令之一1 Read ROM(读ROM) ,2 Match ROM(符合ROM),3)Search ROM(搜索ROM),4)Skip ROM(跳过ROM),或5 Alarm Search(告警搜索)。 这些命令对每一器件的64,位激光ROM 部分进行操作如果在单线上有许多器件那么可以挑选出一个特定的器件并给总线上的主机指示存在多少器件及其类型在成功地执行了ROM 操作序列之后可使用存贮器和控制操作然后主机可以提供六种存贮器和控制操作命令之一个控制操作命令指示DS1820 完成温度测量该测量的结果将放入DS1820 的高速暂存便笺式存贮器Scratchpad memory 通过发出读暂存存储器内容的存储器操作命令可以读出此结果每一温度告警触发器TH 和TL 构成一个字节的EEPROM 如果不对DS1820 施加告警搜索命令这些寄存器可用作通用用户存储器使用存储器操作命令可以写TH 和TL 对这些寄存器的读访问通过便笺存储器所有数据均以最低有效位在前的方式被读写。第3章 系统的设计与实现第3章 系统的设计与实现3.1 硬件设计与分析一个完整的电子秒表电路就是一个单片机的最小系统,此系统主控制器采用单片机STC89C52RC,显示电路采用2个4位的共阳极LED数码管显示计时时间,控制秒表的开始、暂停和清零采用两个按键K0与K1。硬件电路图按照图3.1进行设计。STC89C52RC单片机控制器8位LED数码管位驱动控制按键K0控制按键K1 图3.1 多功能秒表硬件电路总体原理图3.1.1单片机的选择 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。其发展趋势不外乎以下几个方面:1、多功能 单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器-看家狗)、高速I/O口及计数器的捕获/比较逻辑等。 有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器、SMART CARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。2、高效率和高性能 为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内ROM(FLASH)和RAM的容量都突破了以往的数量和限制。 由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发 难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。3、低电压和低功耗 单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。4、低价格 单片机应用面广,使用数量大,带来的直接好处就是成本的降低。目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。下面大致介绍一下单片机的主要应用领域和特点。(1)家用电器领域 用单片机控制系统取代传统的模拟和数字控制电路,使家用电器(如洗衣机、空调、冰箱、微波炉、和电视机等)功能更完善,更加智能化和易于使用。(2)办公自动化领域 单片机作为嵌入式系统广泛应用于现代办公设备,如计算机的键盘、磁盘驱动、打印机、复印机、电话机和传真机等。(3)商业应用领域 商业应用系统部分与家用和办公应用系统相似,但更加注重设备的稳定性、可靠性和安全性。商用系统中广泛使用的电子计量仪器、收款机、条形码阅读器、安全监测系统、空气调节系统和冷冻保鲜系统等,都采用了单片机构成的专用系统。与通用计算机相比,这些系统由于比较封闭,可以更有效地防止病毒和电磁干扰等,可靠性更高。(4)工业自动化 在工业控制和机电一体化控制系统中,除了采用工控计算机外,很多都是以单片机为核心的单片机和多机系统。(5)智能仪表与集成智能传感器 目前在各种电气测量仪表中普遍采用了单片机应用系统来代替传统的测量系统,使得测量系统具有存储、数据处理、查询及联网等智能功能。将单片机和传感器相结合,可以构成新一代的智能传感器。它将传感器变换后的物理量作进一步的变化和处理,使其成为数字信号,可以远距离传输并与计算机接口。(6)现代交通与航空航天领域 通常应用于电子综合显示系统、动力监控系统、自动驾驶系统、通信系统以及运行监视系统等。这些领域对体积、功耗、稳定性和实时性的要求往往比商用系统还要高,因此采用单片机系统更加重要。目前,我国生产很多型号的单片机,在此,我们采用型号为STC89C52的单片机。因为: STC89C52是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C52提供了高性价比的解决方案。 STC89C52是一个低功耗高性能单片机,采用40只引脚双列直插封装(DIP)方式,如图3.2所示,在内部功能和引脚排布上与通用的MCS-51单片机相同。32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C51可以按照常规方法进行编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 图3.2 STC89C52RC双列直插封装方式的引脚3.1.2 LED显示器接口原理LED(Light Emitting Diode)是发光二极管英文名称的缩写。LED显示器是由发光二极管构成的,所以在显示器前面冠以“LED”。LED显示器的结构:常用的LED显示器为8段(或7段,8段比7段多了一个小数点“dp”段)。每一段对应一个发光二极管。在微机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种,如图3.3所示。共阴极结构的数码显示器阴极共地,如图3.3a所示,当某个发光二极管阳极为高电平时,将其燃亮。共阳极结构有一个公用的阳极,如图3.3所示,使用时接正电源,当阴极接低电平时,使其发光。因此共阳极和共阴极所需要的字型码正好相反。 图3.3 8段LED显示器结构及外形为了使LED显示器显示不同的符号或数字,就要把不同段的发光二极管点亮,这就要为LED显示器提供代码,因为这些代码可以使LED相应的段发光,从而显示不同字型,因此该代码称之为段码(或称为字型码)。 7段发光二极管,再加上1个小数点位,共计8段。因此提供给LED显示管的段码正好是1B。各显示段与字节中各位对应关系如下:代码位D7D6D5D4D3D2D1D0显示段dpgFedcba 八段显示块与微机接口非常容易,如表3.1所示。 表3.1 八段LED的段选码 单片机对LED管的显示可分为静态和动态两种。静态显示的特点是每位的段码线分别与1个8位的锁存器输出相连。如图3-4所示为1个4位静态LED显示电路。该电路各位可独立显示,只要在该位的段码线上保持段码电平,该位就能保持相应的显示字符。由于各位分别由1个8位的数据输出口控制段码线,故在同一时间里,每一位显示的字符可以各不相同。这种显示方式接口编程容易,但付出的代价是占用口线较多。 图3.4 四位静态LED电路 动态显示是将所有位的段码线相应段并联在一起,由一个8位I/O口控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O口线控制,形成各位的分时选通。图3.5所示为1个4位8段LED动态显示器电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。由于各位的段码线并联,8位I/O口输出的段码对各个显示位来说都是相同的。因此,在同一时刻,如果各位位选线都处于选通状态的话,4位LED将显示相同的字符。若要各位LED能够同时显示出与本位相应的显示字符,就必须采用动态显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段码线上输出相应位要显示的字符的段码。这样,在同一时刻,4位LED中只有选通的那1位显示出字符,而其他3位是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符。虽然这些字符是在不同时刻出现的,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示时间间隔足够短,就可以造成多位同时亮的假象,达到同时显示的效果。 图3.5