收藏 分销(赏)

电子计时秒表设计报告.doc

上传人:快乐****生活 文档编号:4134697 上传时间:2024-07-31 格式:DOC 页数:13 大小:242.50KB 下载积分:8 金币
下载 相关 举报
电子计时秒表设计报告.doc_第1页
第1页 / 共13页
电子计时秒表设计报告.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
西南民族大学机器人创新团队 单片机设计报告 项目名称: 电子计时秒表 项目成员:(第五组) XX XXX XXX 负责人员: XXX 完成时间:2014年 01 月 15 日 报告成绩: 摘要:本次设计的是一个能显示计时状态和结果的秒表,它是基于定时器/计数器设计的一个简单的电子计时秒表。该系统采用STC89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器,使得系统能够实现四位LED显示,显示时间为00.00~99.99秒,计时精度为0.01秒,能正确地进行计时,并显示计时状态和结果 ,软件代码采用C语言编写程序,包括显示程序,初始化子程序,键盘扫描程序,中断服务程序,延时子程序等,并在keil中调试运行,硬件系统利用单片机电路板强大的功能来实现,操作简单且视觉效果易于观察。 关键字: STC89C52RC单片机、LED码管显示、电子计时秒表、C语言 电子计时秒表设计 一、任务要求: 1、设计任务:设计并制作一个电子计时秒表。 2、设计要求: l 利用定时计数器来实现电子秒表功能; l 秒计时精确到0.01秒: l 设计启动、暂停、清零按钮; l 4位数码管显示。 二、成员组成及分工: XXX:负责本设计的前期资料搜集与整体布局; X X:负责程序的编写与调试; XXX:负责后期程序的改进及硬件操作; 三、方案论证: 1.显示部分: 采用LED数码管动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动态显示方式,上述缺点即可很好的避免,且视觉效果甚佳。 2.硬件介绍: 2.1 STC89C52简介 STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,STC89C52单片机在电子行业中有着广泛的应用。 STC89C52单片机参数如下: 1、兼容MCS51指令系统 2、4KB可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、128*8bitRAM; 5、2个16位可编程定时/计数器中断; STC89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。在本设计中详细端口分布见图 STC89C52端口图 2.2 四位数码管 四位数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图2-2所示。通过控制各个LED的亮灭来显示数字。 四、软件方案设计: 选用C51来编程,首先要有初始化程序,通过初始化程序,将对主程序所用到的变量、常量以及各个参数和所调用的子函数定义。其次还有显示程序、键盘扫描程序、中断服务程序、延时子程序,系统软件流程图图如图所示: 开始 系统初始化 数码管显示 按键的扫描及处理 主函数 计时是否到99.99秒 回零重新计时 否 系统流程图 五、设计原理: 利用STC89C52RC单片机的定时器,使其能精确计时。利用中断系统使其实现启动、暂停以及复位清零的功能,P1.0、P1.1、P1.2三个按钮分别实现启动/暂停/清零功能。 计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。 再看按键的处理。三个按键采用中断的方法,设置外部中断0脉冲边沿触发方式,当按键按下时便会触发中断,从而实现启动/暂停和复位。 开始键、暂停键、以及清零键使用了外部中断,所以需要连到单片机的P1.0、P1.1和P1.2接口上。 显示电路由四位数码管组成,采用动态显示方式。设计框图如下图: 按键 开关 STC89C52 单片机 数码管 显示 图2秒表设计框图 六、设计源程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar aa,qian,bai,shi,ge; sbit LED1=P3^4; sbit LED2=P3^5; sbit LED3=P3^7; sbit LED4=P3^6; sbit s1=P1^0; //启动键 sbit s2=P1^1; //暂停键 sbit s3=P1^2; //清零键 sbit rd=P1^4; uchar code table[]={ //不带点的编码表 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; uchar code table1[]={ //带点的编码表 0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init(); void display(uchar qian,uchar bai,uchar shi,uchar ge); void keyscan() { rd=0; if(s1==0) { delay(5); if(s1==0) { while(!s1); TR0=1; //打开定时器,开始计时 } } if(s2==0) { delay(5); if(s2==0) { while(!s2); TR0=0; //关闭计时器,停止计时 } } if(s3==0) { delay(5); if(s3==0) { while(!s3); qian=0; bai=0; shi=0; ge=0; //显示清零 } } } void main() { init(); while(1) { keyscan(); display(qian,bai,shi,ge); } } void display(uchar qian,uchar bai,uchar shi,uchar ge) { LED1=0; P0=table[qian]; delay(1); LED1=1; LED2=0; P0=table1[bai]; delay(1); LED2=1; LED3=0; P0=table[shi]; delay(1); LED3=1; LED4=0; P0=table[ge]; delay(1); LED4=1; } void init() { TMOD=0x01; //设置定时器0工作方式1 TH0=(65536-1000)/256; TL0=(65536-1000)%256; // 高低8位赋初值 EA=1; //打开总中断 ET0=1; //打开定时器T0 //TR0=1; } void timer0() interrupt 1 //中断子程序 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; aa++; if(aa==10) { aa=0; ge++; //溢出10次,0.01s位加一 if(ge==10) { ge=0;//0.01s位到10了,清零,0.1s位加一 shi++; if(shi==10) { shi=0; //0.1s位到10了,清零,1s位加一 bai++; if(bai==10) { bai=0;//1s位到10了,清零,10s位加一 qian++; } } } } } 七、单片机显示效果图: 启动/清零图 暂停/计时图 八、测试结果分析: 通过以上的分析,我们可知所设计的电子计时秒表,既可以进行启动记时,也可以通过按键来实现暂停,并能通过复位清零键来使秒表记时器复位,以实现重新记时,在记时到99秒时,秒表会自动清零,需要重新按开始键才可以。 九、设计心得体会: 本次题目要求我们用定时器/计数器设计一个简单的电子计时秒表,能显示计时状态和结果。要求进行电路实验或仿真,并使用C语言进行程序的开发。 能力拓展训练使得我们又一次熟悉了已学的C语言和先学的单片机的应用。通过这次能力拓展使我们的动手能得到了提升,而且学会了团队合作完成一项任务。 在做这次设计之前,通过查找相关资料,我们已经对本次设计有了一定的了解,在查询了大量资料和组内讨论之后,我们最终能成功的做出了本次设计。但是在此过程中发现有很多知识点没有掌握,基础知识不可缺少,此外一些核心的高层次的知识点更是不可忽视。在完成设计的过程中我意识到,任何时候任何事情,闭门造车是不可取的,要一直坚持向周围的师长、同学求教,以取得新的思考途径的重要性。 这次的能力拓展训练主要运用C语言编程和单片机原理等方面的知识,充分锻炼了我们运用所学知识解决实际问题的能力。通过查阅资料,温习课本知识和学习笔记,我深刻领悟到各课程之间的联系,并初步掌握了综合运用课本知识分析问题的方法。本次简单秒表的设计采用单片机与微机原理编程的方法,达到了预期目的,完成了设计的任务要求。 这次设计充分检验了我们自学的能力。这次的设计任务涉及到了许多软件方面的知识。通过查阅资料,我不但巩固了所学的课本知识,而且学会了熟练使用许多软件。通过这次拓展训练,我也意识到自己的不足,比如说不能很好控制秒表计时的时间间隔很是棘手才得以解决等等,以后还是要多多学习相关知识,虚心请教他人才能取得长足的进步,是自己的专业知识技能更近一步,使自己在以后的学习工作有能力胜任相关的工作要求。 十、参考文献: [1]郭天祥,51单片机C语言教程-入门、提高开发、拓展全攻略,电子工业出版社,2009.1 [2]徐淑华, 程退安等.单片微型机原理及应用. 哈尔滨:哈尔滨工业大学出版社. 2005.1 [3]李群芳,单片微型计算机与接口技术,电子工业出版社,2008
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服