理论教育 单片机数字时钟安装及调试

单片机数字时钟安装及调试

时间:2023-11-08 理论教育 版权反馈
【摘要】:任务引入在我们的手机、计算机里都有数字时钟,它计时精确、容易识别。本次任务我们来一起制作数字时钟吧?技能目标:1.能独立编写数字时钟的流程图和程序。任务描述1.利用开发板,用4位数码管设计数字时钟:1)数码管左2位为分钟显示,右2位为秒钟显示,使时钟进行1s计时工作。如图5-9所示为数字时钟显示效果。计数器的频率是时钟振荡频率的1/12。

单片机数字时钟安装及调试

任务引入

在我们的手机、计算机里都有数字时钟,它计时精确、容易识别。那么数字时钟是如何工作的呢?本次任务我们来一起制作数字时钟吧?

任务目标

知识目标:1.进一步理解中断的概念。

2.理解定时中断的产生原理和硬件关系。

3.掌握定时中断设置方式和过程。

技能目标:1.能独立编写数字时钟的流程图和程序。

2.会对数字时钟程序进行调试。

情感目标:1.在制作任务过程中养成严谨的工作态度。

2.在任务实施过程中加强沟通,团队合作。

3.逐步培养学生建立工作的质量意识、安全意识

任务描述

1.利用开发板,用4位数码管设计数字时钟:

1)数码管左2位为分钟显示,右2位为秒钟显示,使时钟进行1s计时工作。

2)计时从00.00开始,当秒钟为59s加1s时,分钟加一,秒钟清0;当分钟为59min加1min时,分钟和秒钟同时清0,从00.00重新计时。

2.绘制按键4位数码管计时的工作流程图和编写相关程序。

3.下载hex文件烧入单片机,完成联机调试。如图5-9所示为数字时钟显示效果。

978-7-111-46712-0-Chapter05-50.jpg

图5-9 数字时钟显示效果

任务实施

一、任务分析

本次任务我们制作分秒时钟。其中显示数码管共4个,分别显示:分(十位)、分(个位)、秒(十位)、秒(个位),本任务利用定时中断控制进行设计制作。

设计思路:系统采用定时中断控制,中断定时50ms,首先对系统进行中断初始化定时器初始化、显示初始化。中断程序:一秒中断进入中断程序对分秒进行检查加一,设计控制秒个位最大显示为9,秒的十位最大显示5,分的个位最大显示9,分的十位最大显示5。因此整个程序分成:程序中断初始化、显示子程序、中断子程序。

二、画程序流程图

根据任务要求画出程序流程图,如图5-10所示。

978-7-111-46712-0-Chapter05-51.jpg

图5-10 程序流程图

三、编写程序

根据流程图和相关指令编写程序。

978-7-111-46712-0-Chapter05-52.jpg

978-7-111-46712-0-Chapter05-53.jpg

978-7-111-46712-0-Chapter05-54.jpg

四、联机调试1)打开Keil软件,输入调试程序并编译生成hex文件。2)将hex文件通过双龙下载器烧入单片机并联机调试。

知识链接

一、相关知识学习

1.定时器/计数器概述

定时器/计数器是单片机硬件结构中一个重要组成部分,在单片机构成的测控系统中,常要用定时器/计数器,例如定时检测某个物理参数;按一定的时间间隔进行某种控制,对某个事件发生的次数加以计数等。硬件构成的定时器/计数器在使用上有不占用CPU时间的优点,提高了CPU的效率

MCS—51系列单片机内部的定时器/计数器有2个(AT89S52有3个),分别称为T0、T1。它们都是十六位加1计数结构,分别由TH0和TL0及TH1和TL1两个8位计数器构成,每个定时器/计数器都具有定时和计数两种功能。定时器/计数器通过编程的方法由定时器/计数器方式寄存器TMOD设定定时器的工作方式,由定时器/计数器控制寄存器TCON启动和停止定时器/计数器,并控制其状态。

(1)定时原理

定时原理如图5-11所示。

978-7-111-46712-0-Chapter05-55.jpg

图5-11 定时原理

定时器/计数器用作定时时,计数脉冲来自单片机的内部,每过—个机器周期产生一个计数脉冲,计数器加1,直到计数器计满溢出。由于一个机器周期由12个时钟周期组成,且时钟振荡频率是固定的,则在已知振荡频率和计数器初值时,可以计算出定时时间。计数器的频率是时钟振荡频率的1/12。

(2)计数原理

计数原理如图5-12所示。

978-7-111-46712-0-Chapter05-56.jpg

图5-12 计数原理

定时器/计数器用作计数时,计数脉冲来自单片机的外部。外部输入脉冲每来一个负跳变(1→0),计数器加1,因此计数功能实质就是对外来脉冲进行计数。

2.定时器/计数器的控制

(1)方式寄存器TMOD

定时器/计数器的方式寄存器TMOD是8位的专用寄存器见表5-8,字节地址为89H,复位数据为00H,高4位控制T1、低4位控制T0。TMOD只能进行字节操作,不能进行位操作。

5-8 方式寄存器TMOD

978-7-111-46712-0-Chapter05-57.jpg

C/T:计数器或定时器选择位。1—计数器;0—定时器。GATE:门控信号。

1——定时器/计数器的启动受到双重控制,即要求TR0/TRl和

978-7-111-46712-0-Chapter05-58.jpg

同时为高;

0——定时器/计数器的启动仅受TR0或TR1控制。

M1和M0:工作方式选择位,见表5-9。

5-9 定时器/计数器的工作方式

978-7-111-46712-0-Chapter05-59.jpg

(2)定时器/计数器控制寄存器TCON

TCON中与中断有关的各位已介绍,其他位的含义如下。

TR0——定时器/计数器0启动控制位。1——启动计数;0——停止计数。

TR1——定时器/计数器1启动控制位。1——启动计数;0——停止计数。

TCON复位后清0,定时器/计数器需受到软件控制才能启动计数,当计数寄存器计满时置位TF=1,即溢出中断请求标志。

3.定时器/计数器的工作方式

(1)方式0

当TMOD中M1M0=00时,定时器/计数器工作在方式0,如图5-13所示为T0方式0逻辑结构。

978-7-111-46712-0-Chapter05-60.jpg

图5-13 T0方式0逻辑结构

方式0为13位的定时器/计数器,由TH提供高8位,TL提供低5位的计数值,满计数值213,但启动前可以预置计数初值。当978-7-111-46712-0-Chapter05-61.jpg时,定时器/计数器为定时器,以振荡源12分频的信号作为计数脉冲;当978-7-111-46712-0-Chapter05-62.jpg978-7-111-46712-0-Chapter05-63.jpg时,则定时器/计数器为计数器,对外部脉冲输入端TO或T1输入的脉冲计数。

定时器/计数器启动后立即加1计数,当13位计数满时,TH向高位进位,此进位将中断溢出标志TF置1,产生中断请求,表示定时时间到或计数次数到。若定时器/计数器开中断(ET=1)且CPU开中断(EA=1),则当CPU转向中断子程序时,TF自动清0。

计数个数与计数初值的关系为:X=213-N(X——计数初值;N——计数个数,下同)

(2)方式1

当TMOD中M1M0=01时,定时器/计数器工作在方式1,如图5-14所示为T0方式1逻辑结构。

方式1与方式0基本相同。唯一区别在于计数寄存器的位数是16位,由TH和TL存储器各提供8位。

978-7-111-46712-0-Chapter05-64.jpg

图5-14 T0方式1逻辑结构

计数个数与计数初值的关系为:X=216-N

(3)方式2

当TMOD中M1M0=10时,定时器/计数器工作在方式2。方式2是8位的可自动重装载的定时器/计数器,如图5-15所示为T0方式2逻辑结构。

978-7-111-46712-0-Chapter05-65.jpg

图5-15 T0方式2逻辑结构

在方式0和方式1中,当计数满后,若要进行下一次定时/计数,须用软件向TH和TL重装预置计数初值。方式2中TH和TL被当作两个8位计数器,计数过程中,TH寄存8位初值并保持不变,由TL进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将TH中初值重装到TL,即重装载。工作方式2特别适合于用作较精确的脉冲信号发生器。

计数个数与计数初值的关系为:X=28-N

(4)方式3

方式3只适合于定时器/计数器O,如图5-16所示为T0方式3逻辑结构。

978-7-111-46712-0-Chapter05-66.jpg

图5-16 T0方式3逻辑结构

当定时器/计数器O工作在方式3时,THO和TLO成为两个独立的计数器。这时TL0可作定时器/计数器,占用定时器/计数器0在TCON和TMOD寄存器中的控制位和标志位;而THO只能作定时器用,占用定时器/计数器1的资源TRl和TFl。在这种情况下,定时器/计数器1仍可用于方式0、1、2,但不能使用中断方式。

只有将定时器/计数器1用作串行口的波特率发生器时,定时器/计数器O才工作在方式3,以便增加一个定时器。

4.定时器/计数器的初始化

(1)初始化步骤

在使用定时器/计数器前,应对它进行编程初始化,主要是对TCON和TMOD编程,计算和装载定时器/计数器的计数初值。一般完成以下几个步骤:

1)确定定时器/计数器的工作方式——编程TMOD寄存器;

2)计算定时器/计数器中的计数初值,并装载到TH和TL;

3)定时器/计数器在中断方式工作时,须开CPU中断和源中断——编程IE寄存器;

4)启动定时器/计数器——编程TCON中TRl或TR0位。

(2)计数初值的计算

1)定时器的计数初值。定时方式时,定时时间t=(M-X)×Tosc;(M——最大计数值;Tosc——机器周期),初值X=M-t/Tosc。

在定时器方式下,定时器/计数器是对机器周期脉冲计数的,若fosc=12MHz,一个机器周期为12/fosc=1μs,所以

方式0:13位定时器最大定时间隔=213×1μs=8.192ms;

方式1:16位定时器最大定时间隔=213×1μs=65.536ms;

方式2:8位定时器最大定时间隔=28×1μs=256μs。

若使定时器/计数器工作在定时器方式1,要求定时1ms,求计数初值。设计数初值为X,则有

(216-X)×1μs=1000μs或X=216-1000。

2)计数器的计数初值。计数方式时,计数模值=M-X;初值X=M-计数模值。

在计数器方式下:(www.daowen.com)

方式0:13位计数器的满计数值:213=8192;

方式1:16位计数器的满计数值:216=65536;

方式2:8位计数器的满计数值:28=256。

若使定时器/计数器工作在计数器方式2,要求计数10个脉冲的计数初值。如设计初值为X,则有

28-X=10,

X=28-10。

二、应用举例

1.定时器实例

单片机晶振频率为6MHz,要求使用定时器1以方式1产生周期为100ms的等宽方波连续脉冲,并由P1.0输出。

计算计数初值:(216-X)×2μs=50000μs。

求解得:X=40536,表示为二进制为9E58H。

高8位放入TH1,即TH1=9EH;

低8位放入TL1,即TL1=58H。

TMOD寄存器初始化:M1M0=01,C/T=0,GATE=0,则TMOD寄存器初始化为10H。

(1)查询方式

978-7-111-46712-0-Chapter05-67.jpg

978-7-111-46712-0-Chapter05-68.jpg

利用CPU不断查询溢出标志位TF1,判断定时是否到,这种方式占用了大量CPU时间,与定时器提高CPU效率相违背。

(2)中断方式

978-7-111-46712-0-Chapter05-69.jpg

中断服务子程序:

978-7-111-46712-0-Chapter05-70.jpg

2.定时器的扩展

在所有定时器中,最大的定时时间为方式1,它的定时时间最大为65.536ms(晶振为12MHz),那么我们定时100ms以上怎么办呢?

例如:假设系统时钟为12MHz,编写定时器T0产生1s脉冲经P1.0输出程序。

分析:定时器T0的最大定时约为65ms,1s脉冲需要在500ms时P1.0改变一次输出电平。定时需要500ms中断,这时我们可以将T0定时器设置时间为50ms,当定时到时进入中断但不改变P1.0的状态,当进入10次时即500ms再改变,就达到设计要求。控制进入次数选择指令DJNZ。

(1)主程序任务

1)T0工作方式的设定:选择方式1(16位方式),最大定时131ms,本题拟定时时长

978-7-111-46712-0-Chapter05-71.jpg

2)定时常数的设定:X=216-50ms/1μs=15536=3CB0H

即TH0应装3CH,TL0应装0B0H。

3)中断管理:允许T0中断,开放总中断。即IE应装82H。

4)启动定时器T0:SETBTR0。

5)设置软件计数器初值(如使用R7)。即R7应装0AH。

6)动态停机:SJMP$。

主程序如下:

978-7-111-46712-0-Chapter05-72.jpg

(2)中断子程序任务

1)恢复T0计数初值;

2)软件计数器R7减1,并判断是否为0。若为0时,则改变P1.0状态,并恢复R7初值,中断返回;若不为0,则直接中断返回。

中断子程序如下:

978-7-111-46712-0-Chapter05-73.jpg

完整程序如下:

978-7-111-46712-0-Chapter05-74.jpg

978-7-111-46712-0-Chapter05-75.jpg

注意:在定时器中对初值装入可以不计算具体的值,而采用求模和求余方式计算初值,例如以上定时器的初值可采用:

978-7-111-46712-0-Chapter05-76.jpg

任务拓展

根据已学知识完成下列任务并调试:

1)如何设计24h倒计时时钟,试编写流程图和程序。

2)如何在编写24h倒计时时钟基础上,通过矩阵式按键改变时分秒的初值,并启动定时工作,试编写流程图和程序。

评一评

978-7-111-46712-0-Chapter05-77.jpg

项目5 《报警器与数字时钟安装与调试评价表

978-7-111-46712-0-Chapter05-78.jpg

(续)

978-7-111-46712-0-Chapter05-79.jpg

思考与练习

填空题

1.在查询和中断两种数据输入/输出方式中,效率较高的是。

2.外部中断1INT1的中断入口地址为。

3.MCS-51系列单片机定时器/计数器作定时和计数用时,其计数脉冲分别由和提供。

4.返回地址(或断点)是的程序计数器的内容。

5.所谓中断源即是引起中断的原因。

6.中断类似于程序中调用子程序,区别在于中断的发生是的,而调用子程序是编程员在时间上事先安排好的。

7.基本的通信方式有两种:串行方式和方式。

8.的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该位置0。

9.5个中断源的优先级别由管理,相应位置1,则该中断源优先级别高,置0则优先级别低。

10.中断处理过程分为4个阶段:中断请求、、中断处理和中断返回。

11.两个定时器/计数器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件和检测等场合。

选择题

1.每个中断源发出的中断请求信号,都会标记在( )寄存器。

A.TMOD/SCON B.TCON/PCON C.IE/TCON D.TCON/SCON

2.中断查询,查询的是( )。

A.中断请求信号B.中断标志

C.外中断方式控制位D.中断允许控制位

3.中断是一种( )。

A.资源共享技术B.数据转换技术

C.数据共享技术D.并行处理技术

4.执行“MOV IE,#81H”指令的意义是( )。

A.屏蔽中断源B.开放外部中断源0

C.开放外部中断源1D.开放外部中断源0或1

5.启动T1运行的指令是( )。

A.SETB ET0B.SETB ET1

C.SETB TR0D.SETB TR1

6.AT89S52单片机在响应中断后,需要用软件来清理的中断标志是( )。

A.TF0,TFlB.RI,TIC.IE0,IE1

7.(TMOD)=05H,则T0I作方式为( )。

A.13位计数器B.16位计数器C.13位定时器D.1位定时器

8.AT89S52单片机用来开放或禁止中断的控制寄存器是( )。

A.IPB.TCONC.IED.SCON

9.用MCS-51系列单片机的定时器T1作定时方式,用工作方式2,则工作方式控制字为( )。

A.60HB.02HC.06HD.20H

10.用MCS-51系列单片机的定时器TI作定时方式,用工作方式1,则初始化编程为( )。

A.MOVTOMD,#06HB.MOVTOMD,#20H

C.MOVTOMD,#10HD.MOVTOMD,#60H

11.用MCS-51系列单片机的定时器,若用软启动,应使TOMD中的( )。

A.GATE位置1B.C/T位置1C.GATE位置0D.C/T位置0

12.使MCS-51系列单片机的定时器T0停止计数的指令是( )。

A.CLRTR0B.CLRTR1C.SETBTR0D.SETBTR1

问答题

1.什么是中断?中断的作用是什么?

2.什么是外部中断?MCS-51系列单片机有几个外部中断源?请求信号由什么引脚引入?

3.中断优先级的顺序是什么?5个中断源的入口地址分别为什么?

编程题

1.用定时器T1,工作方式0,在P1.0产生周期为500μs的连续方波,时钟振荡频率为6MHz,用查询方式试编写程序。

2.单片机AT89S52的P1口接8个LED,用INT1产生中断。当主程序正常执行时,P1口接8个LED单灯左移。当进入中断状态时,P1口接8个LED将变成单灯右移,3个循环后,恢复中断前的状态,即继续执行8个LED单灯左移,延时为1s,试编写程序。

3.用I978-7-111-46712-0-Chapter05-80.jpg产生中断,主程序正常执行时,数码管循环显示“0~9”,每0.5s增加1。当进入中断状态时,数码管循环显示“9~0”,每0.5s减少1,1个循环之后恢复中断前的状态,试编写程序。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈