单片机定时器中断学习资料_第1页
单片机定时器中断学习资料_第2页
单片机定时器中断学习资料_第3页
单片机定时器中断学习资料_第4页
单片机定时器中断学习资料_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机教案第三讲 定时器/计数器1. 教学目标:a) 了解定时器/计数器的作用;b) 掌握相关的寄存器TMOD,TCON;c) 掌握定时器程序的编写;2. 教学重点与难点:a) 定时与计数的异同;b) 初值的计算以及初始化步骤;3. 教学内容:(一) 课件内容一、计数概念的引入从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕

2、在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。 二、定时8051中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。 结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。 由此,单片机中的定时器和计数

3、器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。三、计数器的容量从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999.那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。四、溢出 让我们再来看水滴的例子,当水不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,

4、就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们稍后再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。五、任意定时及计数的方法刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样

5、来满足这个要求呢?提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛? 对了,我们采用预置数的方法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就可以了,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。*定时器:每经过一个机器周期,寄存器加1。因此,可以将机器周期看作为计数周期六、相关寄存器介绍1、TCON寄存器 2、方式寄存器TMOD 3、定时器/计数器结构(以方式1为例)七、5

6、1单片机定时器初值的计算 一、10MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。 65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。 65536-9216=56320(dc00) TH0=0xdc,TL0=0x00 二、50ms定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50

7、ms=50000次 机器周期。 65536-50000=15536(3cb0) TH0=0x3c,TL0=0xb0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 八、定时器/计数器编程方法第一:设置特殊功能寄存器TMOD,使之工作在需求的状态。第二:设置计数寄存器的初值,精确设定好定时时间。第三:设置特殊功能寄存器TCON,通过打开TR来让定时器进行工作。(也可设置为中断模式)TH1 = 0xfc; TL1 = 0X66

8、;12(65536x) /11059200 = 0.02s(二) 相关程序/ 第一个发光二级管以50ms闪烁#include<reg51.h>sbit led=P10;main()TMOD=0x10;TH1=0x3c;TL1=0xb0;TR1=1;while(1) if(TF1=1)TF1=0;led=led;TH1=0x3c;TL1=0xb0;/流水灯50ms#include<reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P10;void init()TMOD=0x10

9、;TH1=0x3c;TL1=0xb0; TR1=1;main() uint8 i=0;init(); while(1) if(TF1=1)TF1=0; P1=(1<<i+);TH1=0x3c;TL1=0xb0;if(i=8)i=0;/第一个小灯以1s亮灭闪烁#include<reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P10;void init()TMOD=0x10;TH1=0x3c;TL1=0xb0; TR1=1;main() uint8 i=0;init(); wh

10、ile(1) if(TF1=1)TF1=0;TH1=0x3c;TL1=0xb0; i+; if(i=20)i=0; led=led;/1s的流水灯#include<reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P10;void init()TMOD=0x10;TH1=0x3c;TL1=0xb0; TR1=1;main() uint8 i=0,t=0;init(); while(1) if(TF1=1)TF1=0;TH1=0x3c;TL1=0xb0; t+; if(t=20)t=0;

11、P1=(1<<i+); if(i=8) i=0;/完整流水灯自上而下,再自下而上#include<reg51.h>#include<intrins.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P10;void init()TMOD=0x10;TH1=0x3c;TL1=0xb0; TR1=1;main() uint8 i=0,t=0,temp; uint8 down,up;init(); temp=0xfe;down=8;while(down)if(TF1=1)TF1=0

12、;TH1=0x3c;TL1=0xb0; t+; if(t=20)t=0; P1=temp; temp=_crol_(temp,1); down-; up=7; temp=0x7f;while(up)if(TF1=1)TF1=0;TH1=0x3c;TL1=0xb0; t+; if(t=20)t=0; P1=temp; temp=_cror_(temp,1); up-; 第四讲 中断的相关知识1. 教学目标:a) 了解中断的作用;b) 掌握中断相关的寄存器IE,TCON;c) 掌握中断程序的编写;2. 教学重点与难点:a) 中断函数与子函数的区别;b) 中断初始化步骤;c) 主程序中中断的执行过程

13、;3. 教学内容:(一) 课件内容1、 中断引入比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。门外忽然又传来了铿锵有力的歌声,我最喜欢的古装剧要开演了,真想夺门而出,然而,听着水壶发出“咕嘟咕嘟”的声音,我清楚:除非等到水开,否则没有我享受人生的时候。这个场景跟中断有什么关系呢?在这个场景中,我是唯一具有处理能力的主体,不管是烧水、还是看电视,同一个时间点上我只能干一件事情。但是,在我专心致志干一件事情时,总有许多或紧迫或不紧迫的事情突然出现在面前,都需要去关注,有些还需要我停下手头的工作马上去处理。只有在处理完之后,方能回

14、头完成先前的任务,“把一壶水彻底烧开!” 中断机制不仅赋予了我处理意外情况的能力,如果我能充分发挥这个机制的妙用,就可以“同时”完成多个任务了。 事实上烧水需要10分钟完成,但是提下水壶和关煤气我只要几秒钟就可以完成。为了这几秒,我需要在厨房等候10分钟。如果使用闹钟定时10分钟,10分钟一到,闹钟就会提醒我该去关煤气了,那么我就可以去安心看电视了。实际上就是用了闹钟这样一个中断信号来提示我完成提水壶和关煤气的任务。2、 中断的结构3、 IE中断使能寄存器4、 TCON寄存器5、IP寄存器(二) 相关程序/定时器中断控制流水灯1s循环#include<reg51.h>typedef

15、 unsigned char uint8;typedef unsigned int uint16;uint8 i;uint16 tt;void init_timer0()TMOD=0x01;TH0=0xfc;TL0=0x67;TR0=1;EA=1;ET0=1;main() init_timer0();while(1)P1=(1<<i);void inter_timer0() interrupt 1TH0=0xfc;TL0=0x67;tt+;if(tt=1000)tt=0;i+;if(i=8)i=0;/定时器中断控制交通灯,无数码管显示,复习swictch case语句用法#incl

16、ude<reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit red1=P10;sbit yellow1=P11;sbit green1=P12;sbit red2=P13;sbit yellow2=P14;sbit green2=P15;uint8 i,j;uint16 tt;void init_timer0()TMOD=0x01;TH0=0xfc;TL0=0x67;TR0=1;EA=1;ET0=1;void traffic_operating()switch(j)case 0:red1=0;gr

17、een2=0;red2=1;yellow1=1;if(i=5) i=0;j+;break;case 1:red1=0;green2=1;yellow2=0;if(i=5) i=0;j+;break;case 2:red1=1;green1=0;yellow1=1;yellow2=1;red2=0; if(i=5) i=0;j+;break;case 3:red1=1;green1=1;yellow1=0;yellow2=1;red2=0;if(i=5) i=0;j=0;break;default: break;main() init_timer0();while(1)traffic_opera

18、ting();void inter_timer0() interrupt 1TH0=0xfc;TL0=0x67;tt+;if(tt=1000)tt=0;i+;第五讲 7段数码管应用1. 教学目标a) 掌握LED数码管的结构及工作原理;b) 掌握数码管的编码方式;c) 掌握静态显示方式及动态显示方式2. 教学重点与难点数码管动态显示方式及编程3. 教学内容(一) 课件内容一、LED数码管1.数码管结构数码管的外形结构如图所示2. LED数码管分类:按其内部结构可分为共阴型和共阳型;导通时正向压降一般为1.52V,额定电流为10mA,最大电流为40mA。 3. 数码管工作原理共阳极数码管的8个发光

19、二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外

20、接电源及额定段导通电流来确定相应的限流电阻。4. 数码管字形编码要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。字型码各位定义为:数据线D0与a字段对应,D1与b字段对应,依此类推。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。如要显示“0”,共阳极数码管的字型编码应为:11000000B(即C0H);共阴极数码管的字型编码应为:00111111B(即3FH)。依此类推,可求得数码管字形编码如表所示。显示数字共阴顺序小数点暗 共阴逆序小数点暗 共阳顺序小数点亮 共阳顺序小数点暗 Dp

21、g f e d c b a16进制 a b c d e f g Dp16进制00 0 1 1 1 1 1 13FH1 1 1 1 1 1 0 0FCH40HC0H10 0 0 0 0 1 1 006H0 1 1 0 0 0 0 060H79HF9H20 1 0 1 1 0 1 15BH1 1 0 1 1 0 1 0DAH24HA4H30 1 0 0 1 1 1 14FH1 1 1 1 0 0 1 0F2H30HB0H40 1 1 0 0 1 1 066H0 1 1 0 0 1 1 066H19H99H50 1 1 0 1 1 0 16DH1 0 1 1 0 1 1 0B6H12H92H60 1 1 1 1 1 0 17DH1 0 1 1 1 1 1 0BEH02H82H70 0 0 0 0 1 1 107H1 1 1 0 0 0 0 0E0H78HF8H80 1 1 1 1 1 1 17FH1 1 1 1 1 1 1 0FEH00H80H90 1 1 0 1 1 1 16FH1 1 1 1 0 1 1 0F6H10H90H显示的具体实施是通过编程将需要显示的字型码存放在程序存储器的固定区域中,构成显示字型码表。当要显示某字符时,通过查表指令获取该字符所对应的字型码。二、静态显示方式

温馨提示

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

评论

0/150

提交评论