您的当前位置:首页正文

51单片机秒表计时(protues)

2020-07-26 来源:年旅网


51单片机秒表计时器

目 录

摘要 ............................ 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口分别控制两个数码管,使数码管工作,循环显示从00—59。同时,用一个开关控制数码管的启动与停止,另外加上一个复位电路,使其能正常复位,通常还使用石英晶体振荡器电路构成整个秒表的结构电路。

一、目的

(1)利用单片机定时器中断和定时器计数方式实现秒定时。

(2)通过LED显示程序的调整,熟悉单片机与LED的接口技术,熟悉LED动态显示的控制过程。

(3)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。 (4)进一步学习单片机开发系统的整个流程。

二、元件

(1)实训设备:单片机开发系统、微机、万用表、电烙铁等。 (2)实训器件:

名称 7段数码管 电阻10k 电阻1k 键盘开关 电容10微法 电容30皮法 晶振12M

数量

2 1 8

1 1 2 1

89C51 万能板 导线

1 1 若干

三、步骤

(1)要求:利用实训电路板,以2位LED右边1位显示个位,左边1位显示十位,实现秒表计时显示。以一个按键开关实现启动、停止、清零等功能。 (2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器0方式1计数,实现00--59计数。

(3)实验线路分析:采用实训电路板,其原理图参见附录。两个7段LED数码管分别由单片机的P0口和P2口控制,使数码管显示从00—59的字样。用一个开关控制数码管的启动与停止,另外加上一个复位电路,使其能正常复位。另外在加上一个晶体振荡电路就够成了整个秒表的电路。

(4)软件设计:软件整体设计思路是主程序进行初始化,以按键开关按下的次数确定定时器的启动与否,LED通过中断的方式进行显示。后二者间的联系是:按键按下,则定时器开始计时,中断后在LED上显示,不断循环;按键第二次按下时,定时器停止计时,LED不显示;按键第三次按下时,返回到初始状态重新开始。秒定时采用定时器T0中断方式进行,60秒计数由定时器0采用方式1完成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图7.1所示。

(5)程序编制:编程时第一次按键为“启动”,第二次按键为“停止”,第三次按键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,。2位LED显示的数据由显示缓冲区30H~31H单元中的数据决定。

四、设计

硬件电路的设计应从两个方面予以考虑。一是根据应用系统总体设计的参数范围、测控速度与精度等技术指标要求选择单片机。不同系列单片机或同一系列

不同型号单片机芯片内部提供的资源状况各不相同,如ROM、RAM容量,定时/计数器、I/O接口、中断系统等硬件配置,应选择性价比最适合的单片机型。二是在已选定单片机型号的基础上,根据应用系统的功能要求扩展单片机外部设备的配置,如键盘、打印机、A/D、D/A、报警电路、驱动电路及通用/专用I/O接口等。

硬件电路的设计原则如下:

(1)在性价比满足应用系统要求的基础上,选择更可靠、更熟悉的单片机,缩短研制周期。

(2)尽可能选择较成熟的典型应用电路,以提高系统的可靠性。

(3)单片机内部的资源与外部扩展资源应在满足应用系统设计要求的基础上留有余地,为进一步升级和扩展其功能提供方便。

(4)应充分结合软件方案统筹考虑硬件结构,通常硬件功能较完善,其相应的软件就简单,但硬件成本较高;而硬件功能略低,其相应的软件就复杂。实际中应尽量以软件替代硬件来降低成本。

(5)整个系统的相关器件应尽可能做到性能匹配,如电平、速度的匹配等。 (6)充分考虑整个系统的抗干扰设计,如选择具有抗干扰设计的单片机并充分筛选芯片与器件,在电路中采取隔离和屏蔽措施等。

根据以上设计原则,选择较熟悉的MCS-51系列单片机中具有内部程序存储器的89C51单片机;为实现LED数码显示和键盘控制,直接将开关键盘接到单片机的P3.7口,是单片机直接控制开关,

其中:按第一次,定时器启动,即数码管开始显示数。按第二次,定时器停止,即数码管上显示的数停止,显示当前的秒数。按第三次,使数码管上的数复位。

五、软件系统设计

待硬件电路接线完成后,通常可先编写简单的测试程序对硬件电路进行测试,排除硬件电路设计中存在的错误。然后根据设计任务的要求确定系统程序的整体结构,尽可能采用模块化程序设计的方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,如系统管理、数据与信息采集、报警处理、误差处理、标度变换、数据处理、输出控制等;列出详细的资源划分

表,确定各模块的出口和入口状态;建立必要的数学模型,正确描述出系统中输入和输出间的数学关系;画出各程序模块的详细流程图;根据流程图逐一编写程序;最后将各个模块连接成完整的程序。

(1)软件设计的基本原则。

①程序整体结构清晰、简洁、流程合理,主程序尽可能简单明了。 ②各种功能的实现应采用模块化、子程序化,以便于编制、阅读、连接、移植、修改和调试。

③对各子程序的入口、出口条件,占用的资源要明确,以便于分析、调试和共享。

④程序存储区、数据存储区、寄存器区、位寻址区、堆栈区应规划合理,做到既节约资源又不会发生相互间的冲突。

⑤运行状态标志化管理,对各功能程序的运行结果、操作状态应设置状态标志,以便查询和实现运行控制。

⑥运用软件或软硬件相结合等方法抑制干扰,提高系统的抗干扰能力。 ⑦必要时可结合硬件采取加密措施。

(2)资源分配:选用定时/计数器T0,定时方式1工作,每隔50ms溢出中断一次。

(3) 软件流程框图

Y开始I/O口初始化时钟、闹钟单元、标识位初始化定时器、中断初始化时钟显示单元首地址送B调用键入测试子程序有键输入吗?Y调用显示子程序延时去抖是抖动吗?N调用查键号子程序

N调用显示子程序闹钟设定否?Y调用闹钟时间判别程序YN

是时钟修改功能键吗?N调用时钟修改功能程序

(5)程序清单 SECOND EQU TCOUNT EQU KCOUNT EQU KEY

BIT ORG SJMP ORG LJMP

30H 31H 32H P3.7 00H START 0BH INT_T0 DPTR,#TABLE P0,#3FH P2,#3FH

;开始,数码管显示\"00\"

START: MOV

MOV MOV MOV MOV MOV MOV MOV MOV

SECOND,#00H TCOUNT,#00H KCOUNT,#00H

TMOD,#01H ;定时器0工作在方式1 TL0,#(65536-50000)/256 TH0,#(65536-50000)%256 KEY,$

;等待按键

K1: JB

LCALL DELAY JB

KEY,$

MOV CJNE SETB MOV JNB INC LJMP

A,KCOUNT

A,#00H,K2 ;判断按键次数 TR0

;第1次按键,启动定时器

IE,#82H KEY,$ KCOUNT K1 A,#01H,K3 TR0

;第2次按键,关闭定时器 ;按键抬起,按键次数值加1

K2: CJNE

CLR MOV JNB INC LJMP

IE,#00H KEY,$ KCOUNT K1

A,#02H,K1 ;第3次按键,返回初始状态 KEY,$ START

TH0,#(65536-50000)/256

;按键抬起,按键次数值加1

K3: CJNE

JNB LJMP

INT_T0:

MOV

MOV INC MOV CJNE MOV INC MOV CJNE MOV

TL0,#(65536-50000)%256 TCOUNT A,TCOUNT A,#2,I2

;是否计够0.1秒

TCOUNT,#00H SECOND A,SECOND

A,#100,I1 ;是否计够10秒 SECOND,#00H A,SECOND B,#10 AB

I1: MOV

MOV DIV

I3:CJE A,#6,I4 CJE A,#7,I4 CJE A,#8,I4 CJE A,#9,I4 I4: CLR A

MOVC MOV MOV MOVC MOV

A,@A+DPTR ;显示时间 P0,A A,B A,@A+DPTR P2,A

I2: RETI

TABLE:

DB 3FH,06H,5BH,4FH,66H

6DH,7DH,07H,7FH,6FH R6,#20 R7,#250 R7,$ R6,D1

DELAY: MOV D1:

MOV DJNZ DJNZ RET END

六、系统调试

1)输入源程序

输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。 2)对源程序进行汇编和纠错

根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示“错误(0)”、“汇编结束”。

3)确定调试方案

在调试程序前一定要认真分析源程序,明确各功能程序运行的预期结果。然后结合源程序应达到的结果,确定出如何通过某些关键参数和实验现象检验程序运行结果正确与否。例如:程序运行过程中路径的变化、累加器A内容的变化、

其他特殊寄存器内容的变化等。并针对具体的分析和观察对象选择较合适的调试方法。如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。

4)调试程序

(1)调试主程序。主程序运行后,在无任何按键输入时观察有无显示,时钟是否工作,其时、分、秒显示的变化过程是否正确。若运行结果不正确,首先应根据程序运行的实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。例如:若定时/计数器的初始化出错,则时钟将不能工作;若显示程序出错,则将不能正确显示时钟单元内容;若定时/计数器中断服务子程序出错,则其显示数据的变化规律将不正常。

(2)调试子程序。在调试主程序时,必然要调用相关的功能子程序。因此,首先应明确子程序的具体功能,通过对子程序的分析,确定子程序的入口、出口参数及相关标识位的状态,然后在满足入口条件的状态下,设法检查从主程序进入子程序,再由子程序返回到主程序的运行过程。可采用跟踪运行或运行至光标处的方法,检查从主程序进入子程序内部的运行过程,再通过单步运行等方法检查子程序内部的运行情况和返回主程序的过程。

通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。

5)脱机运行

将调试已通过的程序写入单片机内部(或外部)程序存储器中,再将写好程序的单片机(或存储器)插入已设计好的单片机用户板上,把仿真系统与用户板脱离开来,最后将所设计的单片机应用系统独立通电运行。

七、实训总结与分析

通过本次智能仪器仪表的课程设计,各方面又得到了进一步的提高。从整个单片机开发系统的把握上,感觉比以前更具有信心,当然,在焊接、调试的时候也显得更轻松,至少知道从哪些地方入手,怎样判断正确与否。尤其是在调试大型程序时,需先根据要求划分模块,优化结构;再根据各模块特点确定何为主程序,何为子程序,何为中断服务程序,相互间如何调用;再根据各模块性质和功能将各模块细化,设计出程序流程图;最后才根据各模块流程图编制具体程序。

调试时应先调主程序,实现最基本最主要的功能,在此基础上再将各模块功能往主程序上堆砌,直至各模块联调、统调,实现全部功能。

总的来说,还有很多的不足之处,要在以后的实践中慢慢完善,不断的提高这方面的能力。

八、参考资料:

《单片机控制实习》--------------------------陈正义 人民邮电出版社 《单片机课程设计实例指导》---------------李飞 北京航空航天大学出版社 《单片机控制实习与专题制作》-------------蔡朝洋 北京航空航天大学出版社 《51系列单片机设计实例》----------------楼然苗 北京航空航天大学出版社

九、附录:

因篇幅问题不能全部显示,请点此查看更多更全内容