公文素材库 首页

简易秒表

时间:2019-05-29 07:17:28 网站:公文素材库

简易秒表

学号:课程名称:单片机与嵌入式系统基础与实训姓名:班级:上机内容:简易秒表上机实验性质:□综合性实验√设计性实验□验证实验实验时间:201*年5月21日实验地点:实验设备:计算机实验报告:(包括:目的、方法、原理、结果或实验小结等)。一、实验目的:1、掌握单片机外部中断的原理及用法;2、掌握单片机定时器中断的原理及用法。二、实验内容:K5键做启动停止秒表(外部中断0),K6键做秒表归零(外部中断1),4位数码管动态扫描显示(定时器中断0),最大计数值9999秒。要求先进行仿真,而后下载到实验箱中观察实际效果。三、实验设备及器件1、ME850单片机实验箱(包含芯片及连接线等)2、PC机四、实验步骤1、根据实验要求,设计出实验流程图如图1所示:2、用KeiluVision4根据实验要求写出相应程序,程序代码如下所示:#definecount_M2250#defineTH_M2(256-count_M2)#defineTL_M2(256-count_M2)intcount_T1=0;//计算T1中断次数/*声明七段数码管*/unsignedcharcodeTAB[]={0xc0,0xf9,0xa4,0xb0,0x99,//0~40x92,0x82,0xf8,0x80,0x90};chardisp[4]={0xc0,0xc0,0xc0,0xc0};//声明数码管显示四位,即0000unsignedcharcodeBIT[]={0xFE,0xfD,0xFB,0xF7//0~4};intseconds=0;//秒数intscan=0;//扫描信号charqw,bw,sw,gw;voidmain(){IE=0x8f;//10001111,启用INT0/1、TF0/1中断TCON=0x05;//下降沿触发TMOD=0X21;//00100001,T1采用mode2、T0采用mode1TH0=TH_M1;TL0=TL_M1;//设置T0计数值高8位、低8位TR0=0;//不启动T0TH1=TH_M2;TL1=TL_M2;//设置T1自动加载值、计数值TR1=1;//启动T1P3=0xff;//设置K5/K6输入while(1);}(接下)开始声明变量设置中断、定时器,启动扫描定时器,开启Timer0定时nonoTR1=1TR0=1yesyes启动T0定时器启动T1定时器T0中断子程序T_IST1中断子程序T_4ms重设定时值no32次no次20yes重新计数yes重新计数,秒数加1no超过千位数?no60秒?yesyes从个位数开始秒数归0输出数字信号填入显示区输出扫描信号INT0中断子程序int_swINT1中断子程序int_RST秒数归0切换sw0图(接上)voidT0_1s(void)interrupt1{TH0=TH_M1;TL0=TL_M1;if(++count_T0==20){count_T0=0;seconds++;if(seconds==9999){seconds=0;}}qw=seconds/1000;bw=(seconds-qw*1000)/100;sw=(seconds-qw*1000-bw*100)/10;gw=seconds-qw*1000-bw*100-sw*10;disp[3]=TAB[qw];disp[2]=TAB[bw];disp[1]=TAB[sw];disp[0]=TAB[gw];}voidT1_4ms(void)interrupt3{if(++count_T1==16){count_T1=0;if(++scan==5)scan=1;SEG=0xff;SCANP=BIT[scan-1];SEG=disp[scan-1];}}voidint0_sw(void)interrupt0//int0中断子程序开始{TR0=~TR0;//切换T0为开始/暂停}voidint1_RST(void)interrupt2//int0中断子程序开始{seconds=0;//秒数归零disp[0]=disp[1]=disp[2]=disp[3]=0xc0;//显示}4、把编译好的HEX文件下载到实验箱的单片机内,观察效果。显然,看到实验结果:数码管上的数字从1开始计数,直到计数到9999时返回为0。当按下K5键时开始计时,按下K6键时值归为0。五、实验小结:通过这次实验让我了解和掌握了单片机外部中断的原理及用法以及定时器中断的原理及用法。在这次试验中,我深刻感受到了使用中断来写程序,能给程序带来巨大的好处。不仅能使程序简结,而且使程序的条理十分清楚。节省CPU的空间,加快程序的执行速度。任课教师评语:教师签字:年月日注:每学期至少有一次设计性实验。每学期结束请任课教师按时按量统一交到实验中心处。实验报告A4纸双面打印。

扩展阅读:简易秒表的设计

武汉理工大学《能力拓展训练》说明书

简易秒表的设计

1设计意义及要求

1.1简易秒表的设计意义

简易秒表的设计是在我们学习了单片机技术之后的一次检测。在已学内容的基础上熟

练掌握,对未曾学习过的内容加以了解,从多个角度更加深刻理解和掌握单片机的理论与运用。通过本次设计,能够提高大家对自己电工电子设计的兴趣与了解,以更好的理解本专业,从而在今后的学习中打下一个很好的基础。

1.2简易秒表的设计要求

1)利用单片机作为主控制器实现电子秒表,用4位LED数码管显示时间。2)设置外部按键SB,当按键SB第一次按下时启动秒表开始计时;当第二次按下按键S1时秒表停止计时,当第三次按下按键S1时秒表回零;即用一个按键S1来控制秒表的启动、停止和回零功能。

武汉理工大学《能力拓展训练》说明书

2简易秒表硬件电路设计

采用ATMEL公司生产的AT89C51单片机控制器,用4位共阴LED数码管显示时间,为了节省单片机的I/O资源,LED数码管采用动态显示方式,由P2口的低4位输出位选信号,P1口输出LED数码管的显示段码。用非门来提高P2口的驱动能力,使LED管达到合适的亮度。完成设计的仿真电路如图2-1所示。

图2-1基于单片机控制的秒表仿真电路图

武汉理工大学《能力拓展训练》说明书

3程序设计

采用主程序调用子程序的设计方法,主程序首先对定时器和有关寄存器及存储单元进行初始化,调用按键扫描子程序和显示子程序,判断计时时间是否到9分59秒。主程序设计流程图如图3-1所示。

计时时间到了9分59秒吗?计数单元清零

图3-1主程序设计流程图

开始初始化定时器将计数单元3FH-42H清零,将存放按键次数的寄存器R7清零,将存放位选值的寄存器R2清零,关闭定时器。调用按键扫描子程序调用显示子程序N3.1定时初值的计算

按12MHz的时钟频率计算,其机器周期为1s,选用定时/计数器工作方式1,定时时间50ms。

武汉理工大学《能力拓展训练》说明书

计算初值如下:

计数值N=定时/计数器最大值M定时/计数器初值X则初值X=MN

机器周期为TM=12×1/osc=12×1/12×106=1s采用定时器工作方式1,所以初值为X=21650ms/1us=15536=3CB0H所以TH0=3CH,TL0=B0H

3.2初始化

通过初始化设定定时器0工作方式为方式1,开放定时器0的中断及总中断,分别给存放毫秒、秒、分的计数单元3FH,40H,41H,42H清零。关闭定时/计数器T0。给存储按键次数的寄存器R1清零。

3.3判断有无键按下,并进行按键处理

因为只有一个与P3.0相连的接独立式按键,所以用JBP3.0,KEYEND指令来读按键的状态。当P3.0=0时则有键按下,然后进行10ms的延时消抖,延时消抖后将存放按键次数的寄存器R7加1,接着判断R1中的值是多少?如果是1(表示第一次按键)则用SETBTR0指令启动定时器T0;如果是2则用CLRTR0指令关闭定时器T0;如果是3则将存放时间的3FH,40H,41H,42H单元及存放按键次数的R1清零。程序设计流程图如图3-2所示。

武汉理工大学《能力拓展训练》说明书

开始将累加器A的内容压入堆栈N有键按下吗?Y按键延时消抖按键按下次数处理启动定时器秒表开始计数关闭定时器秒表停止计数秒表复位显示0将堆栈内容弹出至累加器A子程序返回图3-2按键确认程序设计流程图

3.4显示子程序设计

显示子程序的主要作用是根据存放在3FH,40H,41H,42H单元的计数值查表找到跟计数值对应的段码,然后送到对应的LED数码管进行显示。程序设计流程图如图3-3所示。

武汉理工大学《能力拓展训练》说明书

根据计数单元的值,通过查表指令,找到跟计数值相对应的显示段码开始将R0赋初值3FH,R2赋初值08H,R3赋初值4累加器A清零,通过MOVA,@R0指令读取计数单元的值将查表得显示段码送显示器,并从R2读取位选码,并送P2口显示延时R0加1,准备读取下一计数单元,修改R2的值,准备显示下个数码管4个数码管扫描显示完吗?子程序返回

图3-3显示子程序流程图

YN3.5中断子程序设计

本任务中定时器T0定时50ms,每到50ms,T0产生一次中断,进入中断服务程序。在中断服务程序中,首先将累加器A中内容压入堆栈,保护好现场,接着给T0重装初值。然后50ms计数单元加1,再判断计数单元是否加到2(即0.1s),若没有则中断返回;若加到了,则首先50ms计数单元清零,接着将毫秒的计数单元加1。

再判断毫秒计数单元是否到10(即1s),若没有则中断返回;若到了10,则将毫秒计数单元清零。然后将秒的个位计数单元加1,秒的个位计数单元加1后判断是否加到10,若不是则中断返回;若是则将秒的个位计数单元清零,然后秒的10位计数单元加1,再判断

武汉理工大学《能力拓展训练》说明书

秒的10位计数单元是否到6,若不是则中断返回;若是则将秒的十位清零,分计数单元加1。程序设计流程图如图3-4所示。

中断返回

图3-4中断服务程序设计流程图

7

开始将A中内容压入堆栈,单元43H中的内容加1N中断了2次吗?中断次数单元清零,毫秒计数单元值加1N毫秒计数单元值等于10?毫秒计数单元清零,秒的个位计数单元值加1N秒的个位等于10吗?秒计数单元清零,秒的十位计数单元值加1N秒的十位等于6吗?秒十位计数单元清零,分的计数单元值加武汉理工大学《能力拓展训练》说明书

4小结

本次能力拓展训练完成的简易秒表是以单片机(AT89C51)为核心,结合相关的元器件,再配以相应的软件,达到实现秒表的功能。通过这次能力拓展训练,我对单片机有了更深入的理解,对单片机的硬件设计、软件设计以及硬件电路的工作原理也都有了新一层的理解。这是我第一次编写单片机程序,通过把课本上的理论与生活中的实际问题结合起来,使我学到了很多东西。把程序拆分成几部分一一进行编写、调试,在编程中出现问题时,严格谨慎,仔细分析、调试,一定会从中发现错误,克服困难,同时也使我意识到了自己对于单片机方面的知识知道的太少了,对于书本上的很多知识还不能够灵活运用,还有很多需要学习的地方。

这次能力拓展训练使我感受到了理论与实际相结合的目的及其重要意义,不但使我对单片机有了更深刻的理解,还提高了我动手查阅资料的能力还锻炼了自己独立思考问题的能力。在完成本次训练的过程中,我查阅了很多参考书及运用自己所掌握的知识完成此次设计。在进行操作的过程中遇到了许多的问题,通过自己的耐心研究以及与同学的讨论终于得以圆满的解决种种问题,因此也更加牢固的掌握了这些知识,在今后的学习和实践中也将能够运用这些知识和技能。在这里我也感谢所有给予我帮助的老师和同学,希望以后有更多的机会来锻炼自己,为以后的学习、生活打下良好的基础。同时在这次设计中也暴露出自己的不足,基础知识不够扎实,我会在以后的日子里加以改正来提高自己的综合能力。

武汉理工大学《能力拓展训练》说明书

参考文献

[1]康华光.电子技术基础-数字部分(第五版).高等教育出版,201*.1[2]伍时宇.数字电子技术基础.清华大学出版社,201*[3]周惠朝.常用电子元件及典型应用.电子工业出版社,201*

[4]刘修文主编.实用电子电路设计制作300例.中国电力出版社,201*[5]马斌.单片机原理及应用.人民邮电出版社,201*

武汉理工大学《能力拓展训练》说明书

附录1程序

AJMPTIMERORG0030H

MAIN:MOVDPTR,#TABLEMOVSP,#50H

MOVTMOD,#01H;定时器T0的工作方式为方式1MOVIE,#82HCLRTR0

CALLCLEARLOOP:CALLSCANKEYCALLDISPMOVA,42HCJNEA,#09,E3MOVA,41HCJNEA,#05,E3MOVA,40HCJNEA,#09,E3MOVA,3FHCJNEA,#09,E3CLRTR0

CALLCLEARE3:AJMPLOOP

CLEAR:MOVA,#00HMOVR1,#3FHE2:MOV@R1,AINCR1

CJNER1,#43H,E2MOVR7,#00HRET

;对计分、秒、毫秒计数单元清零;调用按键扫描子程序;调用显示子程序

;判断定时时间是否到9分59秒;时间到了9分59秒关闭定时器并自动回零;对分、秒、毫秒计数单元清010

武汉理工大学《能力拓展训练》说明书

SCANKEY:PUSHA

JBP3.0,KEYEND;判断按键SB是否按下?CALLDELAY_10MS;延时消抖INCR7;按键次数寄存器加1MOVA,R7

CJNEA,#01,STOP;是第1次按下吗?SETBTR0AJMPKEYEND

STOP:CJNEA,#02,RESETCLRTR0AJMPKEYEND

RESET:CJNEA,#03,KEYENDCALLCLEARKEYEND:POPARET显示子程序:

DISP:CLRAMOVR0,#3FHMOVR2,#08HMOVR3,#04

E1:MOVA,@R0MOVCA,@A+DPTRMOVP2,#00HMOVP1,AMOVA,R2MOVP2,A

MOVR6,#255DJNZR6,$INCR0

;启动秒表计时;是第2次按下吗;;秒表停止计时;是第3次按下吗?;秒表复位;读取分、秒、毫秒计数单元的值;查表找跟计数值相对应的显示段码;消隐;显示时间11

武汉理工大学《能力拓展训练》说明书

RRAMOVR2,ADJNZR3,E1RET中断子程序:

TIMER:PUSHA

MOVTH0,#3CHMOVTL0,#0B0H

INC43HMOVA,43H

CJNEA,#02,END_TIMEMOV43H,#00HINC3FHMOVA,3FH

CJNEA,#10,END_TIMEMOV3FH,#00HINC40HMOVA,40H

CJNEA,#10,END_TIMEMOV40H,#00HINC41HMOVA,41H

CJNEA,#06,END_TIMEMOV41H,#00HINC42HEND_TIME:POPARETI

DELAY_10MS:MOVR5,#50D1:MOVR4,#100

;送定时50ms的初值;中断次数单元加1;是否中断了2次?;中断次数单元清零

;中断了2次,0.1S(毫秒)计数单元加1;到了1秒吗?;到了1秒,毫秒计数单元清零;秒的个位计数单元加1;到了10秒吗?

;到了10秒,秒个位计数单元清零;秒的十位计数单元加1;到了60秒吗?

;到了60秒,秒的十位计数单元清零;分计数单元加1武汉理工大学《能力拓展训练》说明书

DJNZR4,$DJNZR5,D1RET

TABLE:DB3FH,06H,05BH,4FH,66H,6DH,7DHDB07H,7FH,6FHEND

武汉理工大学《能力拓展训练》说明书

附录2所需元件清单元件名称74LS1410K电阻AT89C517SEG-MPX4-CC按键导线

14

元件数量41111若干

友情提示:本文中关于《简易秒表》给出的范例仅供您参考拓展思维使用,简易秒表:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


简易秒表
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/673043.html
相关阅读
最近更新
推荐专题