《单片机秒表计时器.docx》由会员分享,可在线阅读,更多相关《单片机秒表计时器.docx(12页珍藏版)》请在三一办公上搜索。
1、摘要3一、实训目的3二、实训设备与器件3(1) 实验设备3(2) 实训器件3三、实训步骤与要求 4(1) 要求4(2) 方法4(3) 实训线路分析4(4) 软件设计4(5) 程序编制4四、硬件系统设计4五、软件系统设计5六、系统调试9七、实训总结与分析10八、参考资料:11九、附录12摘要:秒表是由单片机的P0 口和P2 口分别控制两个数码管,使数码管工作,循 环显示从0059。同时,用一个开关控制数码管的启动与停止,另外加上一个 复位电路,使其能正常复位,通常还使用石英品体振荡器电路构成整个秒表的结 构电路。一、实训目的(1)利用单片机定时器中断和定时器计数方式实现秒定时。(2)通过LED显
2、示程序的调整,熟悉单片机与LED的接口技术,熟悉LED动 态显示的控制过程。(3)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示和定 时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。(4)进一步学习单片机开发系统的整个流程。二、实训设备与器件(1)实训设备:单片机开发系统、微机、万用表、电烙铁等。(2)实训器件:名称数量7段数码管2电阻10k1电阻1k8键盘开关1电容10微法1电容30皮法2晶振12M189C511万能板1导线若干三、实训步骤与要求(1) 要求:利用实训电路板,以2位LED右边1位显示个位,左边1位显示 十位,实现秒表计时显示。以一个按键开关实现启
3、动、停止、清零等功能。(2) 方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时 器0方式1计数,实现00-59计数。(3) 实验线路分析:采用实训电路板,其原理图参见附录。两个7段LED 数码管分别由单片机的P0 口和P2 口控制,使数码管显示从00-59的字样。用 一个开关控制数码管的启动与停止,另外加上一个复位电路,使其能正常复位。 另外在加上一个晶体振荡电路就够成了整个秒表的电路。(4) 软件设计:软件整体设计思路是主程序进行初始化,以按键开关按下的 次数确定定时器的启动与否,LED通过中断的方式进行显示。后二者间的联系是: 按键按下,则定时器开始计时,中断后在LED上显示
4、,不断循环;按键第二次按 下时,定时器停止计时,LED不显示;按键第三次按下时,返回到初始状态重新 开始。秒定时采用定时器T0中断方式进行,60秒计数由定时器0采用方式1完 成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软 件流程图如图7.1所示。(5) 程序编制:编程时第一次按键为“启动”第二次按键为“停止”,第三 次按键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是 采用条件转移指令“CJNE”,。2位LED显示的数据由显示缓冲区30H31H单元中 的数据决定。四、硬件系统设计硬件电路的设计应从两个方面予以考虑。一是根据应用系统总体设计的参数 范
5、围、测控速度与精度等技术指标要求选择单片机。不同系列单片机或同一系列 不同型号单片机芯片内部提供的资源状况各不相同,如ROM、RAM容量,定时/ 计数器、I/O接口、中断系统等硬件配置,应选择性价比最适合的单片机型。二 是在已选定单片机型号的基础上,根据应用系统的功能要求扩展单片机外部设备 的配置,如键盘、打印机、A/D、D/A、报警电路、驱动电路及通用/专用I/O接 口等。硬件电路的设计原则如下:(1) 在性价比满足应用系统要求的基础上,选择更可靠、更熟悉的单片机, 缩短研制周期。(2) 尽可能选择较成熟的典型应用电路,以提高系统的可靠性。(3) 单片机内部的资源与外部扩展资源应在满足应用系
6、统设计要求的基础上 留有余地,为进一步升级和扩展其功能提供方便。(4) 应充分结合软件方案统筹考虑硬件结构,通常硬件功能较完善,其相应 的软件就简单,但硬件成本较高;而硬件功能略低,其相应的软件就复杂。实际 中应尽量以软件替代硬件来降低成本。(5) 整个系统的相关器件应尽可能做到性能匹配,如电平、速度的匹配等。(6) 充分考虑整个系统的抗干扰设计,如选择具有抗干扰设计的单片机并充 分筛选芯片与器件,在电路中采取隔离和屏蔽措施等。根据以上设计原则,选择较熟悉的MCS-51系列单片机中具有内部程序存储 器的89C51单片机;为实现LED数码显示和键盘控制,直接将开关键盘接到单片 机的P3.7 口,
7、是单片机直接控制开关,其中:按第一次,定时器启动,即数码管开始显示数。按第二次,定时器停 止,即数码管上显示的数停止,显示当前的秒数。按第三次,使数码管上的数复 位。五、软件系统设计待硬件电路接线完成后,通常可先编写简单的测试程序对硬件电路进行测 试,排除硬件电路设计中存在的错误。然后根据设计任务的要求确定系统程序的 整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模 块,明确各模块的功能、时间顺序和相互关系,如系统管理、数据与信息采集、 报警处理、误差处理、标度变换、数据处理、输出控制等;列出详细的资源划分 表,确定各模块的出口和入口状态;建立必要的数学模型,正确描述出系
8、统中输 入和输出间的数学关系;画出各程序模块的详细流程图;根据流程图逐一编写程 序;最后将各个模块连接成完整的程序。(1)软件设计的基本原则。 程序整体结构清晰、简洁、流程合理,主程序尽可能简单明了。 各种功能的实现应采用模块化、子程序化,以便于编制、阅读、连接、移 植、修改和调试。 对各子程序的入口、出口条件,占用的资源要明确,以便于分析、调试和 共享。 程序存储区、数据存储区、寄存器区、位寻址区、堆栈区应规划合理,做 到既节约资源又不会发生相互间的冲突。 运行状态标志化管理,对各功能程序的运行结果、操作状态应设置状态标 志,以便查询和实现运行控制。 运用软件或软硬件相结合等方法抑制干扰,提
9、高系统的抗干扰能力。 必要时可结合硬件采取加密措施。(2) 资源分配:选用定时/计数器T0,定时方式1工作,每隔50ms溢出中断 一次。(3) 软件流程框图I/O 口初始化时钟、闹钟单元、标识位初始化定时器、匚中断初始化11时钟显示单元首地址炒(5)程序清单SECOND EQUTCOUNT EQUKCOUNT EQUKEY BITORGSJMPORGLJMPSTART: MOVMOVMOVMOVMOVMOVMOVMOVMOVK1: JBLCALLJBMOVCJNESETBMOV30H31H32HP3.700HSTART0BHINT_T0DPTR,#TABLEP0,#3FHP2,#3FH;开始,
10、数码管显示00SECOND,#00HTCOUNT,#00HKCOUNT,#00HTMOD,#01H ;定时器0工作在方式1TL0,#(65536-50000)/256TH0,#(65536-50000)%256KEY,$;等待按键DELAYKEY,$A,KCOUNTA,#00H,K2;判断按键次数TR0;第1次按键,启动定时器IE,#82HJNBINCLJMPK2: CJNECLRMOVJNBINCLJMPK3: CJNEJNBLJMPKEY,$KCOUNTK1A,#01H,K3TR0IE,#00HKEY,$KCOUNTK1A,#02H,K1KEY,$START;按键抬起,按键次数值加1;第2
11、次按键,关闭定时器;按键抬起,按键次数值加1;第3次按键,返回初始状态INT_T0:MOV TH0,#(65536-50000)/256MOV TL0,#(65536-50000)%256INC TCOUNTMOV A,TCOUNTCJNE A,#2,I2;是否计够0.1秒MOVTCOUNT,#00HINCSECONDMOV A,SECONDCJNE A,#100,I1;是否计够 10 秒MOVSECOND,#00HI1: MOV A,SECONDMOVB,#10DIV ABI3: CJE A,#6,I4CJE A,#7,I4CJE A,#8,I4CJE A,#9,I4I4: CLR AMOV
12、C A,A+DPTR ;显示时间MOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AI2: RETITABLE:DB3FH,06H,5BH,4FH,66H6DH,7DH,07H,7FH,6FHDELAY: MOVR6,#20D1:MOVR7,#250DJNZ R7,$DJNZ R6,D1RETEND六、系统调试1)输入源程序输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。2)对源程序进行汇编和纠错根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示“错误 (0)”、“汇编结束”。3)确定调试方案在调试程序前一定要认真分析源程序,明确各功能程序运行的预期结
13、果。然 后结合源程序应达到的结果,确定出如何通过某些关键参数和实验现象检验程序 运行结果正确与否。例如:程序运行过程中路径的变化、累加器A内容的变化、 其他特殊寄存器内容的变化等。并针对具体的分析和观察对象选择较合适的调试 方法。如单步运行、跟踪运行、连续运行、快速运行全光标处、设置断点等调试 方法。4)调试程序(1)调试主程序。主程序运行后,在无任何按键输入时观察有无显示,时钟 是否工作,其时、分、秒显示的变化过程是否正确。若运行结果不正确,首先应 根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐 一认证和排除。例如:若定时/计数器的初始化出错,则时钟将不能工作;若显
14、示程序出错,则将不能正确显示时钟单元内容;若定时/计数器中断服务子程序 出错,则其显示数据的变化规律将不正常。(2)调试子程序。在调试主程序时,必然要调用相关的功能子程序。因此, 首先应明确子程序的具体功能,通过对子程序的分析,确定子程序的入口、出口 参数及相关标识位的状态,然后在满足入口条件的状态下,设法检查从主程序进 入子程序,再由子程序返回到主程序的运行过程。可采用跟踪运行或运行全光标 处的方法,检查从主程序进入子程序内部的运行过程,再通过单步运行等方法检 查子程序内部的运行情况和返回主程序的过程。通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的 预期目的。5)脱机运行
15、将调试已通过的程序写入单片机内部(或外部)程序存储器中,再将写好程序 的单片机(或存储器)插入已设计好的单片机用户板上,把仿真系统与用户板脱离 开来,最后将所设计的单片机应用系统独立通电运行。七、实训总结与分析通过本次智能仪器仪表的课程设计,各方面又得到了进一步的提高。从整个 单片机开发系统的把握上,感觉比以前更具有信心,当然,在焊接、调试的时候 也显得更轻松,至少知道从哪些地方入手,怎样判断正确与否。尤其是在调试大 型程序时,需先根据要求划分模块,优化结构;再根据各模块特点确定何为主程 序,何为子程序,何为中断服务程序,相互间如何调用;再根据各模块性质和功 能将各模块细化,设计出程序流程图;
16、最后才根据各模块流程图编制具体程序。 调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往 主程序上堆砌,直至各模块联调、统调,实现全部功能。总的来说,还有很多的不足之处,要在以后的实践中慢慢完善,不断的提高 这方面的能力。八、参考资料:单片机控制实习陈正义人民邮电出版社单片机课程设计实例指导李飞北京航空航天大学出版社单片机控制实习与专题制作蔡朝洋北京航空航天大学出版社51系列单片机设计实例楼然苗北京航空航天大学出版社九、附录:1 :?Z 4KI I I I I s -J co:i c to山外形利与脚-: C2 .3DpF : TE: :*OTAL1PD.O/COPu.i/.nP0.2/C2;工如PD.3 加D3Plj 4心P0.5/C5RSTP0.7/SD7P2.gPM/.闻P2.2/A10PSENP2.3/A11ALEP2.4/A12E凸.P2.5/A13P2.6/A14P2.7/A15P1.UP3.D/RP1.1P3.1.-T:;:DP1.2P3.2/1 MIDP1.3P3.3/IMHP1.4P:j.4.TP1.5P3.5/T1P1.6P3.6/WRP1.7P3.75RD12