版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1项目概述MCS-51单片机内部设有两个16位的可编程定时/计数器。其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。本项目的任务是利用三色发光二极管实现节日彩灯的控制,将8个发光二极管连接到P1口,每间隔1s改变P1口的输出以控制发光二极管的亮灭。由于受到定时器位数的限制,仅靠单个定时器无法完成1s的定时,项目中还需要结合循环程序才能实现项目的要求。返回5.2项目要求本项目的要求如下:(1)利用定时器T0在晶振6MHz的条件下实现100ms的定时。(2)单片机的P1口与8个三色发光二极管相连,三种颜色灯的排列顺序为:绿一红一黄一绿一红一黄一绿一红。(3)编写循环10次的程序,每100ms循环1次。(4)实现P1口的三个状态值的轮流变换。返回5.3项目目的本项目的目的是令读者了解单片机的定时/计数器的工作原理,在项目设计过程中掌握定时常数的计算方法,利用中断的工作过程,完成单片机的内部结构,MCS-51CPU芯片的引脚,加深对地址总线、数据总线和控制总线的认识,熟悉伟福6000和Protues软件的使用方法。返回5.4项目支撑知识5.4.1项目开发背景知识1定时/计数器原理及工作模式1.定时/计数器的结构及工作原理在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。若采用光电脉冲发生器作为检测元件,则先应对每个采样周期中光电脉冲发生器发出的脉冲进行计数,然后再通过实时计算求得对应的转速。定时/计数器可以完成上述定时、产品计数等各种任务,因此它是单片机中非常重要的部件。上一下一页返回5.4项目支撑知识MCS-51单片机中微处理器、特殊功能寄存器TCON和TMOD与定时/计数器T0,T1之间的关系如图5.1所示,它反映了定时/计数器在单片机中的位置和总体结构。MCS-51单片机内部有两个16位的定时/计数器T0和T1。每个定时/计数器占用两个特殊功能寄存器:T0由TH0和TL0两个8位计数器组成,字节地址分别是8CH和8AH。T1由TH1和TL1两个8位计数器组成,字节地址分别是8DH和8BH,用于设置定时或计数的初值。在两个特殊功能寄存器TMOD和TCON的控制下,T0和T1可分别被确定为定时器工作或计数工作状态;而T0有4种工作模式,T1有3种工作模式。它们都有中断中请的功能,成为单片机的两个内部中断源。上一页下一页返回5.4项目支撑知识MCS-51单片机的定时/计数器的逻辑结构如图5.2所示。对任一个定时/计数器而言,它的核心是1个加1计数器,它的输入脉冲有两个来源:一个是外部脉冲源(Tx端),另一个是系统机器周期(时钟振荡器经12分频以后的脉冲信号正好是一个机器周期)。它的工作状态的选择由特殊功能寄存器TMOD的C/T位来决定,当C/T=0为定时状态,当T=1为计数状态。16位的加1计数器由两个8位的特殊功能寄存器THx或TLx组成(x=0,1),它们可通过编程组合为不同的方式(13位、16位、两个分开的8位等),从而形成定时/计数器不同的4种工作模式,而这要由工作模式控制寄存器TMOD的相应位决定。上一页下一页返回5.4项目支撑知识就像说1个小时后闹铃响也可以说是秒针走了3600次后闹铃响一样,只要计数脉冲的间隔相等,则计数值就代表了时间。单片机中定时器和计数器实质是一回事,只不过计数器是记录外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。提供给定时器的计数源就是由单片机的晶振经过12分频后获得的一个脉冲源,即所说的一个机器周期。因此可以说当定时/计数器处于定时状态时也就是加1计数器在每个机器周期加1。并且计数脉冲的间隔与晶振有关。例如一个12MHz的晶振,它提供给计数器的脉冲时间间隔就是12MHz/12等于1MHz,也就是1μs上一页下一页返回5.4项目支撑知识每当计数器计数满时,称为溢出。16位计数器的容量也就是最大的计数值是65536,因此计数计到65536就会产生溢出。而计数器溢出后将使得计数器溢出标志位TFx位置1,产生定时/计数器溢出中断。MCS-51单片机的定时/计数器用的是加1计数器,加法计数器是计满溢出时才中请中断,所以在给计数器赋计数脉冲初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值。设计数器计数的最大值(满计数值)为M,计数值为N,计数初值为X,则X的计算方法如下式所示:计数状态:X=M-N定时状态:X=M-定时时间/T上一页下一页返回5.4项目支撑知识式中,T=12/fosc,fosc为单片机晶振频率;M=2n,n为计数器的位数,因此,上式也可写为X=2n-定时时间/(12/fosc)2.定时/计数器的模式寄存器和控制寄存器MCS-51单片机中TMOD用于设置定时器的工作模式;TCON用于控制定时器T0,Tl的启动与停止,并包含了定时器的状态。1)定时/计数器工作模式寄存器TMOD定时/计数器工作模式寄存器TMOD是一个8位特殊功能寄存器,地址为89H,不可位寻址。TMOD用于选择定时/计数器的工作模式,它的高4位控制定时/计数器T1,低4位控制定时/计数器T0oTMOD中各位的定义如下:上一页下一页返回5.4项目支撑知识其中:C/T:定时/计数器功能器功能选择位。当C/T=1时为外部计数方式,即对外部引脚的外部输入脉冲计数。外部引脚上外部输入的每一个脉冲的负跳变使计数值加1,由于外输入脉冲的每个高、低电平持续时间都应大于一个机器周期,因此最小的计数周期为两个机器周期。例如,若单片机晶振频率为12MHz,则外部计数脉冲的最高频率只能为500kHz当C/T=0时为内部定时方式,每一个机器周期使定时/计数器的计数值加1.上一页下一页返回5.4项目支撑知识M1M0:定时/计数器工作模式定义位,其具体定义方式如表5.1所示。GATE:门控制位,用于控制定时/计数器的启动是否受外部中断源信号的影响。GATE=0时,与外部中断无关,由TCON寄存器中的TRx(x=0或1)位控制启动。GATE=1时,由控制位TRx和引脚INTx共同控制启动,也即外部引脚参与启动或停止定时/计数器,只有该引脚和TRx都是高电平(即外部中断引脚INTx=1和TRx=1)时才能启动定时/计数器,允许计数。利用这一点可以用来测量外部中断的输入脉冲宽度。上一页下一页返回5.4项目支撑知识2)定时/计数器控制寄存器TCON定时/计数器控制寄存器TCON是一个8位特殊功能寄存器,地址为88H,可以位寻址。TCON控制寄存器各位的定义如下:其中:TF0(TF1):为T0(T1)定时器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,发出中断请求信号。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0o该标志位可由软件查询,也可用软件清0或置1o上一页下一页返回5.4项目支撑知识TR0(TR1):为T0(T1)运行控制位。当TR0(TR1)=1时,启动T0(T1);TR0(TR1)=0时,关闭T0(T1).该位由软件进行设置TCON的低4位与外部中断有关,可参阅中断系统一节的有关内容。TMOD和TCON寄存器在复位时都被清0。3.定时/计数器的工作模式MCS-51单片机的定时/计数器有4种工作模式,分别由TMOD寄存器中的M1、M0两位的二进制编码所决定。上一页下一页返回5.4项目支撑知识1)模式0令TMOD的两位模式控制位M1和M2都写入0,也即当M1M0=00时,定时/计数器设定为工作模式0。定时/计数器T0和T1的模式0都是相同的,以下仅以T0为例,其逻辑结构如图5.3所示。在此工作模式下,T0构成一个13位的计数器,由TH0的8位和TL0的低5位组成,TL0的高3位未用,满计数值为213oT0启动后立即加1计数,当TL0的低5位计数溢出时向THO进位,TH0计数溢出则对相应的溢出标志位TF0置位,以此作为定时器溢出中断标志。当单片机进入中断服务程序时,由内部硬件自动清除该标志。上一页下一页返回5.4项目支撑知识由图5.3知,当选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个控制开关,显然这个开关不合上,计数脉冲就没法过去。GATE=0时,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT0无关,在这种情况下,开关的打开、合上只取决于TR0,只要TR0是1,开关就合上,计数脉冲得以畅通无阻,而如果TR0等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR0oGATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR0来控制,而且还要受到INT0引脚的控制,只有TR0为1,且INT0引脚也是高电平,开关才合上,计数脉冲才得以通过。上一页下一页返回5.4项目支撑知识2)模式1当M1M0=01时,定时/计数器设定为工作模式1。定时/计数器T0和T1的模式1都是相同的,以下仅以T0为例。在此工作模式下,T0构成16位定时/计数器,其中TH0作为高8位,TL0作为低8位,满计数值为216,其余同模式。类似。其逻辑结构如图5.4所示。3)模式2当M1M0=10时,定时/计数器工作在模式2,构成1个自动重装载的定时/计数器,满计数值为28。定时/计数器T0和T1的模式1都是相同的,仍以T0为例,在模式0和模式1中,当计数满后,若要进行下一次定时/计数,需用软件向TH0和TL0重新预置计数初值。上一页下一页返回5.4项目支撑知识在模式2中TH0和TL0被当作两个8位计数器,计数过程中,TH0寄存8位初值并保持不变,由TL0进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将TH0中的初值重新装到TL0中去,即重装载。除此之外,模式2也同方式0类似。其逻辑结构如图5.5所示。如图5.5所示,每当计数溢出,就会打开T0的高、低8位之间的开关,预置数进入低8位。这个动作由硬件自动完成的,不需要由人工干预。通常这种工作模式用于波特率发生器(将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟。上一页下一页返回5.4项目支撑知识4)模式3模式3只适用于定时/计数器T0。当定时/计数器T1处于模式3时相当于TR1=0,停止计数。这种工作模式之下,定时/计数器T0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。其逻辑结构如图5.6所示。上一页下一页返回5.4项目支撑知识TL0占用了定时/计数器TO所使用的控制位(C/T,GATE,TR0,TF0,其功能和操作与模式0或模式1完全相同;TH0作定时器使用时,借用了定时/计数器T1的两个控制信号TR1和TF1作为通断控制和溢出标志,并同时占用定时/计数器1的中断入口。而定时/计数器T1此种情况下,就没有标志和控制信号供其自身使用了。一般情况下,当定时/计数器T1用作串行口的波特率发生器时,定时/计数器T0才工作在模式30当定时/计数器T0处于工作模式3时,定时/计数器T1可工作为模式0,1,2,但由于此时其已没有控制通断和溢出中断的功能,T1只能作为串行口的波特率发生器使用或不需要中断的场合。上一页下一页返回5.4项目支撑知识5.4.2项目开发背景知识2定时/计数器应用举例由于MCS-51单片机的定时/计数器是可编程的,因此在使用之前需要进行初始化。在编程时主要注意两点:第一要能正确写入控制字;第二能进行计数初值的计算。一般情况下,包括以下几个步骤:①确定工作模式,即对TMOD寄存器进行赋值。②计算计数初值,并写入寄存器TH0,TL0或TH1、TL1中③根据需要,置位ETx允许定时器中断。④根据需要,置位EA使CPU开中断。⑤置位TRx启动计数。上一页下一页返回5.4项目支撑知识[例5.1]利用定时/计数器T0通过P1.0引脚输出周期为2ms的方波,没单片机晶振频率为6MHz。试确定计数初值、TMOD内容及编制相应程序。若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。对于定时1ms来说,用定时器模式0(13位定时器)就可实现。上一页下一页返回5.4项目支撑知识①计算定时/计数初值:定时1ms的初值:因为机器周期=12÷6MHz=2μs所以1ms内T0需要计数N次:N=1ms÷2μs=500由此可知:使用模式0的13位计数器即可,T0的初值X为X=M-N=213-500=8192-500=7692=1E0CH=00011110000011008但是,因为是13位计数器中,故最高3位未用为0,13位二进制数中低5位送TL0,剩余的高8位送TH0,则T0的初值调整为TH0=0F0H,TL0=0CH上一页下一页返回5.4项目支撑知识②确定TMOD方式字:对于定时器T0来说,M1M0=00H,C/T=0,GATE=0。定时器T1不用,取为全0。于是TMOD=00000000B=00H③TCON初始化:启动TR0=1;IE初始化:开放中断EA=1,定时器T0中断允许ET0=1程序清单如下:上一页下一页返回5.4项目支撑知识上一页下一页返回5.4项目支撑知识若用查询方式产生所要求的方波。则所编程序和上面的很相似,不同之处为不需要中断和中断服务程序。查询的对象是定时器T0的溢出标志TF0,在计数过程中,TF0为0;当定时时间到,计数器溢出使TF0置1。由于未采用中断,TF0置1后不会自动复位为。,故需用指令使TF0复位为0。程序清单如下:上一页下一页返回5.4项目支撑知识已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。假定红灯灭时停止统计,红灯亮时才在上次统计结果的基础上继续统计,试用单片机定时/计数器T1的模式1完成该项产品的计数任务。上一页下一页返回5.4项目支撑知识图5.7给出了完成产品计数任务的硬件简化电路图,为了消除单片机P3.5和P3.3两个引脚上外加信号前后沿抖动的现象,在两脚外部分别加了硬件消抖滤波电路,以提高计数可靠性。①初始化:TMOD=11010000B=0D0H(GATE=1,C/T=1,M1M0=01);TCON=00H(初始化时应暂时关闭T1,并且清除中断标志位TF1)o②T1在模式1时,溢出产生中断,且计数器回零,故在中断服务程序中,需用R0计数中断次数,以保护累积计数结果。③只有在初始化程序结束时才能启动T1计数,开T1中断。上一页下一页返回5.4项目支撑知识程序清单如下:上一页下一页返回5.4项目支撑知识上一页下一页返回5.4项目支撑知识注意:模式1与模式0基本相同,只是模式1改用了16位计数器。要求定时周期较长时,13位计数器不够用,可改用16位计数器。[例5.3]设单片机晶振频率为6MHz,定时/计数器T0工作于模式3,TL0和TH0作为两个独立的8位定时器,要求TL0使P1.产生200μs的方波,TH0使P1.1产生400μs的方波。当采用模式3时,对于TH0来说,需要借用定时器T1的控制信号。①计算计数初值:X0=28-200×10-6/2×10-6=156=9CHX1=28-400×10-6/2×10-6=56=38H上一页下一页返回5.4项目支撑知识②确定TMOD模式字:对定时器T0来说,M1M0=11,C/T=0,GATE=0。定时器T1不用,取为全0。于是TMOD=00000011R=03H程序清单如下:上一页下一页返回5.4项目支撑知识上一页下一页返回5.4项目支撑知识注意:当采用模式0、1,3时,只要不关闭定时/计数器,那么每当计数器回0溢出时,都需要重新装入计数初值,以保证计数值不变。而模式2是定时器自动重装载的操作方式,在模式2下,定时/计数器的工作过程与模式0、模式1基本相同,只不过在溢出的同时,将8位二进制初值自动重装载,即在中断服务子程序中,不需要编程送初值,这里不再举例。[例5.4]利用T1门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。根据要求可这样设计程序:将T1设定为模式1,GATE1设为1,置TR1为1。一旦INT0(P3.2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T1的计数值并显示。上一页下一页返回5.4项目支撑知识测试过程如图5.8所示。程序清单如下:上一页下一页返回5.4项目支撑知识上一页返回5.5项目实施5.5.1硬件设计在硬件设计之前,读者需要按照表5.2准备好本项目所需要的器件清单。本项目的硬件连线如图5.9所示。5.5.2软件设计软件程序设计前,读者必须先计算出定时器的基本参数:定时常数和工作模式寄存器TMOD的值。1)时间常数的计算设时间常数为X,利用公式(2N-X)×机器周期=定时时间下一页返回5.5项目实施要计算时间常数X,读者必须已知单片机晶振的工作频率、定时器工作方式(可以决定N的值)和欲定时的时间。在此项目中,利用定时器T0在晶振6MHz的条件下实现100ms的定时,只能使用工作方式1才能实现100ms的定时,工作方式1的计数器位数为16,即N=16(216-X)×2μs=100ms(6553
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 左颊部恶性肿瘤扩大切除术后护理查房
- 项目预算调整及进度同步函7篇
- 信息守秘安全庄重承诺书范文3篇
- 家庭网络安全设置与维护技能提升指导书
- 电子商务平台运营策略优化方案
- 员工教育培训责任落实保证函(3篇)
- 企业项目推进保证承诺书范文4篇
- 线上支付系统安全检测报告函5篇范本
- 员工关系与人力资源策略
- 保障粮食生产安全承诺书(6篇)
- 艰难梭菌感染
- (2025版)血液净化模式选择专家共识解读
- 2026年北京市丰台区高三一模英语试卷(含答案)
- 2021 年四川‘五类人员’选拔笔试题目及解析
- 省级政府和重点城市一体化政务服务能力调查评估报告
- 中国传统民居建筑-客家土楼
- GB 25958-2010小功率电动机能效限定值及能效等级
- 2022年广东韶关烟叶复烤有限公司招聘笔试试题及答案解析
- 声级计计量标准技术报告
- 红军不怕远征难 一等奖 完整版课件
- 初级和声教程-课件第七章-和弦的转换
评论
0/150
提交评论