ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:186.54KB ,
资源ID:12854981      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12854981.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机教学讲稿.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机教学讲稿.docx

1、单片机教学讲稿第七章 定时/计数器本章的主要内容:1、定时器/计数器结构及工作原理2、定时器/计数器控制方法3、4种定时器工作方式(方式0、方式1、方式2、方式3)4、定时器/计数器的应用设计重点: 定时器工作方式1和方式2难点:定时器、计数器的设计与应用第一节 AT89S51单片机定时/计数器结构及工作原理一、定时/计数器结构AT89S51单片机由特殊功能计数器TH0、TL0、TH1、TL1、工作方式寄存器TMOD、定时/计数器控制寄存器TCON以及相应的控制逻辑电路构成。定时/计数器的结构虽然看其来复杂,实质上它就是两个加1计数器,每个加1计数器均由两个8位寄存器组成,构成了一个16位寄存

2、器。这16位的加1计数器在工作时需要通过TMOD和TCON寄存器的控制。有两种方式可以让这个计数器产生计数。第一种方式计数脉冲由单片机内部的系统振荡器经12分频产生,这时构成的就是定时器;第二种方式计数脉冲是由单片机外部的T0,T1引脚提供的,这个脉冲信号的频率和幅值都是随机变化的,这时构成的就是计数器。二、定时/计数器工作原理1、定时器定时器是通过单片机内部的计数器实现的,他的计数脉冲来自单片机的内部,即每一个机器周期产生一个计数脉冲,也就是说每经过一个机器周期,计数器加1,直至计数器计满溢出为止。在使用定时器时,我们通过软件对定时器进行设置,在系统运行时,定时器就会按照设定的工作方式自动运

3、行,不再占用CPU的操作时间,除非发生定时器中断,才会中断当前操作,转而执行中断内容。2、计数器单片机的计数功能是对外来脉冲进行计数。T0(P3.4)和T1(P3.5)分别是两个计数器的计数脉冲输入端。当外部输入的脉冲发生负跳变时(由高-低),计数器加1,直到加满溢出时,向CPU申请中断。虽然单片机具有对外来脉冲计数的功能,但并不是说任意频率的脉冲都可以直接通过单片机计数器计数,而是受到单片机的晶振频率的限制。与外部中断的触发一样,单片机的CPU也是在每个机器周期的S5P2期间对外部计数引脚的输入脉冲进行采样,如果第一个机器周期采样为1,第二个机器周期采样为0,那么在紧跟着的下一个机器周期的S

4、3P1期间计数器+1。由于确认一次输入脉冲需要两个机器周期,也就是24个时钟周期,因此外部输入计数脉冲的最高频率为时钟周期的1/24。例如:6MHz晶振,则允许的输入外部脉冲最高频率为6/24=250kHz。同时,为了保证每一种电平状态都能在电平变化之前被采样一次,所以待检测高、低电平必须保持一个机器周期。计数器中断包含两种方式:硬中断和软中断。硬中断是指在允许单片机定时/计数中断的条件下,当单片机内部的计数器发生溢出时,系统硬件自动产生中断信号,使中断标志位置1,并进入中断服务程序执行中断内容。软中断是在不打开系统中断的情况下,单独启动单片机的计数器,使其能够检测外部输入的信号,从而产生计数

5、,此时我们在主程序中循环读取计数器的值,当计数器达到预定值时,再对计数器寄存器的值进行重置。由于软中断需要循环扫描计数器寄存器的值,所以会占用大量的CPU,因此应尽量避免。(类似于扫描法)三、定时/计数器控制方法定时/计数器是一种可编程部件,他不会自动开始工作,必须通过软件确定其工作方式,所以,在定时/计数器开始工作之前,CPU必须将一些命令写入定时/计数器的特殊功能寄存器。将控制命令写入定时/计数器的过程称为定时/计数器的初始化。首先,我们先来了解一下这些控制定时/计数器的特殊功能寄存器。 (1)定时/计数器特殊功能寄存器51单片机定时/计数器的工作由TMOD和TCON两个特殊功能寄存器控制

6、。TMOD用于设置其工作方式,而TCON则用于控制其启动和中断申请。1、工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于设置T0的工作方式,高四位用于设置T1的工作方式。其格式如下:1-GATE(TMOD.7和TMOD.3):门控位。当GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;当GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。2-(TMOD.6和TMOD.2):定时/计数模式选择位。当为定时模式;为计数模式。3-M1M0(TMOD.5,4和TMOD.1,0):工

7、作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。2、控制寄存器TCONTCON的低4位其实在上一章已经介绍过了,用于控制外部中断。而TCON的高4位用于控制定时/计数器的启动和关闭。其格式如下:1-TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。2-TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,

8、用软件可控制定时/计数器的启动与停止。3-TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。4-TR0(TCON.4):T0运行控制位,其功能与TR1类同。(2)定时/计数器的初始化与启动在使用定时/计数器之前,必须在主程序中对其进行初始化,定时/计数器初始化的一般步骤如下:1-确定工作方式:对TMOD赋值;2-预置定时/计数器初值:初值就是指计数器起始计数时的值,可直接将初值写入TH0、TL0或TH1、TL1;3-根据需要开放定时/计数器的中断:直接对IE寄存器的定式器中断位赋值;4-启动定时/计数器:对TCON赋值;第二节 定时/计数器工作方式一、工作方式通过M1 M0位

9、的设置,T0可以选择4种工作方式,T1可以选择3种工作方式。(1)方式0:定时/计数器T1和T0均可以设置为方式0,它是13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,硬件自动置位TCON中的TF0标志,向CPU发出中断请求。(2)方式1定时/计数器T1和T0均可以设置为方式1,它是16位计数器,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器,TH0溢出时,硬件自动置位TCON中的TF0标志,向CPU发出中断请求。(3)方式2在方式0和方式1中,当计数溢出后,计数器变为0,因此在循环定时或循环计数时必须要用软件反复设置

10、计数初值,这必然会影响定时精度,定时器方式2可以解决反复重装初值的问题,定时/计数器T1和T0均可以设置为方式2,方式2为自动重装初值的8位计数器。其中,TH0被作为常数缓冲期,存储计数器初值。当TL0计数溢出时,自动地将TH0的常数重新装入TL0中,使TL0从初值开始重新计数,从而避免了人为软件重装初值所带来的时间误差。工作方式2特别适合于用作较精确的脉冲信号发生器,当然此时的晶振频率必需选择准确,必须是12的整数倍。 (4)方式3方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。定时器T0在方式3下被拆为两个独立的8位计数器TL0和TH0,而原来的T0控制位

11、、引脚和中断源均用于TL0的控制。TH0占用原定时器T1的控制位TR1和TF1,所以此时不能再使用定时器1中断了。(这种方式不常用,了解就可以)二、定时/计数器初值的确定方法单片机内部的这个定时/计数器实质上就是一个增1计数器,这个计数器从我们设定给它的初值起开始计数,直到计满为止。在不同工作模式下,计数器的位数各有不同,那么它所能承受的最大的计数值也就各不相同。下面给大家介绍一下如何确定定时/计数器初值。方式0:13位计数器,当计数器的值达到0x3FF时,产生溢出中断。此时最大的计数值M=213=8192方式1:16位计数器,当计数器的值达到0xFFF时,产生溢出中断。M=216=65536

12、方式2:8位计数器,当计数器的值达到0xFF时,产生溢出中断,并且自动重装初值。M=28=256方式3:定时器T0分成2个8位计数器,所以2个M的值均为256有了各种工作方式下计数器的最大计数值M,就可以计算初值X了X=M-所希望的计数值*举例来说,假设单片机的晶振频率为6MHz,要求产生1ms的定时,试计算初值。在晶振频率为6MHz时,计数器每次加1所需的时间为2us。要产生1ms的定式时间需要加1操作500次,则500即为期望的计数值。如果在方式1下工作,则初值X=M-计数值=65536-500=65036=fe0cH,则初值为fe0Ch。当计数器产生溢出中断时,除了方式2以外,其它方式在

13、中断后不会自动将初值重新装入,而是归零,所以在中断服务程序中,须再次装入初值。第三节 定时/计数器设计及应用一、定时器中断服务程序这部分内容我们在上一章已经详细介绍过,这里给出两个定时/计数器的中断服务程序。T0中断服务程序:void T0_time( ) interrupt 1 TH0=(65536-45872)/256; TL0=(65536-45872)%256;T1中断服务程序:void T1_time( ) interrupt 3 TH1=(65536-45872)/256; TL1=(65536-45872)%256;注意:尽量不要将过多的程序写在中断服务程序中,能在主程序中完成的功能,尽量不要写在中断程序中,一定要高效简洁。二、定时/计数器应用设计(1)利用定时器0的方式2使发光二极管以200ms间隔闪烁,同时利用定时器1的方式1实现数码管前两位的60s循环计时。思路:先根据晶振计算定时/计数初值,根据题意设置定时/计数器工作方式(2)利用计数器0的工作方式1实现计数,要求:令P3.3引脚输出低电平,当按键S18按下时,计数器计数1次,并将所计的数值实时显示在数码管的前两位,计满100时清零,重新计数。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1