可存储多组数据的秒表设计Word格式文档下载.docx
《可存储多组数据的秒表设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《可存储多组数据的秒表设计Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
(1)用5位数码管进行秒数时间显示,分别是分2位,秒2位,1/10秒1位;
(2)有5个按键,分别是开始、记录、停止、清零、回显。
(3)开始上电时显示00:
00:
0,按下“开始”键开始定时;
每按下一次“记录”键将当前时间记录、存储;
按下“停止”键定时结束,同时显示数据保持不变;
按下“清零”键显示数据为00:
0;
每按下一次“回显”键将所存储的数据依次显示。
三、器件清单
名称
数量(单位:
个)
共阴数码管
5
9013
按键
6
LED
10uF电容
1
104电容
2
22pF电容
4.7K电阻
10K电阻
1K电阻
开关
晶振
单片机
四、概述
1.意义:
时间是日常生活、体育竞技、工业、医学、航天等领域最常遇到的一个物理量。
测量时间的基本方法是使用秒表直接测量。
其中秒表的精度是人们最关心的,这就要求它的计时最小单位足够小,显示模块的灵敏度足够高。
特别是在体育测量中对秒表的精度和功能有较高的要求。
本设计要使时间的测量准确,可记录多组数据,就必须使系统有更小的计时单位和记录功能。
本设计能解决竞技时,一表记录多人不同成绩。
其中一键实现开始、暂停、清零,简化了电路,操作简便。
2.本人所做的工作:
在设计系统之前,先了解一般秒表的设计方法。
经过分析,确定了设计方案。
了解方案中的模块功能从而确定元器件选择。
根据方案绘制了仿真电路图,在仿真过程中对元器件进行修订和更改,使系统更加稳定和简便。
最后负责实物电路的连接与测试。
3.系统主要功能
1.实现计时功能:
当按下开始键时,秒表开始计时。
计时范围在0~59分59秒990毫秒。
2.实现多组数据记录功能:
当计时开始后,按下记录键,每按一次记录一组数据,暂停后,可以对记录数据翻动查询。
3.实现一键三功能:
一键实现开始、暂停、清零功能。
五、程序流程图
六、软件设计
#include<
reg51.h>
intrins.h>
codeunsignedcharnum[]={0x7e,0x30,0x6d,0x79,0x33,
0x5b,0x5f,0x70,0x7f,0x73};
//段选
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitkey5=P1^4;
sbits0=P2^0;
//位选
sbits1=P2^1;
sbits2=P2^2;
sbits3=P2^3;
sbits4=P2^4;
voidinit();
//初始化
voiddelay();
//延迟程序
voiddisplay();
//显示程序
voidkey_1();
//按键程序,开始,停止,清零
voidkey_2();
//记录
voidkey_3();
//回显
staticunsignedcharMs0[10],Ms1[10],Sec0[10],
Sec1[10],Min0[10],Min1[10];
//记录,最大记录限制10组
staticintkey_n,j,x;
unsignedcharms0=0,ms1=0,sec0=0,sec1=0,min0=0,min1=0;
voidmain()
{
init();
while
(1)
{
key_1();
key_2();
key_3();
display();
}
}
voiddelay()
{
unsignedinti;
for(i=0;
i<
600;
i++);
}
voidkey_1()
if(!
key1)
{
delay();
if(!
key1)
while(!
key1)
{;
TR0=1;
}
key2)
{
TR0=0;
while(!
key2);
}
key3)
ms0=ms1=0;
sec0=sec1=0;
min0=min1=0;
for(j=0;
j<
10;
j++)
Min0[j]=0;
Min1[j]=0;
Sec0[j]=0;
Sec1[j]=0;
Ms0[j]=0;
Ms1[j]=0;
j=0;
x=0;
voidkey_2()
key4)
delay();
key4)
{
if(j==10)
TR0=0;
Min0[j]=min0;
Min1[j]=min1;
Sec0[j]=sec0;
Sec1[j]=sec1;
Ms0[j]=ms0;
Ms1[j]=ms1;
j++;
voidkey_3()
key5)
key5)
{;
if(x==j)
x=0;
else
x+=1;
min0=Min0[x];
sec0=Sec0[x];
ms0=Ms0[x];
min1=Min1[x];
sec1=Sec1[x];
ms1=Ms1[x];
x++;
voiddisplay()
s0=1;
s1=0;
s2=0;
s3=0;
s4=0;
P0=num[ms1];
s0=0;
s1=1;
P0=num[sec0];
s2=1;
P0=num[sec1];
s3=1;
P0=num[min0];
s4=1;
P0=num[min1];
voidinit()
ms0=ms1=sec0=sec1=min0=min1=0;
key_n=0;
P2=0xff;
P1=0xff;
TMOD=0x01;
TH0=0xd8;
TL0=0xef;
EA=1;
ET0=1;
voidtiem0(void)interrupt1using1
ms0++;
if(ms0==10)
ms0=0;
ms1++;
if(ms1==10)
ms1=0;
sec0++;
if(sec0==10)
sec0=0;
sec1++;
if(sec1==6)
{
sec1=0;
min0++;
if(min0==10)
min0=0;
min1++;
if(min1==6)min1=0;
}
}
七、原理图
八心得体会
作为一名电气专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想做类似的课程设计就为我们提供了良好的实践平台。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
这个设计过程中,我们通过在原有的计数器系统进行了改进,使之增添了暂停、计数、清零等的三个控制功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。
设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。
这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。
九、参考文献
[1]张毅刚.单片机原理与应用.定时期/计数器的编程和应用.北京:
高等教育出版社.2006.6(4)133~135
[2]彭为,黄科,雷道仲.单片机典型系统设计实例精讲.北京:
电子工业出版社.2006.5(3,4)248~268
[3]刘刚,秦永左.单片机原理及应用.北京:
中国林业出版社,2006.9
[4]李建忠.单片机原理及应用.西安:
西安电子科技大学出版社,2002
课程设计
评语
成绩
指导教师
(签字)
年月日