单片机秒表课程设计报告样本Word文件下载.docx
- 文档编号:13268453
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:11
- 大小:109.19KB
单片机秒表课程设计报告样本Word文件下载.docx
《单片机秒表课程设计报告样本Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机秒表课程设计报告样本Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
在方案1中,我们所选用的是软件定时,即用for循环来定时1秒进行显示的变化。
方案2:
在方案2中,采用的是硬件定时,即用单片机内部的定时器T0。
方案比较:
我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,因此采用硬件的定时器定时时比较准确的。
第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来,但真正大程序时会很占用资源的,因此在用定时中断过程中是非常节省资源的。
综合上述两种比较,我们选用了第二种方案。
(2)创新点:
a.在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新开始,即清零。
b.在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出。
2.硬件系统框图与说明:
首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路,在此中包括的元器件在附录3中。
我们所选用的数码管是共阴极的,置1时导通,因此将单片机的P1.0~P1.7连接数码管的a~dp,P2口同理。
然后在数码管秒表个十位的显示则由软件程序来控制。
3.软件主要模块流程图与说明:
在真正应用时,我们的一秒定时是用定时中断的,但单片机的T0最长也不能1秒定时,因此我们采用50ms定时循环20次,用count来控制。
当秒的时间达到59时,用软件来清零时循环从00重新开始。
四:
课程设计总结:
1:
本次的课程设计,使关于51系列单片机的,正是我们刚刚学到的51单片机,在平时课程的学习中,我们仅限于理论知识的讲解,即使知识是很扎实的,实际应用并不是这样的。
开始时我也觉得自己的理论知识已经够了,但当我拿到课题时,在脑海里想的是非常好的,但真正编成和控制时,理论和实际结合不到一起,甚至于51芯片的使用我都感觉很迷茫,还是经过搜集大量资料才将理论与实际结合到一起了。
本次课程设计我主要负责编程,这次不但锻炼了我C语言的知识,更加我们正在学习的51的定时与中断结合在一起,进行了实际的操作,让我的知识掌握得更加牢固。
本次的实际经验之后,让我对单片机定时赋初值有了更新的认识,对程序的循环顺序、结构类型都有了非常深刻的认识,对真正硬件的连接也有了认识,不再将自己的知识局限于自己狭隘的空间中。
2:
经过这次课程设计——秒表/时钟计时器,使我又重新开始学习C语言,因为C语言是大一学的,至从学完就再也没用过,因此开始很陌生,我又找了有关资料来了解,才有了一点眉目。
刚开始以为能够用汇编很容易就写出来,因为我们正在学习汇编语言,以为学的很明白了,可是用汇编时才发现原来都不怎么熟练,编了一会程序发现只有一种感觉——举步维艰啊!
还是放弃汇编选择C语言吧!
对于单片机,我们课本学习的是80C51,可是这次做课程设计用的是89C51,这样不但使我们掌握了80C51,而且对89C51也有了一定的了解了,在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。
经过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:
定时/计数器的应用与中断。
学习的时候不怎么理解,可是在实践中应用了以后就自然了解了。
这次课程设计使我受益匪浅,而且都是实际的东西。
3:
这次课程设计,我们做的是秒表/时钟计时器,最终我们选择的是用C语言编程,但原来学的也只是能看懂别人写好的程序而已,经过这次课程设计,更加熟练了C语言的程序设计思路。
这次课程设计我主要负责焊接电路板,焊接过程中最困难的地方就是数码管的焊接,因为数码管的管脚和89C51的管脚是不对应的,而且要避免接线的交叉,因此最后确定了布线最合理的方案,如硬件电路图所示。
我们这次设计的出现的最大问题是电路当中的复位电路,开始电路在Proteus上仿真时都是能够正常复位的,但实际的电路中复位按键后的电阻的参数不合理,导致了RST上有电压,复位电路无效,因此最后我们去掉了那个电阻,此时复位电路才有效,因此理论和实际永远有差距,不实践永远发现不了问题。
在焊接前我们没有想到给数码管用插槽固定,而是直接焊在了电路板上,这造成了后面的很多麻烦,我们方案中用的是共阴极的数码管,焊接第一个数码管时没有注意型号,等焊接到一半时才发现焊上的是共阳极的,因此不得不解焊重新焊接,这也是一个教训,以后焊接器件时能用上插槽的尽量用插槽,这在器件出了问题时很方便更换。
最后焊接完成后在试验的过程中,刚一接通电源后的上电电压烧坏了LED显示器显示秒十位的c脚,这也是这次课程设计的遗憾,以后在硬件的实验时还要多小心,避免造成不必要的损失。
4:
经过本次秒表/时钟计时器的设计实验,使我对这学期学所学51系列的单片机从理论知识到实践硬件的应用以及C语言知识的回顾,更加熟悉了89C51单片机的每一个拐角的输出和各项功能,而且对硬件电路的布线以及焊接能力有了很大的进步。
在这次试验中,我主要负责的是硬件电路的布线和焊接以及硬件测试。
由于本次试验电路比较简单,因此我们按照电路图布线后就马上开始焊接。
焊好一个数码管检测后才发现我们把共阴极的数码管焊接成共阳级的了,很不容易才解焊下来,有了这次教训后,我们在焊接其它元器件的时候都提前检测好才开始焊接。
第一次焊接完成后我们上电后发现实现了基本功能,可是不能复位,经过我们的讨论和重复试验,我们发现软件仿真和硬件实现并不是完全一致的,我们按照课本上焊接后终于完全实现了秒表/时钟计时器的功能。
快要验收时我们发现数码管的一个二极管坏了,这才让我们意识到没有焊接插针的缺陷,以后一实验时一定要尽可能让原件能够取下,以便出现问题是更好的更换。
这次课程设计终于圆满的完成了,我从理论和硬件以及实践上懂得了很多,也明白了一个团队的合作精神能够让我们战胜所有的困难。
五:
附录
附录1:
电路原理图:
附录2:
实物图:
附录3:
源程序及程序解释:
#include<
REG51.H>
//包含头文件REG51。
H
#defineuintunsignedint
#defineucharunsignedchar
unsignedcharcodeSEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//数码管0~9的字型码
ucharcount,second;
//定义变量
/*===================================*/
voidinit()//定义定时器T0初始化程序
{
TMOD=0x01;
TH0=(65536-50000)/256;
//赋初值定时1秒
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
EA=1;
P2=SEG7[0];
P1=SEG7[0];
}
voiddelay(unsignedintk)//定义延时程序
{
unsignedinti,j;
for(i=0;
i<
k;
i++)
{
for(j=0;
j<
121;
j++)
{
;
}
}
//-----------------------------------------------------------
voidmain(void)
init();
//定时器初始化
while
(1)//无限循环
{
;
}
}
//----------------------------------------------------
voidtimer0()interrupt1//定时器T0中断
count++;
if(count==20)
{
count=0;
second++;
if(second>
59)second=0;
P1=SEG7[second/10];
//显示秒的十位
delay(10);
//延时
P2=SEG7[second%10];
//显示秒的个位
}
附录4:
for循环程序
#include<
voiddelay(unsignedintk);
unsignedcharval1=0;
longi;
while
(1)
{
380;
i++)
/*P2=0xfd;
*/
P2=SEG7[val1%10];
delay
(1);
/*P2=0xfe;
*/
P1=SEG7[val1/10];
}
val1=val1+1;
if(val1>
59)
val1=0;
}
voiddelay(unsignedintk)
附录5:
汇编程序
ORG0000H
START:
MOVR1,#20
MOVR2,#10
MOVR3,#6
MOVR4,#00H
LOOP1:
MOVR2,#10
LOOP:
MOVA,R4
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 秒表 课程设计 报告 样本
![提示](https://static.bdocx.com/images/bang_tan.gif)