1、基于单片机的秒表系统设计题目名称: 基于单片机的秒表系统设计 课程名称: MCS-51单片机原理及其应用 目录目录.摘要.Abstract.第一章 课题内容要求及目的.1.1 课题内容. .1.2 课题目的.1.3 课题要求.第二章 硬件电路设计.2.1 STC89C52单片机简介.2.2 单片机最小系统的设计.2.3 直流稳压电源的设计.2.4 硬件主电路图设计.2.5 数码管显示电路.2.6 声电路.第三章 软件设计.3.1 程序设计.3.2 源程序.第四章 系统调试.第五章 简单演示秒表功能.第六章 心得体会.参考文献.摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,本文阐
2、述了基于单片机的电子秒表系统的设计,本设计的主要特点是设计精度达到0.1s,解决了传统的由于计算精度不够而引起的误差和不公平性,是各种体育竞赛的必备设备之一。本设计是基于STC89C52 单片机设计的,我们是分为几个模块来设计的。首先对秒表的硬件进行了设计,它包括单片机最小系统的设计、时钟电路设计、复位电路设计、直流稳压电源的设计、外部显示电路的设计等。利用89C51单片机定时器/计数器定时和计数的原理结合显示电路、LED数码管以及外部中断电路来设计计时器。计时精度为0.1s。其次是软件设计,软件系统采用汇编语言编写程序,包括显示程序、定时中断服务、外部中断服务程序、延时程序等。最后通过仿真调
3、试,在proteus环境下建立了仿真模型,仿真结果表明设计是正确的。 关键字:单片;秒表;定时器AbstractIn recent years, with the rapid development of science and technology, the application of SCM is continuously to the deepening, this paper expounds the electronic stopwatch system based on single chip design, the design of the main characterist
4、ic is a design accuracy 0.1 s, solve the traditional due to lack of precision and the error caused by inequality, it is all sorts of sports competition for one of the equipment.The design is based on STC89C52 microcontroller, we are divided into several modules to design. First of the hardware to a
5、stopwatch design, it includes single chip minimize the design of the system, the clock circuit design, reset circuit design, dc voltage stabilizer design, external display circuit design, etc. Use of 89 C51 microcontroller timer/counter timing and count with the principle that circuit, LED digital t
6、ube, and external interruption, circuit to design the timer. Time precision of 0.1 s. Next is the software design, software system USES assembly language program, including show program, time interrupt service, external interrupt service routine, delay procedures, etc. Finally, the simulation result
7、s debugging, proteus environment in established simulation model, and the simulation results show that the design is correct.Key word: single chip microcomputer;a stopwatch;timer第一章 课题内容要求及目的1.1 课题内容设计由直流稳压电路、红外接收电路、单片机最小系统、声光模块、数码管显示电路构成秒表计时系统。红外接收电路用来接收遥控器输出的红外控制信息,让使用者可以方便的控制程序的运行状态。单片机是整个系统的核心,用
8、以分配所以的任务。数码管用于显示实时的计数值,直流稳压电路为整个系统提供稳定的电源。以常用的51 单片机STC89C52 为控制核心,结合外围的显示电路、红外接收电路、稳压电路、声光电路以实现秒表系统的设计,该系统充分利用51 单片机内部的定时器以及外部中断资源,合理的设计了人机交互程序接口,方便使用者的操作。整个系统集成了精确计时、数值保存、数值回放等功能。同时锻炼学生的动手能力及对单片机这一课程知识的深入了解与巩固。1.2 课题目的通过该课程设计,主要达到以下目的:使学生增进对单片机系统的感性认识,加深对单片机理论方面的理解,为顺利完成毕业设计打基础。 使学生掌握对单片机的内部功能模块的应
9、用,如定时器/计数器、中断、片内外存贮器、I/O口和串行口通讯等。 进一步深化和巩固所学基础理论、专业知识及实验技能,提高学生的技术应用能力,使学生了解和掌握单片机应用系统的软、硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。 进一步深化和巩固所学基础理论、专业知识及实验技能,提高学生的技术应用能力,使学生了解和掌握单片机应用系统的软、硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。 这一环节对掌握单片机技术在生产实践中的应用,对后续专业课程的学习及对培养造就应用型、创造型的工程技术人才将起到较大的促进作用。 培养学生综合运用所学专业知识分析问题和解
10、决问题的能力。使学生在树立正确的人生观、养成严谨、踏实的工作作风等思想素质方面受到教育和培养。巩固和加深对单片机原理和接口技术知识的理解; 培养学生根据课题需要选学参考书籍、查阅手册和文献资料的能力; 学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法; 掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法。 了解与课题有关的硬件元器件的工程规范,能按课程设计任务书的要求编写课程设计说明书,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。第二章 硬件电路设计2.1 AT89C51单片机简介 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFal
11、sh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图2.11、主要特性:与MCS-51
12、兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 2、管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
13、P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,
14、它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外
15、部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH
16、地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反
17、向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3、振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4、芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89
18、C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 2.2 单片机最小系统的设计本设计中是以计时为主要目的,附加红外控制程序,这些功能的实现完全可以选用一个简单的8 位的单片机来承担。目前深受广大大学生喜欢的8 位单片机有AT89S51 、AT89C52、STM8 、STC89C52 等,相对价格与熟悉程度来讲,STC89C52 单片机是一个性价比较高的8 位单片机,其资料与学习资源相对比较多
19、,计数较成熟,所以我们在做的时候选用选用STC89C52 单片机作为本设计的主控芯片。STC89C52 单片机要正常运行起来必须具备以下几点:一、稳定的+5V 电源供电系统 二、有合适的外部起振源,复位电路,串口通信电路为了使系统在较长的时间内能够保证比较好的稳定性,最小系统采用PCB板代替导线焊接。其最小系统原理图如下:图表2 STC89C52 引脚图图2.2 图2.3 RC 复位以及手动复位电路该单片机有一个复位引脚,当有2 个周期的高电平信号加载在该引脚上时,系统将会复位到初始状态。RC 复位电路的作用是在系统上电的时候,通过RC 电路的充放电,给单片机一个复位信号,开始运行预定的程序。
20、另外通过结合手动复位电路,可以在程序跑飞或者系统死机的情况下让系统快速的恢复到正常的工作状态。图2.4 串口通信电路一条信息的各位数据被逐为按顺序串口通信电路的主要作用是使单片机与PC 机能够进行数据交换,通过该电路可以将在计算机上编写好的程序烧录到下位机中。另外,在程序的调试过程中,单片机也可以通过该电路将数据发送到上位机的调试软件中,检查数据的正确性。图2.5 时钟输入2.3 直流稳压电源的设计稳压电路的功能是使输出的直流电压稳定,不随交流电网电压和负载的变化而变化。常用的集成稳压器有固定式三端稳压器与可调式三端稳压器。常用可调式正压集成稳压器有CW317(LM317)系列,它们的输出电压
21、从1.25V37 伏可调,最简的电路外接元件只需一个固定电阻和一只电位器。其芯片内有过渡、过热和安全工作区保护,最大输出电流为1.5A 。所有器件采用单一电源,这样供电比较简单。但是也有较大的缺点:当系统中存在大功率器件,可能会使控制系统中的电流波动较大,造成电压不稳、有毛刺等干扰,严重时可能造成单片机系统掉电。考虑到本系统中并不存在大功率器件,所用采用单一电源供电,由三端稳压芯片LM2940 将电池电压转换成+5V 电源。图2.6 +5V 直流稳压稳压2.4硬件主电路图设计秒表系统用的是AT89C51芯片,能够实现计时功能,SW1是启动按键,接单片机 P1.0端口;SW2是暂停按键,接单片机
22、 P1.1端口。P1.0和P1.1都是低电平有效。SW3是清零按键,当按下SW1后,秒表开始计数,此时再按下SW2,可以停止计数,再按下SW1又可以在原来的基础上继续计数,当按下SW3,则秒表将恢复初始化。P0.0到P0.7接数码管,数码管共阴极,P2.0到P2.3接各自数码管的公共端。用pretues画出其硬件主电路图如下:图2.72.5 数码管显示电路 在自动化系统逐步普及的前提下,人机交互模块显得越来越重要,特别是对于实时控制电路的精确显示要求越来越高,而且要显示明显,一目了然。本系统中,利用6位共阴极数码管,动态地显示当前计数时间。动态显示就是让各位显示元件分时工作,利用动态显示法可以
23、降低系统功耗,减少成本。但是单片机需要不断的刷新数据,这样才能保证数码管的准确显示。若刷新的速度太高,显示元件的开关速度却不够高,以致在前一个字符尚未完全熄灭的情况下,后续的字符段就点亮。刷新的速度太慢时,将发生闪烁。因此刷新频率不要低于100 HZ ,肉眼观察到的数码的显示情况将是连续的。对数码管的控制,分为位的控制和段的控制,位控制决定数码管是否被点亮,段控制则决定了数码管显示的内容,由于单片机输出信号的功率有限,不能驱动数码管,所以选用8550 PNP 三极管,控制数码管的位选。图2.82.6 声电路 声模块主要由三极管和蜂鸣器组成,这个模块的主要功能是给予使用者一个醒目的反馈。当使用者
24、完成任务的设置或者某个任务被完成时,微处理器会通过声模块鸣叫给予使用者一个反馈。考虑到单片机的驱动电流过小,难以驱动蜂鸣器,所以我们采用PNP 的三极管作为控制开关,当单片机给出高电平时,三极管则导通,为蜂鸣器提供了一个闭合回路,使得蜂鸣器能够正常工作。图2.9第三章 软件设计3.1 程序设计程序在上电之后,需要等待使用者对其参数进行设置,设置好参数之后,便可以开始工作,在工作过程中,可以保存需要的数据。3.2 部分源程序显示以及译码程序如下:#includereg52.h#includeDis.h#define uint unsigned int #define uchar unsigned
25、 charuint Counter1;uint Counter2;bit flag;void init_ET0() /初始化函数 flag=0; /每一秒钟是否发声的标志位 Counter1=0; /定器计数值 Counter2=0; /定时器计数值 TMOD=0X01; /设置定时器0 工作方式1 EA=1; /开总中断 ET0=1; /开定时器0 中断 TH0=-(10000/256); /给TH0 赋初始值,每10ms 中断一次 TL0=-(10000%256); /给TL0 赋初始值void main(void) /主函数体 init_ET0(); /调用初始化函数 while(1)
26、Key_Ser(); display(0,Counter2); /动态显示时间 void timer0() interrupt 1 Counter1+; / 每10ms 中断一次Counter1 计数 TH0=(65536-10000)/256 / 重新赋初值,高位 TL0=(65536-10000)%256; if(Counter1=10) /Counter 为10 时(即每计0.1S)Counter2 计数一次 Counter2+; / 100ms的个数自加1 Counter1=0; /Counter1 重新初始化 if(Counter2%10)=0)&(Counter1=0)/恰好每次到
27、1S 时根据标志位决定是否声音提示 if(flag=1) Hander(); /调用声音提示 #includereg52.h#includedis.h#define uint unsigned int #define uchar unsigned charuint Seg_num10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数码管不带小数点译码 uint Seg_numm10=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /数码管带小数点译码uchar Seg_con6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /数码管位选控制 sbit beep=P30; / /定义蜂鸣器口void delay_led() uint i=800; while(i-); /i 大于0 时等待void delay() uchar i; for(i=0;i30;i+) /for 循环等待 ; void Hander() uchar i; for(i=0;i15;i+) beep=0; /低电平导通 delay(); /延时一段时间 beep=1; /关闭蜂鸣器 delay()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1