单片技术实践 4_第1页
单片技术实践 4_第2页
单片技术实践 4_第3页
单片技术实践 4_第4页
单片技术实践 4_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工作模块7---单片机的定时/中断系统的应用

情境导入

无论是普通人的生活,还是工厂的生产,甚至是高精尖设备,都需要定时/计数器的支持。我们每天都可能被自己的闹钟吵醒,每天都可能会用洗衣机、微波炉进行定时操作,使用微信来计步。所有的这些功能,都和控制器的定时/计数功能息息相关的。市场上可以接触到的CPU或者控制器都具有中断系统,越高级的控制器,中断系统就越复杂。学会了单片机的定时器和中断,才可以认为自己迈入了单片机设计的多姿多彩的世界。内容图谱任务实施

任务描述执行思路

实施过程

程序解读

任务小结扩展任务任务7-1秒表功能的实现任务描述

使用单片机内部定时器实现2位秒表的功能,能够精确计时,时间范围0~60。使用proteus软件绘制并仿真电路。

初级任务:用单片机任意一个端口控制数码管的静态显示,完成简易秒表。

高级任务:能够使用一块开发板,点亮两位数码管,完成“秒”的精确计时,时间范围0~99。任务7-1秒表功能的实现单片机MCU数码管静态显示模块电源电路时钟电路复位电路执行思路7-1-1秒表功能的实现

任务实施

实施过程7-1-1秒表功能的实现7-1-1ProteusISIS设计电路原理图7-1-1ProteusISIS设计电路原理图序号元件名称元件型号元件参数1单片机AT89C52

2共阳极数码管7SEG-MPX1-CA

3电阻16个Res470

单片机的P0口和P2口分别和两个共阳极数码管连接,根据数码管静态显示的原理,直接从P0口和P2口输出相应的字形码即可。仿真电路需要的元件上表所示,同样最小系统所需元件不再重复展示。7-1-1秒表功能的实现7-1-1秒表功能的实现知识链接

7.1

单片机定时器/计数器认识

7.2单片机定时器/计数器的内部结构7.3工作方式寄存器TMOD7.4控制寄存器TCON7.5定时器/计数器的查询方式

设定加热一只鸡的时间为15min(900s),启动微波炉后开始倒计时,并在显示屏上显示剩余时间,如图所示,当前剩余时间为05:45(345s)。单片机每过1s更新一次时间显示,更新显示900次(900s)后(微波炉会发出“嘀嘀”声提示)停止微波炉加热。定时过程可视为单片机计算单位时间(如1s、1ms、1µs)的个数,计时完成后,将单位时间乘以个数,即可得到定时的时间长度。7.1单片机定时器/计数器认知7.1单片机定时器/计数器认知

下面再来看一个生活中的计数器的例子——自行车的测速码表。在自行车辐条上安装一个永久磁铁,在车架上安装一个霍尔开关,磁铁经过霍尔开关时会发出一个脉冲信号,即表示车轮转动一圈,由于自行车车轮的周长是固定的,因此统计60s(时间)内车轮转动的圈数(距离),就可以算出骑行速度。这个实例中,码表通过霍尔传感器进行脉冲计数,每两个脉冲之间的时间是不固定的,而微波炉的时间间隔是固定的1s。7.1单片机定时器/计数器认知7.2定时器/计数器的内部结构

单片机有两个16位的定时/计数器——T0和T1。当定时/计数器工作于定时功能时,模拟开关拨到T位置,定时/计数器计数电路计算的是单位时间脉冲。如果模拟开关拨到C位置,定时/计数器计数电路计算的是外部事件脉冲,此时,定时/计数器计数电路的计数值就是外部事件脉冲的个数。这就是单片机定时/计数器的计数功能。

单片机内部有两个16位的定时器,分别是T0和T1,每个16位定时器又可以分成两个8位的寄存器,分别是THX和TLX,高8位和低8位。7.2定时器/计数器的内部结构

定时器的工作方式

定时器的初值

定时器的启动

定时的结束7.2定时器/计数器的内部结构定时器/计数器的控制操作具体包括:7.3

工作方式寄存器TMOD(0x89)TMOD(0x89)

C/T:计数器/定时器选择位:如果这一位设置为1,则工作方式为对外部的事件的计数器;如果这一位设置为0,则对单片机内部脉冲进行计数,就是定时功能,每个单片机的机器周期计数一次。7.3

工作方式寄存器TMOD(0x89)

GATE门控位:定时器可由软件与硬件两者控制:如果这位设置为0,则使用软件编程的方式启动定时器,即相应TRx位写入1即可;如果这位设置为1,则定时器的启动,除了受TRx软件控制以外,还需要被INTX外部信号的同时控制,所以这是一个软硬件同时控制的启动机制。7.3

工作方式寄存器TMOD(0x89)方式0:13位定时器/计数器7.3.1定时/计数器的工作方式方式1:16位定时器/计数器当M1M0=01时,定时器/计数器工作于方式1,方式1和方式0的差别仅仅在于计数器的位数不同,方式1为16位计数器,由THx高8位和TLx低8位构成。7.3.1定时/计数器的工作方式方式1:16位定时器/计数器

如果控制端闭合,则从设定的初值,每经过一个机器周期,进行加1计数,直到最大值,此时如果还要加一,会产生什么后果呢,保存的值会溢出,此时触发TCON寄存器的TF1位自动置1,表示此次定时间隔完成。同时向CPU申请中断。定时器的溢出值:M=216=655367.3.1定时/计数器的工作方式【小例子】:

定时器工作在方式1,晶振频率是12MHz,最大的定时间隔是多少?

由于单片机的晶振频率是12MHz,因此单片机的机器周期是1us;定时器工作在方式1,因此定时器每隔一个机器周期,计数值加1,因此从0开始到65536溢出值,需要经过65536个机器周期,所以最大的定时间隔是65536x1us=65.536ms。7.3.1定时/计数器的工作方式方式2:8位自动重装初值的定时器/计数器工作方式2是一个自动重装初值的工作方式,如果定时/计数器工作于方式2下,将会一个是8位的定时器,定时初值同时被装入到TL1和TH1中,然后TL1开始加1计数;关键在于产生溢出申请中断以后,从TH1自动装入初值,可以自动重复进行定时操作。7.3.1定时/计数器的工作方式方式2:8位自动重装初值的定时器/计数器如果需要重复得到一系列的脉冲波形的时候,使用方式1会重复的装入定时器的初值,此时方式2的自动重复定时功能就很合适了。7.3.1定时/计数器的工作方式方式3-很少使用

方式3是将16位计数器分成两个独立的8位分别使用。T0:组织成TL0和TH0两个8位定时/计数器;T1:不再是定时/计数器了,T1的TR1和TF1出借给TH0当控制位使用,剩下的TH1/TL1寄存器只能当作普通寄存器用。方式3在实际设计中很少使用,只做简单了解即可。7.3.1定时/计数器的工作方式

MCS-51的两个定时器均为加1计数器,当加到溢出值时产生溢出,将TF位置l,可产生溢出中断,因此,如果定时计数器的溢出值为M,计数器初值X的计算式为:

X=M-计数值(通式)

模式0:M=213=8192模式1:M=216=65536模式2:M=28=256模式3:M=28=2567.3.2定时/计数器初值的计算【小例子】:

如果我们需要定时间隔为50ms,单片机的晶振频率为12MHz,单片机工作在方式1。

则可以得出:定时器工作在方式1,因此M=65536;单片机的晶振频率为12MHz,则一个机器周期为1us,定时间隔50ms可以推导出

计数间隔=50ms/1us=50000次所以从初值X加1计数,加到65536,中间间隔为50000次,则计数初值为

X=65536-50000=15536=0x3CB0;

7.3.2定时/计数器初值的计算

方法1:其中0x3CB0是十六进制数据,得到了计数初值,就可以将此初值X添加到定时器的THx和TLx两个寄存器中。

THx=0x3C;TLx=0xB0;

方法2:由于THx和TLx均为8位寄存器,两个寄存器组合在一起为16位寄存器,低8位从0开始加1计数,加到255最大值,向高8位寄存器进一,因此两个8位寄存器可以看做是256进制的数据,如下图。所以定时初值也可以由以下算式得出

THx=(M-50000)/256;

TLx=(M-50000)%256;

7.3.2定时/计数器初值的计算工作方式方式0方式1方式2定时/计数器位数13位16位8位计数寄存器THx高8位,TLx低5位THx高8位,TLx低8位TLx8位最大计数值819265536256初值设置THx=(M-X)/32;TLx=(M-X)%32;THx=(M-X)/256;TLx=(M-X)%256;THx=(M-X);TLx=(M-X)初值举例定时间隔5ms,循环10次THx=(8192-5000)/32;TLx=(8192-5000)%32;直接定时50msTHx=(65536-50000)/256;TLx=(65536-50000)%256;定时间隔50us,循环100次THx=(256-50);TLx=(256-50)工作特点初值不自动重装初值不自动重装自动重装初值7.3.2定时/计数器初值的计算TCON(0x88)

TFX:当计数器计数溢出时,该位置“1”。使用查询方式时,此位作为状态位供CPU查询,但应注意查询有效后,应使用软件及时将该位清“0”。使用中断方式时,此位作为中断请求标志位,进入中断服务程序后由硬件自动清“0”。这个功能位要特别注意其清零方式。7.4控制寄存器TCON(0x88)TCON

TRx:如果TRx=

1,启动定时器/计数器工作的必要条件;如果TRx=0,停止定时器/计数器工作。编程中经常用这位启动和停止启动定时器/计数器.TCON寄存器的低四位在中断章节再了解。7.4控制寄存器TCON(0x88)

定时器的停止有两种方式:查询式和中断式。

可以把定时/计数器想象成水桶,定时器的初值就是原来水桶里的水量,然后按照一定的时间节奏向水桶注水,比如每秒10ml,这样当水桶满溢的时候,通过注入的水量就可以计算出注水的总时间,实现了定时,也可以推算出一共进入了多少水量,同时也是计数的过程,因此单片机里的定时器和计数器其实是一套系统。7.5定时/计数器的查询方式

在单片机中,可以使用一个标志位TFx来标志定时/计数器已经计满结束。有了这个定时计数满的标志,理论上称之为溢出中断标志。当定时/计数满的时候,自动被单片机置1,所以可以查询该位的标志来获取定时器的工作状态,进而判断本次定时或者计数是否结束。7.5定时/计数器的查询方式因此可以总结出定时/计数器的使用步骤为:1.设置工作方式TMOD2.计算计数初值3.启动定时器TRX4.查询方式判断计数是否溢出。While(!TFX);TFx=0;7.5定时/计数器的查询方式7-1-2秒表软件程序设计#include<reg52.h>unsignedcharled[]= //共阳极字形码 {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay1s(); //函数声明voiddisplay(unsignedchart);voidmain(){ unsignedchartime=1; TMOD=0x10; //定时器工作模式 TH1=0x3c; //定时器初值 TL1=0xb0; TR1=1;while(1) { display(time); //调用显示函数 delay1s(); time++; if(time==60)time=1; }} 7-1-1秒表功能的实现参考程序7-1-2秒表软件程序设计voiddelay1s() //查询方式使用定时器{unsignedchari;for(i=0;i<20;i++) //50ms循环20次{

TH1=0x3c;TL1=0xb0;TR1=1;

while(!TF1);TF}}voiddisplay(unsignedchart) //显示函数定义{

unsignedcharge,shi;

ge=t%10;

P2=led[ge];

shi=t/10;

P2=led[shi];} 7-1-1秒表功能的实现参考程序任务小结7-2

声光报警器的实现

任务实施任务描述

使用单片机的中断功能实现声光报警器,电路图如下图,使用proteus软件绘制并仿真电路。按键接入单片机的P3.2口,是单片机外部中断0的输入端口。当按键被按下的时候,外部中断被触发,进而使P1.1口的灯管报警开启,同时连接到P1.0口上的蜂鸣器发出警报声音,进而实现按键实现声光报警的功能。再次按下按键的时候,声音和灯光报警同时被清除。初级任务:用单片机实现声光报警,灯光常亮,声音始终不停高级任务:用单片机实现声光报警,灯光闪烁,声音按照设定间隔鸣响。更加接近实际报警器的设定。7-2声光报警器的实现执行思路51单片机最小系统按键输入声光报警模块7-2-2ProteusISIS设计电路原理图7-2声光报警器的实现实施过程

声光报警模块中,发光二极管部分与前面章节一致。蜂鸣器与单片机的P1.0端口连接,蜂鸣器的是声光报警的重要部分。可以看到无源蜂鸣器的驱动部分,由两个NPN的三极管构成的达林顿放大电路构成。当P1.0口输出高电平时,两个三极管导通;P1.0口输出低电平的时候,两三极管截止。如此反复,可以用单片机的延时功能,从P1.0口输出不同频率的脉冲,从而控制蜂鸣器发生,进而可以控制蜂鸣器的声音频率。这也是单片机控制无源蜂鸣器的基本方式。7-2声光报警器的实现实施过程序号元件名称元件型号元件参数1单片机AT89C52

2BUTTON按键

3BUZZER蜂鸣器

4MPS6514NPN三极管

5LED-RED发光二极管红色6RES按键上拉电阻1K7RESLED限流电阻4708单片机AT89C52

7-2声光报警器的实现7-2-2软件程序设计思路——程序设计思路

声光报警在程序中是依靠外部中断的函数实现的。如果外部中断触发,自动进入中断处理函数,首先将LED状态取反点亮,同时将beep的状态从0变成1,蜂鸣器不断鸣响。如果再次按下按键,则LED状态取反熄灭,蜂鸣器状态取反停止鸣叫。使用外部中断的处理函数,就实现了声光报警的功能。7-2声光报警器的实现7-2声光报警器的实现知识链接7.6中断的概念7.7单片机中断系统的结构7.8中断系统的寄存器7.9中断的响应流程7.10中断系统的程序设计7.11中断标志的撤销7.6中断的概念

声光报警器是生活中的常见设备,利用的是单片机系统中重要的中断机制。

所谓中断机制是现代计算机系统中的基础设施之一,它在系统中起着通信网络作用,以协调系统对各种外部事件的响应和处理。中断是实现多道程序设计的必要条件。中断是CPU对系统发生的某个事件作出的一种反应。

小林正在看报纸,宠物狗需要每隔4小时喂一次,烧的开水15分钟煮开。在小林看报纸的时候,电话铃响了,小林需要中断看报纸的工作,转而去接电话,在接电话的时候,水开了,小林就要中断打电话的工作,转向处理开水的事务,处理完开水,继续接完这个电话,然后回到自己喜欢的看报纸的活动。7.6中断的概念

小林看报纸是他正在执行的主要活动,狗叫,水开,电话铃响,都可以打断看报纸的主要活动,这三个称为中断,而且这个三个中断发生在小林的家里,叫做内部中断。

也有可能有朋友来拜访,或者快递员来送快递,这两个是在小林家的室外,可以把他们称作外部中断。7.6中断的概念

1.中断:单片机中的中断是指通过硬件来改变CPU的运行方向,外部设备或者单片机内部向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行,转而去执行相应的中断处理程序,待中断处理程序被执行完毕以后,再继续执行原来被中断的程序。7.6中断的概念

中断源:引起中断的原因,或能发出中断申请的来源,称为中断源。

中断请求:中断源要求服务的请求称为中断请求.

主程序:原来正常运行的程序称为主程序。7.6中断的概念

中断服务程序:CPU响应中断后,转去执行相应的处理程序,该处理程序通常称之为中断服务程序。

断点:主程序被断开的位置(或地址)称为断点。7.6中断的概念

分时操作:CPU可以使多个外设同时工作,并分时为各外设提供服务,从而大大提高了CPU的利用率和输入/输出的速度。

实时处理:当计算机用于实时控制时,请求CPU提供服务是随机发生的。有了中断系统,CPU就可以立即响应并加以处理。

故障处理:当计算机运行中出现如电源断电、存储器校验出错、运算溢出等错误时,CPU可及时转去执行故障处理程序,减小或消除故障产生的影响。3.中断的优势和作用:7.6中断的概念7.7单片机中断系统的结构中断的几个重要寄存器:

1.中断相关的寄存器:TCON:控制寄存器,IE:中断允许寄存器,IP中断优先级寄存器,SCON:串口控制寄存器;

2.五个中断源:上图的最左端是5个中断源,INT0,T0,INT1,T1,和串口中断中断名称中断号中断入口地址INT0外部中断000003HT0定时器01000BHINT1外部中断120013HT1定时器03001BHRI/TI串口中断40023H7.7单片机中断系统的结构

3.外部中断的输入方式选择:INT0和INT1的输入端有ITx的选择控制位,这一位控制外部中断的输入是电平触发方式还是边沿触发方式。

4.五个中断源从上到下的排列,也是五个中断源的优先级顺序,从上到下由高到低,此优先级称为自然优先级。7.7单片机中断系统的结构1.TCON寄存器

TCON(中断控制寄存器),字节地址0x88H,因此这个寄存器可以进行位寻址。特殊功能寄存器TCON的格式如图所示。7.8中断系统的寄存器1.TCON寄存器标志位功能TF1TF1—定时器/计数器T1的溢出中断请求标志位。当T1计数产生溢出时,由硬件使TF1置“1”,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清“0”,TF1也可由软件清“0”。TR1定时器1启动,见定时器部分TF0定时器/计数器T0的溢出中断请求标志位,功能与TF1类似。TR0定时器0启动,见定时器部分IE1外部中断请求1的中断请求标志位。IT1IT1—选择外部中断请求1为跳沿触发还是电平触发。IT1=0,电平触发方式,引脚上低电平有效,并把IE1置“1”。转向中断服务程序时,由硬件和软件把IE1清“0”。IT1=1,跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE1置“1”。转向中断服务程序时,由硬件自动把IE1清“0”。IE0外部中断请求0中断请求标志位,功能与IE1类似。IT1IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似。7.8中断系统的寄存器2.SCON寄存器

SCON串行口控制寄存器,字节地址为98H,可位寻址。此寄存器只使用最低两位,7.8中断系统的寄存器2.SCON寄存器

(1)TI—串行口的发送中断请求标志位。每发送完一帧串行数据后,TI自动置“1”。TI标志必须由软件清“0”。

(2)RI—串行口接收中断请求标志位。串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。必须在中断服务程序中用指令对RI清“0”。7.8中断系统的寄存器

IE中断允许寄存器,51单片机的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。IE字节地址为A8H,可位寻址。7.8中断系统的寄存器3.IE寄存器标志位功能EAEA—中断允许总开关控制位。EA=0,所有的中断请求被屏蔽。EA=1,所有的中断请求被开放。ESES——串行口中断允许位。ES=0,禁止串行口中断。 ES=1,允许串行口中断。ET1ET1—定时器/计数器T1的溢出中断允许位。ET1=0,禁止T1溢出中断。ET1=1,允许T1溢出中断。EX1EX1——外部中断1中断允许位。EX1=0,禁止外部中断1中断。 EX1=1,允许外部中断1中断。ET0ET0——定时器/计数器T0的溢出中断允许位。功能与ET1相同。EX0EX0——外部中断0中断允许位。功能与EX1相同。7.8中断系统的寄存器3.IE寄存器使用定时器0的中断,如何打开相应的中断标志位,IE该如何设置呢?方法1:使用位寻址:

ET0=1;EA=1;方法2:按照寄存器整体赋值:IE=0x20如何禁止中断呢?如果想关闭总中断:EA=0;如果想关闭某个中断,比如关闭外部中断0:EX0=0;AT89S51复位以后,IE被清“0”,所有中断请求被禁止。7.8中断系统的寄存器【小例子】

打开片内2个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。方法1:使用位操作指令

EA=1;//开总中断

ET0=1://开定时器0中断

ET1=1://开定时器1中断方法2:使用字节指令 IE=0x8A;7.8中断系统的寄存器4.IP寄存器

中断优先级寄存器IP,其字节地址为B8H,可位寻址。

51单片机的优先级从高到低为:

外部中断0>定时器0>外部中断1>定时器1>串口中断7.8中断系统的寄存器4.IP寄存器中断优先级寄存器IP各位的含义如下:(1)PS—串行口中断优先级控制位 (2)PT1—定时器T1中断优先级控制位(3)PX1—外部中断1中断优先级控制位 (4)PT0—定时器T0中断优先级控制位(5)PX0—外部中断0中断优先级控制位7.8中断系统的寄存器【小例子】

IP寄存器初始化,AT89S51的两个外中断请求为高优先级,其他中断请求为低优先级。(1)用位操作指令

PX0=1;//外中断0设置为高优先级

PX1=1; //外中断1设置为高优先级

PS=0; //串行口设置为低优先级

PT0=0; //定时器/计数器T0为低优先级

PT1=0; //定时器/计数器T1为低优先级(2)用字节操作指令

IP=0x05;7.8中断系统的寄存器1.中断请求2.中断响应3.中断返回4.中断请求的阻塞7.9中断的响应流程

中断响应过程就是自动调用并执行中断函数的过程。C51编译器支持在C源程序中直接以函数形式编写中断服务程序。常用的中断函数定义语法如下:

void函数名()interruptn7.10中断系统的程序设计7-2-2软件程序设计7-2声光报警器的实现—参考程序扩展任务:声光报警器的改进

1.任务描述:根据贴近实际生活的实际场景,按下按键的时候,用单片机控制声光报警,灯光闪烁,声音按照设定间隔鸣响。更加接近实际报警器的设定。7-2声光报警器的实现

扩展任务-声光报警器原理图7-2声光报警器的实现7-2声光报警器的实现7-2声光报警器的实现如右图7-26所示为具有简单控制功能的秒表的原理图,该秒表使用定时器中断,使用两位共阳极数码管,两个按键分别接在两个外部中断的管脚上,实现启动/暂停和清零功能。仿真电路元器件明细表见下表。7.10中断系统的程序设计序号元件名称元件型号元件参数1单片机AT89C52

2BUTTON按键2个3RP18位阻排10k47SEG-MPX2_CA两位数码管共阳极5RES按键上拉电阻1K6RES数码管限流电阻5108个软件程序设计7.10中断系统的程序设计软件程序设计7.10中断系统的程序设计软件程序设计7.10中断系统的程序设计7.11中断标志的撤销

1.定时器/计数器中断请求的撤销

定时器/计数器中断的中断请求被响应后,硬件会自动把中断请求标志位(TFO或TF1)清零,因此定时器/计数器中断请求是自动撤销的。

2.外部中断请求的撤销

(1).边沿方式外部中断请求的撤销包括两项内容:中断标志位清零和外中断信号的撤销。其中,中断标志位(IEO或IE1)清零是在中断响应后由硬件自动完成的。对于外中断信号的撤销,由于跳沿信号过后即消失,所以边沿方式的外部中断也是自动撤销的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论