ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:1.72MB ,
资源ID:4591164      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4591164.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于89C52的数字秒表设计.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于89C52的数字秒表设计.docx

1、基于89C52的数字秒表设计单片机系统课 程 设 计成绩评定表设计课题 : 数字秒表设计 学院名称 : 电气工程学院 专业班级 : 自动F1207 学生姓名 : 学 号 : 201223911407 指导教师 : 周刚 设计地点 : 31-517 设计时间 : 2014-12-292015-01-09 指导教师意见:成绩: 签名: 年 月 日单片机系统课 程 设 计课程设计名称: 数字秒表设计 专 业 班 级 : 自动F1207 学 生 姓 名 : 学 号 : 201223911407 指 导 教 师 : 周刚 课程设计地点: 31-517 课程设计时间: 2014-12-292015-01-

2、09 单片机系统 课程设计任务书学生姓名 专业班级自动F1207学号201223911407题 目数字秒表设计课题性质工程设计课题来源自拟指导教师 周刚 主要内容(参数)1. 利用89c51单片机设计一个数字秒表,实现功能如下:2. 秒表的最大计时值为99分59.99秒;3. 六位数码管显示,分辨率为0.01秒;4. 具有清零、启动计时、暂停计时(内部继续计时),调用计时等功能;5. 控制操作键4个,启动(停止)、暂停、调取、复位。任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依

3、据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。主要参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟福LAB6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,2006审查意见系(教研室)主任签字: 年 月 日 目 录1绪论 11.1数字秒表概述 11.2设计思想及基本功能 12方案论证 22.1方案选取 22.2 系统框图 22.3总体方案设计 23 硬

4、件电路设计 73.1 单片机最小系统设计 73.2 按键电路 83.3显示电路 93.4 引脚控制说明 94 系统软件设计 104.1 系统流程图 104.2 秒表的初始化 114.3 按键扫描检测程序 124.4 开始计时 124.5 计时程序 124.6 显示程序 124.6 暂停计时 134.6 秒表清零 135系统调试 135.1程序调试 125.2硬件调试 126总结 16参考文献: 17附录 。附录一 系统原理图 。附录二 程序代码 181绪论1.1数字秒表概述自20世纪末期以来,电子技术的发展日新月异。电子技术在各个领域的运用也越来越广泛,从而有力地推动了社会生产力的发展以及社会

5、信息化程度的提高。其中,秒表计时器是工业自动化控制、国防、实验室及科研单位理想的计时仪器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。在各种现代体育竞技比赛中,秒表成为必不可少的工具之一。而随着运动员的水平的不断提高,他们之间的差距也在不断缩小。因此,在某些运动中对时间精度的要求就会越来越高,也就需要高精度的秒表来记录成绩,从而保障比赛的公平性。在历史上,钟表大致有三个演变阶段。首先是大时钟演变到小时钟、其次小时钟过渡到袋表、再之袋表发展到腕表。再这三个阶段,每一次的改变都是和当时的技术水平和创造发明水平是息息相关的。本文简单阐述了基于单片机STC89C52的数字秒表

6、的的设计。本设计的主要特点是计时精度达到0.01秒,是各种体育竞赛的必要设备之一。 本设计的数字秒表用STC89S52单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。将软硬件结合起来,使得系统能实现099.99秒的计时,计时精度位0.01秒。硬件系统利用单片机开发板。1.2设计思想及基本功能利用52单片机的定时计数器设计一个秒表,其中设有一个按键,定时器工作在方式1。当第一次按下按键时,定时器开始计时。第二次按下按键时,停止计时并计算两次按键的时间间隔,送显示器显示。第三次按下按键时定时器清零,等待下一次按键。该系统具有一般数字秒表的最基本功能

7、,即通过键盘按键启动,暂停,复位。通过LED显示秒表所记时间。系统本着简单实用经济的思想,尽量简化电路设计,用最简单的电路布线和选用最经济实用的器件来达到设计要求。秒表控制系统有以下几个基本功能:(1) 利用单片机内部的定时器实现秒表功能并用数码管显示当前时间;(2) 按下暂停键,数码管计时暂停,显示时间,在按下启动键,继续计时;(3) 按下复位键,数码管示数从零开始,具备复位功能。2 方案论证2.1方案选取 在这次课程设计中,主程序主要是通过STC89C52和74LS373锁存器来控制的,从而为所用的中断程序的地址以及一些必要的标志提供赋值。其中在数字秒表的设计中运用了2个中断号和2个中断程

8、序。STC89C52的TO端口在工作方式1下由下降沿触发,然后产生方波脉冲,从而作为AT89C52的中断信号。2.2系统框图 图2.22.3总体方案设计这次实验所选用的实验器材主要包括开关计时以及显示,其中开关计时是与中断T0相连的,它是中断T0的申请中断信号,也就是设计要求中的第一个人的计时,来负责秒表的计时;而开关显示是与AT89C51上的P2.6口相连,即设计记下时间,当记录完成后,按下显示按钮,就会从最后一个人的顺序倒起来显示他们工作所用的时间(注意:先来后显示)。本次设计的核心思想是:在运行中断程序的时候,首先判断中断信号,然后再根据中断信号来产生脉冲来确定是执行中断服务程序。3 硬

9、件电路设计3.1 单片机最小系统设计单片机最小系统原理图如图3.1所示单片机最小系统是使单片机工作满足的最低硬件的系统要求,主要包括单片机、时钟电路、复位电路。时钟电路:时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在STC89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引角跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用11.0592MHz的石英晶体。复位电路:确定单片机工作的起

10、始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。图3.1 单片机最小系统原理图3.2按键电路当按下按键后,对应的引脚就会被拉低,再经过扫描后,则会获得键值,然后执行键功能程序。当按下不同的按键时,单片机就会执行不同的功能程序。电路图如下图3.2所示:图3.23.3显示电路本次设计采用3个LED数码管。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个为小数点发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。在用数码管显示时,有静态和

11、动态两种选择,这次设计采用了LED动态显示,并用P0、P1、 P2口驱动显示。为了保护各段LED不被损坏,还需外加限流电阻。但由于P0口没有上拉电阻,因此在P0口还需要外接上拉电阻才能输出高电平,这里我们会使用8个4.7k的电阻作为上拉电阻。电路图如下图3.3所示: 图3.33.4引脚控制说明P0口:P0.07、P1口:P1.07、P2口 P2.07对应三个数码管的a、b、c、d、e、f、g段和小数点位;P0用来控制数码管十位的显示,P2用来控制数码管个位的显示,P1则控制小数点后一位的显示,P3.2、P3.3、P3.4分别接按键用来实现控制。4 系统软件设计4.1程序流程图本次系统的软件部分

12、主要包括:主函数、初始化函数、显示函数、定时器0中断服务函数、外部中断0中断服务函数、拆数函数等。工作流程包括:秒表的初始化、按键检测程序、开始计时、计时程序、显示程序、暂停计时、秒表清零、延时程序等8个部分。系统程序流程图如下图4.1所示: 图4.14.2秒表的初始化首先根据程序流程图进行秒表的初始化。第一步:将I/O口P3全写一,为秒表的控制输入做好准备;第二步:将数码管全部置零,使它处于秒表计时的初始状态;第三步:将工作寄存器R0至R2以及30H初始化,留待后面的计时程序备用;第四步:将定时器0置于工作方式1,并为其装入计时预置数D8FE(因为程序运行过程中占用的时间会导致一定误差,此为

13、经实物测试之后的修正值),即将定时器定为每10ms溢出;第五步:开总中断允许和定时器0中断允许。等初始化完成后,就开始进入之后的按键扫描程序。4.3按键扫描检测程序轮流检测开始计时(P3.4)、暂停计时(P3.5)、秒表清零(P3.6)三个按键。若发现有一个按键出现低电平(可能被按下),则延时10ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。4.4开始计时若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器0计时允许控

14、制位TR0置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。4.5计时程序定时器0计时至10ms,溢出,引发中断,程序跳转至定时器0中断服务程序入口000BH处执行。程序跳转至中断服务程序TIME0。由于秒表的最小计时单位是0.1s,即100ms,因此需加入软件计时,使定时器0溢出10次之后才改变数码管的显示状态。因此每来一次中断就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。4.6显示程序将数码管的段选码放在数表TAB中。每

15、次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。.若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将30H中的数置零,中断返回。若发现R0中的数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。将R1中的值(初值为10)送入A,然后自加1。.若R1中的值没到20,则使用累加器A查表,并将查得的数码管段选码送入秒位数码管。若发现R1中的数到20了,则将R1重置为10,并转入十秒位进位子程序SECOND1,向十秒位进位

16、,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。4.7暂停计时若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。4.8秒表清零若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。5 调试过程5.1程序调试 (1)打开k

17、eil软件,单击project,新建一个工程,命名为shuzimiaobiao并保存。 (2)在弹出的窗口左边选择AT89C52单片机,然后新建并并保存文件shuzimiaobia.c。 (3)在project workspace中选中source group1,单机右键,在弹出的菜单中选择add files to group source group1,在弹出的对话框中双击刚才保存的shuzimiaobiao.c,将其添加到新建的工程中。 (4)将程序代码写入文件shuzimiaobiao.c中,完成后单击build target按钮进行编译,结果如图5.1所示。图 5.1 软件调试结果图5

18、.2硬件调试 首先将程序下载到单片机中,过程如下(1)单机options for target按钮,在弹出对话框的第二个标签页中设置晶振为11.0592MHz,在第三个标签页中的create HEX file选项前打勾,完成后再次编译并生成HEX文件(2)打开STC_ISP_V483软件,选择刚才生成的HEX文件并下载到单片机中 其次开始单人秒表模式的调试(1) 按下key1键,秒表开始计时,数码管正常显示,如图5.2.1所示图 5.2.1开始计时图(2) 按下key2键,停止计时,如图5.2.2所示图5.2.2停止计时图(3) 按下key3键,秒表复位,如图5.2.3所示图5.2.3复位图

19、至此,系统的调试过程就完成了。但是这个过程并不是一帆风顺的,在程序调试的过程中,6总结这次的课程设计使我进一步巩固了书本上的知识,做到了学以致用。通过STC下载软件、ALTIUM DISIGNER,VISIO和编译软件KEIL使我进一步了解了基于单片机的设计制作过程。其中最为困难的是编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要理论联系实际,这样才会取得事半功倍的效果。参考文献1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042伟

20、福LAB6000系列单片机仿真实验系统使用说明书3 阎石数字电路技术基础(第五版)北京:高等教育出版社,20064康华光。模拟电路技术基础(第五版)。北京:高等教育出版社,2005 6 郭天祥.新概念51单片机C语言教程-入门、提高、开发、拓展全攻北京:电子工业出版社,2010.7 张兰红.单片机原理及应用.北京:机械工业出版社,2012.附录附录原理图一附录二 源程序代码#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;sbit key1=P34;sbit key2=

21、P35;sbit key3=P36;uchar num=0; uint sec,a,b;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay1ms(uint x) for(a=x;a0;a-) for(b=110;b0;b-);void display(uchar qian_c,uchar bai_c,uchar shi_c,uchar ge_c) /显示程序 dula=0; P0=tableqian_c; /显示第一位 dula=1

22、; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay1ms(5); dula=0; P0=tablebai_c; /显示第二位 dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay1ms(5); P0=tableshi_c; /显示第三位 dula=1; dula=0; wela=0; P0=0xfb; wela=1; wela=0; delay1ms(5); P0=tablege_c; /显示第四位 dula=1; dula=0; wela=0; P0=0xf7; wela=1; wela=0

23、; delay1ms(5);void keyscan() if(key1=0) delay1ms(10); if(key1=0) while(!key1); TR0=1; if(key2=0) delay1ms(10); if(key2=0) while(!key2); TR0=0; if(key3=0) delay1ms(10); if(key3=0) while(!key3); sec=0; TR0=0; void main() num=0; TMOD=0x01; /定时器工作在方式1 ET0=1; EA=1; TH0=(65536-56320)/256; /对TH0 TL0赋值 TL0=(65536-56320)%256; /使定时器0.01秒中断一次 while(1) display(sec/1000,sec%1000/100,sec%100/10,sec%10); keyscan(); void t0() interrupt 1 /定时中断服务函数 TH0=(65536-56320)/256; /对TH0 TL0赋值 TL0=(65536-56320)%256; /重装计数初值 sec+; /每过10ms tcnt加一 if(sec=10000) sec=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1