C语言单片机设计成的电子秒表设计
- 格式:doc
- 大小:363.00 KB
- 文档页数:21
摘要摘要数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。
本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。
设计中包括硬件电路的设计和系统程序的设计。
其硬件电路主要有主控制器,计时与显示电路和回零、启动和停表电路等。
主控制器采用单片机AT89S51,显示电路采用共阴极LED数码管显示计时时间。
文中设计了一种以单片机为控制核心的数字秒表。
该数字秒表采用C语言开发,通过数码管显示计时结果。
关键字:AT89S51;数字秒表;LED数码管显示ABSTRACTDigital electronic stopwatch display intuitive, read the convenient, high precision of advantages, widely used in time. The design of digital electronic stopwatch by single chip, and strive to simple structure, high precision for the target. Design including the design of the system hardware circuit and the design of the program. The main hardware circuit is the main controller, timing and display circuit and back to zero, start and stop watch circuit, etc. Lord AT89S51 single-chip controller, show circuit of the cathode LED digital pipe display time clock. This paper designs a with the single chip processor as the core to control the digital stopwatch. The digital stopwatch using C language development, through the digital pipe display the time.K ey words:AT89S51 Digital stopwatch The LED digital display目录摘要 (I)ABSTRACT (II)前言 (IV)1绪论 (1)1.1单片机的背景 (1)1.2 单片机的应用领域 (2)2 总体方案的设计 (4)2.1系统的组成模块 (4)2.2工作原理 (4)3系统的硬件电路设计 (6)3.1单片机的选择 (6)3.2 显示电路的选择与设计 (9)3.3 按键电路的选择与设计 (11)3.4 时钟电路的选择与设计 (11)3.5 复位电路的选择与设计 (14)4 系统的软件电路设计 (16)4.1 程序设计思想 (16)4.2 主程序设计 (16)4.3 中断程序设计 (18)4.4 系统的程序设计 (21)结论 (25)参考文献 (26)致谢 (27)附录 (28)前言前言秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。
学号:1108421065课程设计报告基于AT89C51单片机的秒表设计院系电子信息工程学院专业电子信息工程班级 1姓名张远远摘要本设计是设计一个单片机控制的多功能秒表系统。
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动着传统控制检测日新月异的更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合,加以完善。
秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。
本设计的秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、电源电路、LED数码管以及按键电路来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行计数,并且结合相应的显示驱动程序,使数码管能够正确地显示时间,暂停和中断。
可谓功能强大。
其中软件系统采用c语言编写程序,包括显示程序,计数程序,中断,延时程序,按键消抖程序等,硬件系统利用PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
关键字:单片机秒表目录摘要 (I)目录 (II)引言 (III)1.课程设计目的 (1)2.课程设计题目描述和要求 (1)3.课程设计报告内容 (1)3.1设计思路(方案) (1)3.2系统总体方案及硬件设计(方案论证、设计、调试) (1)3.2.1系统总体方案 (1)3.2.2硬件电路设计 (2)3.3 软件设计 (5)3.3.1软件设计概述 (5)3.3.2程序流程图 (5)3.3.3子程序模块设计 (6)4.Protues软件仿真 (7)5.秒表c语言程序 (9)6.焊接实物图 (11)7.总结(设计后的体会和建议) (11)8.参考文献: (12)引言中国使用单片机的历史只有短短的30年,在初始的短短五年时间里发展极为迅速。
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
c51电子秒表课程设计一、课程目标知识目标:1. 学生能够理解C51单片机的基础知识,掌握其编程方法。
2. 学生能够掌握电子秒表的基本原理,包括计时、暂停、清零等功能。
3. 学生能够了解并掌握电子秒表中的中断处理、定时器/计数器等硬件资源的使用。
技能目标:1. 学生能够运用C语言编写C51单片机程序,实现电子秒表的计时功能。
2. 学生能够通过实验操作,学会使用开发板、编译器等工具进行程序编写和调试。
3. 学生能够培养实际动手能力,独立完成电子秒表的搭建和调试。
情感态度价值观目标:1. 学生能够培养对电子制作的兴趣和热情,提高学习积极性。
2. 学生能够培养团队协作意识,学会与他人共同解决问题。
3. 学生能够认识到科技发展对社会进步的重要性,增强科技创新意识。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的C语言基础,对单片机有一定了解,但实践经验不足。
教学要求:教师需引导学生通过实际操作,掌握C51单片机编程和电子秒表制作技能,同时注重培养学生的情感态度价值观。
将课程目标分解为具体学习成果,以便在教学设计和评估中逐一实现。
二、教学内容1. 理论部分:- C51单片机基础知识:介绍C51单片机的结构、工作原理和编程环境。
- 中断处理和定时器/计数器:讲解中断的概念、中断处理过程,以及定时器/计数器的使用方法。
- 电子秒表原理:阐述电子秒表的计时原理、功能模块及其相互关系。
2. 实践部分:- C51编程实践:指导学生使用C语言编写电子秒表程序,掌握程序结构、函数调用等。
- 硬件搭建与调试:学生动手搭建电子秒表电路,学习电路连接、元件识别等,并进行程序下载和调试。
- 综合应用:结合所学知识,学生独立完成一个具有计时、暂停、清零等功能的电子秒表项目。
3. 教学大纲安排:- 第一课时:C51单片机基础知识学习,介绍教材相关章节内容。
- 第二课时:中断处理和定时器/计数器原理学习,结合教材实例进行讲解。
单片机原理及系统课程设计摘要本设计是一个基于单片机的电子秒表设计。
设计采用AT89C51单片机和四位一体的LED数码管,通过单片机内部定时器/计数器定时的原理来达到秒表的计时功能。
设计中秒表的开始,暂停功能是通过控制单片机内部定时器的打开与关闭来实现的。
最后采用proteus仿真软件将软件与硬件相结合来模拟实现秒表的各项功能。
关键词:单片机;秒表;功能AbstractThis design is a microcontroller-based electronic stopwatch design. Design using AT89C51 microcontroller and four-in-one LED digital tube, through the microcontroller internal timer / counter timing principle to achieve a stopwatch timing function. Design of the stopwatch to start, pause function is achieved by opening and closing of the control microcontroller internal timer. Finally, proteus simulation software to software and hardware combination to simulate the various functions of the stopwatch. Keyword :SCM ,Stopwatch,functions基于单片机的秒表设计1引言随着现代科技的发展,自动化理念已经深入到了人们生活的各个领域。
本课程设计是在学习先修课程《单片机原理与系统设计》之后,为加强对学生系统设计和应用能力的培养而开设的综合设计训练环节。
XXXXXX学院51单片机系统设计课程设计报告题目:秒表系统设计专业、班级:学生姓名:学号:指导教师:分数:[摘要]本设计是一个秒表计时器,采用51单片机实现。
电路包括以下几部分:单片机最小系统部分,数码管显示部分,摁键开关部分部分。
电路选用共阴型4位数码管组成时钟显示电路;时钟的增减控制以及清零部分主要由轻触开关构成的摁键系统组成;信号接收和处理部分主要由单片机来执行。
接通电源后,秒表计时器处于初始状态,4位数码管显示000.0。
当摁下“开始”开关时,秒表开始计时,数码管显示当前状态的时间。
当再次摁下开关时,数码管停止计时。
摁下“清零”键后,系统重新回到初始状态。
[关键词]单片机最小系统秒表计时摁键控制1、任务设计一个秒表计时器,在51单片机的控制作用下,采用4个LED数码管显示时间,计时范围设置为00.0~60.0秒,即精确到0.1秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。
2、设计要求(1)开始时显示00.0。
每按下S1键一次,数值加1s;(2)每按下S2键一次,数值减1s;(3)每按下S3键一次,数值清零;(4)每按下S4键一次,启动定时器使数值开始自动每秒加1,再次按下S4键,数值停止自动加1,保持显示原数。
3、发挥部分(1)开关按键3:“复位60.0”按键(用来60秒倒计时)。
按键按下去时数码管复位为“60.0”(用于倒计时)。
(2)开关按键4:倒计时“逐渐自减”按键。
按键按下去则是数码管开始“逐渐自减”倒计时。
(3)开关按键5:倒计时初始值“增加”按键。
(4)开关按键6:倒计时初始值“减小”按键。
4、课程设计的难点单片机电子秒表需要解决三个主要问题,一是有关单片机定时器(一个控制顺序计时,一个控制倒计时)的使用;二是如何实现LED 的动态扫描显示;三是如何对键盘输入进行编程。
课程设计报告课程名称:单片机原理及应用报告题目:秒表学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013 年12 月25 日课程设计任务书摘要近年来随着科技的飞速发展,单片机的应用正在不断的走向深入,秒表计时器是电器制造,工业自动化控制、国防、实验室以及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等时间测试。
本文阐述了基于单片机的数字电子秒表设计。
本设计主要特点是计时从00到99秒秒表系统,方便了在计时精度要求不高的情况下计时。
因为计时精度为1,所以系统电路比较简单。
另外硬件部分设置了开始、暂停、清零、复位按键,可以对秒表系统进行计时控制。
本设计的数字电子秒表系统采用AT89C51单片机位中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。
将软、硬件有机的相结合起来,使得系统能够实现两位LED显示,显示时间为00-99秒,计时精度为1秒,能正确地进行计时,同时能记录一次时间,其中软件系统采用C语言编写程序,包括显示程序,定时中断服务,延时程序等,并用KeiL中调试运行,硬件系统利用Proteus强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。
关键词:单片机;数字电子秒表;仿真目录一、概述 (1)1.1设计目的 (1)1.2设计要求 (1)1.3设计意义 (1)二、系统总体方案及硬件设计 (1)2.1系统总体方案 (2)2.2硬件设计 (2)2.21晶体振荡电路 (2)2.22复位电路 (3)2.23按键电路 (3)2.24 显示电路 (4)2.25系统电路 (4)三、软件设计 (5)1.设计特点 (5)2.秒表设计源程序 (9)3.程序流程图 (10)四、结论与心得 (11)五、参考文献 (11)一、概述1.1设计目的设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码以及按键来设计秒表。
湖南工学院单片机课程设说明书数字式秒表学生姓名:**系部:电气与信息工程系指导教师:**专业:自动化班级:自本1001班完成时间:2012年12月18号目录第1章数字式秒表的设计介绍 (1)1.1设计任务及功能要求 (1)1.2数字式秒表的方案介绍及工作原理说明 (1)第二章数字式秒表硬件系统的设计 (3)2.1 AT89S52芯片的介绍 (3)2.2 时钟电路的介绍 (4)2.3 复位电路的介绍 (4)2.4 键盘电路的介绍 (5)2.5 驱动及显示电路的介绍 (6)2.6 单片机下载口电路 (6)第三章数字式秒表软件系统的设计 (7)3.1 数字式秒表使用单片机资源情况 (7)3.2 主程序流程图 (8)3.3 秒表的工作流程图 (9)3.4 显示程序流程图 (10)3.5 按键扫描流程图 (11)3.6软件系统程序清单 (11)第4章设计结果及误差分析 (12)4.1 数字式秒表的设计结论及使用说明 (12)4.2 调试软件介绍 (12)4.3 程序仿真与结果 (13)4.4 KEIL uVision3简介 (15)4.5 proteus的简介 (15)4.5 误差分析及解决方法 (16)第五章数字式秒表的设计体会及课程教学建议 (17)5.1 秒表的课程设计体会 (17)5.2 课程教学建议 (17)参考文献 (19)附录A 原理图 (20)附录B PCB图、布局图、实物图 (21)附录C 程序 (24)附录 D 元器件清单 (26)第1章数字式秒表的设计介绍1.1设计任务及功能要求由单片机接收小键盘控制递增计时,由LED 显示模块计时时间,显示格式为 00-59(分)00-59(秒).00-99(毫秒),精确到0.01s的整数倍。
绘制系统硬件接线图,并进行系统仿真和实验。
画出程序流程图并编写程序实现系统功能。
使用单片机AT89S52作为主要控制芯片,以四位一体共阳极数码显示管通过三极管驱动作为显示部分,设计一个具有特定功能的数字式秒表。
济源职业技术学院《电子秒表》毕业设计报告题目:电子秒表系别:电气工程系专业:应用电子技术班级:电技0901班姓名:张帅龙指导教师:李丽时间:2011.09.01—2011.10.02毕业设计成绩评定表目录1 方案设计 (1)1.1系统分析 (1)1.2系统方案 (1)1.2.1方案设计 (1)1.2.2 方案论证 (2)2 硬件设计 (2)2.1 控制芯片的介绍 (2)2.2 单片机最小系统 (3)2.2.1 振荡电路――让单片机活起来的心脏 (3)2.2.2 复位电路――恢复初始状态值 (4)2.2.3 程序下载接入电路 (4)2.3 电源电路设计 (5)2.4 显示电路设计 (5)2.5元件清单 (6)3 软件设计 (7)4 课程设计体会 (8)5 参考文献 (9)电子秒表摘要:本设计的成品是在单片机最小系统的基础上增加显示电路和控制电路来完成电子秒表的硬件电路的。
电子秒表电路主要由AT89S52单片机最小系统电路、七段数码管动态显示电路和控制电路组成,它能实现八位数码显示和多次计时,能通过控制电路能控制时间的暂停和开始,能够最少十次计时,查询计时时间。
关键字:AT89S52 数码管最小系统1 方案设计1.1系统分析设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。
设计框图如图一所示;1.2系统方案1.2.1方案设计方案一:利用分分离门电路和集成块电路设计数显定时器;可分为五个功能模块:秒脉冲发生器、计数器、译码显示电路、时序控制电路。
秒脉冲发生器:555振荡器振荡周期T=0.693(R5+2R6)C=0.72,频率f=1.39Hz;计数器和控制电路是系统的主要部分,计数器是用可加(减)的计数方法,它是十进制计数的方式,选用74LS192,计时器完成计时功能;控制电路具有直接控制计数器的启动计数、暂停/连续计数、查询所计数、译码显示电路显示等功能。
设计框图如二所示;方案二:利用AT89S52单片机设计数显定时器和定时器。
此方案采用AT98S52单片机系统来实现。
单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。
单片即系统可用数码管显示秒表的值,能用键盘输入暂停,并可实现报捷。
本方案选用了AT98S52芯片(内部含有8KB的EEPROM),不需要外扩展存储器,可使系统整体结构更为简单。
设计框图如图三所示;1.2.2 方案论证方案一是电子式,时间走的很准时,也能达到报警的功能实现,显示时间是现代式的数码管显示,但要做好是有很大的难度的,线非常之多,元件分散、多,容易把线接错;我采用了方案二以AT98S52芯片为中心控制系统,可实现显示、键盘控制、报警等功能,大大提高了系统的智能化,也使得系统所测结果精度大大提高。
故经过对三种方案的比较本设计及制作采用了。
2 硬件设计2.1 控制芯片的介绍AT89S52(与AT89S51相同)单片机的外型如图四所示。
单片机可分为通用型和专用型,种类繁多。
这里我们主要介绍AT89S52单片机是属于典型代表的MCS-51系列单片机,它是一种能处理8位数据的通用型单片机。
以Atmel 公司生产的具有CMOS工艺、低功耗、高性能的AT89S52为例,介绍单片机的工作原理、控制程序的编写及开发应用。
AT89S52是一个高性能CMOS 8位单片机,芯片内集成了通用8位中央处理器,片内含8k Bytes的可反复擦写1000次的Flash只读程序存储器(ROM), 支持ISP(In-system programmable)功能。
AT89S52内部有128 bytes的随机存取数据存储器(RAM),5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
兼容标准MCS-51图五 AT89S52引脚图指令系统及80C51引脚结构。
图四 AT89S52有40个引脚,32个外部双向输入/输出(I/O )口。
该芯片还具有PDIP40、TQFP44和PLCC44三种封装形式,以适应不同产品的需求。
外型和封装形式如图四所示。
从外观上看单片机就是一块集成电路,它与在模拟电路和数字电路中学习过的集成电路电路最主要的区别是:普通集成电路电路的引脚功能基本上固定的,而单片机的一些引脚的功能是可以通过编程进行控制,一些引脚既可作输入又可作输出。
单片机广泛用于工业控制、智能仪器仪表、计算机设备及网络、通信领域、家用电器、医用设备、军用设备等各个方面。
对于单片机这样的集成电路,要设计让它完成一个特定的工作任务,除完成设计相关的硬件电路外,还要设计相应的控制软件,才能使整个电路按照设计要求自动地进行工作。
所以,电子电路学习到单片机这个知识层次时,除要学习相关硬件知识,还学习相关软件设计知识,才能对单片机进行控制和应用。
单片机的开发和应用,是利用硬件和软件的结合来实现的。
由于单片机的功能强大,充分理解各引脚功能,灵活编写控制程序去控制引脚功能,完成各种需要的设计。
2.2 单片机最小系统2.2.1 振荡电路――让单片机活起来的心脏AT89S52是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体(如图六中所示),给单片机加上工作所需直流电源,振荡器就开始振荡起来。
振荡电路就为单片机工作提供了所需要的时钟脉冲信号,使单片机的内部电路,单片机的内部程序(若有)开始工作起来。
振荡电路不工作,整个单片机电路都不能正常工作。
AT89S52常外接6MHz、12 MHz的石英晶体,图中接入的是12MHz的石英晶体,最高可接24MHz 石英晶体。
18脚和19 脚分别对地接了一个20P的电容,目的是防止单片机自激。
如果从18脚输入外部时钟脉冲,则19脚接地。
2.2.2 复位电路――恢复初始状态值复位电路就是在RST端(9脚)外接的一个电路,目的是当单片机上电开始工作时,内部电路从初始状态开始工作,或者在工作中要想人为的让单片机重新从初始状态开始图九2.7 元件清单3 软件设计3.1程序设计思路在硬件的基础上,可以通过软件完成电子秒表的设计。
我先用了矩阵键盘上的任意五个独立按键作为控制键。
用一个键去控制计数的开始;用一个键作圈计时的保存按键;用一个键作分别计时时的保存按键发;用一个按键作查询按键;用一个键作计数的清零按键。
用按键扫描的方法判断按键是否按下。
用动态显示的方法扫描秒表的计数,显示所计下的数。
用定时是断作为计数的基础。
保存所计数的方法是:将所计数先放入数组内,再经过查询的方法将数组中的数一个一个显示出来。
这样通过软件与硬件的结合就可以设计出一个即可以以圈计时又可分别记时的电子秒表。
3.2 源程序/* 说明:由于我使用的是单片机实验板,因为实验板上没有五个独立按键(只有两个),所以在写程序的时候我用的是我们所学的键盘扫描程序来选取实验板上的任意五个按键作为控制按键。
*/#include"reg52.h"#define uchar unsigned char#define uint unsigned intuchar BIT,cha;uchar display_data[4];uchar t_p_r[20][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},};void display( ){uchar code display_code[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39, 0x5E,0x79,0x71};uchar k=0x80,i,f;for(i=0;i<4;i++){P2=0;P0=display_code[display_data[i]/10];P2=k;for(f=250;f>0;f--);//delayfor(f=250;f>0;f--);for(f=250;f>0;f--);k>>=1;P2=0;P0=display_code[display_data[i]%10];P2=k;for(f=250;f>0;f--);//delayfor(f=250;f>0;f--);for(f=250;f>0;f--);k>>=1;}}void data_init( ){uchar i;for(i=0;i<4;i++){display_data[i]=0;}BIT=0;cha=0;}void calc( ){display_data[2]++;if(display_data[2]>100){display_data[1]++;display_data[2]=0;if( display_data[1]>59){display_data[1]=0;display_data[0]++;if(display_data[0]>59)display_data[0]=0;}}}uchar inkey( ) //没键输入时反回的是16,有时反回的是0---15 {uchar i,j=1,k,d=16;uchar code keytab[16]={0x81,0x41,0x21,0x11,0x82,0x42,0x22,0x12,0x84,0x44,0x24,0x14,0x88,0x48,0x28,0x18};for(i=0;i<4;i++){P3=~j;k=~P3;if(k!=j)break;j=j<<1;}display();if(k!=j){for(d=0;d<16;d++){if(k==keytab[d])break;}}return d;}void jgn( ){uchar i;switch(inkey( )){case 3:{TR0=~TR0;break; //启动或停止秒表的走动}case 7:{ //以圈计时时保存当前的秒表数据for(i=0;i<3;i++){t_p_r[BIT][i]=display_data[i];}BIT++;display_data[3]=BIT;if(BIT>20)BIT=0;break;}case 2:{ //分别计时时保存当前的秒表数据if(TR0==0){for(i=0;i<3;i++){t_p_r[BIT][i]=display_data[i];}BIT++;display_data[3]=BIT;if(BIT>20)BIT=0;}break;}case 11:{ //对保存的数据的查询for(i=0;i<3;i++){display_data[i]=t_p_r[cha][i];}cha++;display_data[3]=cha;if(cha>19)cha=0;break;}case 15:{ //显示数据清零for(i=0;i<3;i++){display_data[i]=0;}TH0=(65536-10000)/256;TL0=(65536-10000)%256;break;}}}void main ( ){uchar key;data_init();TMOD=0x01;TH0=(65536-10000)/256;TL0=(65536-10000)%256;ET0=1;EA=1;while(1){display();key=inkey();if(key!=16){display();key=inkey();if(key!=16)jgn();while(inkey()!=16)display();}}}void timer0( ) interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;calc();}4 课程设计体会在这次课程设计中收获很多,学会了查找相关资料,分析数据,提高了自己的分析判断能力,得到了许多经验,资料的获得是前人不懈努力的结果。