单片机秒表课程设计报告.docx

上传人:scccc 文档编号:13007320 上传时间:2021-12-10 格式:DOCX 页数:12 大小:213.37KB
返回 下载 相关 举报
单片机秒表课程设计报告.docx_第1页
第1页 / 共12页
单片机秒表课程设计报告.docx_第2页
第2页 / 共12页
单片机秒表课程设计报告.docx_第3页
第3页 / 共12页
单片机秒表课程设计报告.docx_第4页
第4页 / 共12页
单片机秒表课程设计报告.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《单片机秒表课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机秒表课程设计报告.docx(12页珍藏版)》请在三一文库上搜索。

1、一:课程设计题目秒表 /时钟计时器二:课程设计任务与要求:利用89C51单片机设计秒表/时钟计时器,通过LED显示器显示秒十位和个 位,在设计过程中用一个存储单元作为秒计数单元, 当一秒钟到来时, 就让秒计 数单元加 1 ,当秒计数达到 60 时,就自动返回到 0,重新开始秒计数。 三:设计过程:1.设计原理: 此次课程设计题目是 秒表/时钟计时器,由课程设计的要求和任务, 我采用的C语言编程,设计秒表要求一秒定时,采用了定时器和FOR循环来定时,其中一个软件一个硬件,会在方案论证中分析在 1 秒时采用的是硬件定时, 即用单片机内部的定时器 TO。先将时钟初始化,赋入初值 50ms定时,循环2

2、0 次来进行1秒定时。然后由定义的变量seco nd来进行加一运算,然后将其值通 过 P1, P2 口在数码管上进行显示。其中数码管的显示时,我在程序中首先定义 了一个关于数码管显示的字形码定义,以便在显示时调用即可。( 1 )方案论证:方案 1 :在方案 1 中,我们所选用的是软件定时,即用 for 循环来定时 1 秒进行 显示的变化。方案2:在方案2中,采用的是硬件定时,即用单片机内部的定时器 T0o先将时 钟初始化,赋入初值50ms定时,循环20次来进行1秒定时。方案比较: 我们从两方面进行两种方案的比较, 第一,由于此次课程设计要求是 秒表,则在定时时要求比较精确, 所以采用硬件的定时

3、器定时时比较准确的。 第 二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,不能显现出来, 但真正大程序时会很占用资源的, 所以在用定时中断过程中是非 常节省资源的。综合上述两种比较,我们选用了第二种方案。( 2)创新点 :a.在课程要求的基础上,我们做成的电路板上,用复位键来控制秒表计时的重新 开始,即清零。b.在以上设计的基础上,我们又重新设计了一个程序,基本原理没有变,只是将秒表在到达59清零的瞬间向分的位数上进1,程序将会在附录3中给出2硬件系统框图与说明:ir-ttAWT:l«f.314 扫* £dl I 丄血匕 j.4i iifri 盘!L/

4、F'tryi See I* iJjt.再1£ . X- LilZl 3|r) 拠卩血|I9匠l* 題2毗口zzDEV CE 5TjrmuiiCAP吾EETEW3EKS-HXD0 711941 thIij o iMviEggilil FlF-FP' iTmiRITDITI首先,连接的是单片机51的最小系统,其中包括时钟电路,复位电路, 在此中包括的元器件在附录3中。我们所选用的数码管是共阴极的,置 1时 导通,所以将单片机的连接数码管的adp,P2 口同理。然后在数码管秒表个 十位的显示则由软件程序来控制。3.软件主要模块流程图与说明:初始化 斗Coun t+Secon

5、d=59Cou nt=20Second+Second=01!数码管显示当前 值在真正应用时,我们的一秒定时是用定时中断的,但单片机的 T0 最长也不 能1秒定时,所以我们采用50ms定时循环20次,用count来控制。当秒的时间 达到 59 时,用软件来清零时循环从 00 重新开始。四:课程设计总结:1:本次的课程设计, 使关于 51 系列单片机的, 正是我们刚刚学到的 51 单片机, 在平时课程的学习中, 我们仅限于理论知识的讲解, 即使知识是很扎实的, 实际 应用并不是这样的。 开始时我也觉得自己的理论知识已经够了, 但当我拿到课题 时,在脑海里想的是非常好的, 但真正编成和控制时, 理论

6、和实际结合不到一起, 甚至于 51 芯片的使用我都感觉很迷茫,还是经过搜集大量资料才将理论与实际 结合到一起了。本次课程设计我主要负责编程,这次不仅锻炼了我C语言的知识, 更加我们正在学习的 51 的定时与中断结合在一起,进行了实际的操作,让我的 知识掌握得更加牢固。 本次的实际经验之后, 让我对单片机定时赋初值有了更新 的认识, 对程序的循环顺序、 结构类型都有了非常深刻的认识, 对真正硬件的连 接也有了认识,不再将自己的知识局限于自己狭隘的空间中。2:通过这次课程设计一一秒表/时钟计时器,使我又重新开始学习 C语言,因为 C语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关

7、资 料来了解, 才有了一点眉目。 刚开始以为可以用汇编很容易就写出来, 因为我们 正在学习汇编语言,以为学的很明白了, 但是用汇编时才发现原来都不怎么熟练, 编了一会程序发现只有一种感觉一一举步维艰啊!还是放弃汇编选择C语言吧!对于单片机,我们课本学习的是 80C51,但是这次做课程设计用的是 89C51,这 样不仅使我们掌握了 80C51,而且对89C51也有了一定的了解了,在课堂上学习 的都理论的, 跟实际永远有一定的差距, 不实践就不会发现问题。 通过这次课程 设计使我把课堂上学习的东西都用到了实践中,例如:定时 /计数器的应用与中 断。学习的时候不怎么理解, 但是在实践中应用了以后就自

8、然了解了。 这次课程 设计使我受益匪浅,而且都是实际的东西。3:这次课程设计,我们做的是秒表/时钟计时器,最终我们选择的是用 C语言编 程,但原来学的也只是能看懂别人写好的程序而已, 通过这次课程设计, 更加熟 练了 C语言的程序设计思路。这次课程设计我主要负责焊接电路板, 焊接过程中最困难的地方就是数码管的焊接,因为数码管的管脚和89C51 的管脚是不对应的,而且要避免接线的交叉, 所以最后确定了布线最合理的方案, 如硬件电路图 所示。我们这次设计的出现的最大问题是电路当中的复位电路,开始电路在 Proteus 上仿真时都是可以正常复位的,但实际的电路中复位按键后的电阻的参 数不合理,导致了

9、 RST上有电压,复位电路无效,所以最后我们去掉了那个电阻, 此时复位电路才有效,所以理论和实际永远有差距,不实践永远发现不了问题。 在焊接前我们没有想到给数码管用插槽固定, 而是直接焊在了电路板上, 这造成 了后面的很多麻烦, 我们方案中用的是共阴极的数码管, 焊接第一个数码管时没 有注意型号, 等焊接到一半时才发现焊上的是共阳极的, 所以不得不解焊重新焊 接,这也是一个教训, 以后焊接器件时能用上插槽的尽量用插槽, 这在器件出了 问题时很方便更换。 最后焊接完成后在试验的过程中, 刚一接通电源后的上电电 压烧坏了 LED显示器显示秒十位的c脚,这也是这次课程设计的遗憾,以后在硬 件的实验时

10、还要多小心,避免造成不必要的损失。 4:通过本次秒表/时钟计时器的设计实验,使我对这学期学所学 51 系列的单片 机从理论知识到实践硬件的应用以及 C语言知识的回顾,更加熟悉了 89C51单 片机的每一个拐角的输出和各项功能, 而且对硬件电路的布线以及焊接能力有了 很大的进步。 在这次试验中, 我主要负责的是硬件电路的布线和焊接以及硬件测 试。由于本次试验电路比较简单,所以我们按照电路图布线后就马上开始焊接。 焊好一个数码管检测后才发现我们把共阴极的数码管焊接成共阳级的了, 很不容 易才解焊下来, 有了这次教训后, 我们在焊接其他元器件的时候都提前检测好才 开始焊接。第一次焊接完成后我们上电后

11、发现实现了基本功能,可是不能复位, 经过我们的讨论和反复试验,我们发现软件仿真和硬件实现并不是完全一致的, 我们按照课本上焊接后终于完全实现了秒表 /时钟计时器的功能。快要验收时我 们发现数码管的一个二极管坏了, 这才让我们意识到没有焊接插针的缺陷, 以后 一实验时一定要尽可能让原件可以取下, 以便出现问题是更好的更换。 这次课程 设计终于圆满的完成了, 我从理论和硬件以及实践上懂得了很多, 也明白了一个 团队的合作精神可以让我们战胜所有的困难。五:附录附录1:电路原理图: 附录 3:源程序及程序解释:"5Tn wiD-rWlihDIWi坊珀AIR0.ZjfiAHrAH沖E"

12、;FURhjwFsrwrFT*171)ll»TlP込ST > T7L%ullnu附录2:实物图:#include <>/ 包含头文件 REG51 H#define uint unsigned int#define uchar unsigned charunsignedcharcodeSEG710=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f数 码管 09 的字型码uchar count,second;/定义变量*/void init()/定义定时器T0初始化程序TMOD=0x01;TH0=(65536-50000

13、)2/56;/赋初值定时 1 秒TL0=(65536-50000)%256;ET0=1;TR0=1;EA=1;P2=SEG70;P1=SEG70;void delay(unsigned int k)/定义延时程序unsigned int i,j;for(i=0;i<k;i+)for(j=0;j<121;j+)/void main(void)init(); / 定时器初始化 while(1) / 无限循环J/void timer0() interrupt 1 / 定时器 T0 中断 TH0=(65536-50000)2/56;TL0=(65536-50000)%256;count+;

14、if(count=20) count=0; second+;if(second>59)second=0;P1=SEG7second/10; / 显示秒的十位 delay(10); / 延时 P2=SEG7second%10; / 显示秒的个位 delay(10);附录 4: for 循环程序#include <>unsigned char code SEG710=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay(unsigned int k);/void main(void)unsigned char v

15、al1=0;long i;while(1)for(i=0;i<380;i+)/*P2=0xfd;*/P2= SEG7val1%10; delay(1);/*P2=0xfe; */P1= SEG7val/10; delay(1); val1=val1+1; if(val1>59) val1=0;/ void delay(unsigned int k)unsigned int i,j; for(i=0;i<k;i+)for(j=0;j<121;j+)J附录 5:汇编程序ORG 0000HSTART:MOV R1,#20MOV R2,#10MOV R3,#6MOV R4,#0

16、0H LOOP1:MOV R2,#10 LOOP: MOV A,R4MOV B,#0AHDIV ABMOV DPTR,#TABMOVC A,A+DPTRMOV P1,AMOV A,BMOVC A,A+DPTRMOV P2,ALCALL DELINC R4DJNZ R2,LOOPDJNZ R3,LOOP1MOV P1,#00MOV P2,#00LJMP STARTDEL:MOV R7,#12DEL1:M0V R6,#123NOPDEL2:DJNZ R6,DEL2DJNZ R7,DEL1DJNZ R1,DELRETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND附录6:使用元器件一览表:序号名称型号数量备注1单片机P89C5112数码管SM4205623开关WJW60314电阻10K10025电容30PF10uF36电压表VC890D1附录7:参考资料:单片机原理及接口技术李全利 迟荣强 编着 C语言程序设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1