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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验名称定时器实验.docx

1、实验名称定时器实验实验名称:定时器实验实验目的:1、 熟悉MCS-51的定时器原理2、掌握MCS-51定时器使用方法3、掌握MCS-51的定时中断实验原理:MCS-51系列单片机中,有两个内置16位可编程的定时器/计数器T0、T1,共4种工作方式。一、 定时器/计数器的结构1、 方式0(13位定时/计数器)2、 方式1(16位定时/计数器)3、 4、 方式2(8位重复定时/计数器)5、 方式3(8位定时/计数器,仅T0)二、 定时器/计数器的编程控制寄存器:1、TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。 1)GATE门控位 0:以TRX(X=0,1)来启动定时器/计数器运行。

2、 1:用外中断引脚(INT0*或INT1*)上的高电平和TRX来启动定时器/计数器运行。2)M1、M0工作方式选择位 M1 M0 工 作 方 式 0 0 方式0,13位定时器/计数器。 0 1 方式1,16位定时器/计数器。 1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T03) C/-T计数器模式和定时器模式选择位 0:定时器模式。 1:计数器模式。2、TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。 1) TF1、TF0计数溢出标志位 2) TR1、TR0计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作 实验内容:1、通过查询定时

3、器状态,在P1.0产生近似10kHz的方波2、利用定时中断,在中断处理程序中每秒通过P1.0切换一次逻辑笔的电平3、利用计数器测量信号发生器产生的不同频率的方波周期,并在寄存器中显示结果。实验设计:1、要求在P1.0处产生10khz的方波,即周期为100us,则P1.0的逻辑电平每50us需跳变一次。我们所使用的MCU晶振为11.0592MHz,所以定时器的定时初值为,采用方式二,n=8,可解得N约为210,转换成十六进制数即为0D2H,故初始化时定时器的初值为0D2H。然后启动定时器,不断查询定时器的溢出标志TF0,一旦定时时间到即TF0=1,则将P1.0逻辑电平取反,并将溢出标志清零,重新

4、开始定时,如此反复循环。流程图:电路图:代码及注释:ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN: SETB P1.0 ;给P1.0一个初值 MOV TMOD,#02H ;T0工作于定时方式2 MOV TH0,#0D2H ;设置定时初值50us MOV TL0,#0D2H SETB TR0 ;启动定时器T0工作BACK: JBC TF0,BACK1 ;定时时间50us到即TF0=1转BACK1,并使TF0=0 SJMP BACK ;定时时间未到继续查询BACK1: CPL P1.0 ;对电平状态取反 NOP ;加入一条指令的延时,防抖动SJMP

5、 BACKEND2、实验要求逻辑笔的状态每秒改变一次,但是我们一个定时器最大定时时间为,其最大定时时间远远小于1s,所以仅用一个定时器是不够的,故采用一个定时器和一个计数器配合使用。一个定时器产生一个周期为100ms的方波信号,即每50ms进入定时器中断对计数信号P1.3取反,计数器对该信号计数,计满10次则进入计数器中断,改变逻辑笔电平。定时器的初值,采用方式1,n=16,解得N=19456,转换为十六进制数为4C00H;计数器的初值,采用方式2,n=8,解得N=246,转换为十六进制数为0F6H。主程序流程图:中断程序流程图:(T0定时中断)中断程序流程图:(T1计数中断)电路图(修改后加

6、上了逻辑笔的电路):代码及注释:ORG 8000H ;硬件仿真程序LJMP MAINORG 800BH ;定时器T0中断入口地址LJMP INTT0ORG 801BH ;定时器T1中断入口地址LJMP INTT1ORG 8100H ;硬件仿真程序MAIN: CLR P1.0 ;给P1.0一个初态 SETB P1.3 ;P1.3作为T1的外部计数脉冲信号 MOV TMOD,#61H ;T0、T1方式初始化,T0工作于定时方式1,T1工作于计数方式2 MOV TH1,#0F6H ;设置T1计数初值 MOV TL1,#0F6H ;方式2会重装计数初值,初始只需将TH1、TL1装入相同的初值 MOV

7、TH0,#4CH ;设置T0计数初值 MOV TL0,#00H SETB TR0 ;启动T0工作 SETB TR1 ;启动T1工作 SETB PT0 ;设置T0为高优先级中断 CLR PT1 ;设置T1为低优先级中断 SETB ET0 ;开放T0中断 SETB ET1 ;开放T1中断 SETB EA ;开放CPU的中断 SJMP $ ;等待中断ORG 8400H ;定时器T0中断服务程序INTT0: MOV TH0,#4CH ;重装T0计数初值,为下一次定时做准备 MOV TL0,#00H CPL P1.3 ;T0中断,50ms到对P1.3求反一次得到周期为100ms的脉冲串 RETI ;中断

8、返回ORG 8500H ;定时器T1中断服务程序INTT1: CPL P1.0 ;T1中断,1s时间到,改变逻辑笔的电平 RETI ;中断返回END 3、频率即为单位时间内脉冲的个数。故要测试T0引脚上脉冲的频率,可利用T1定时1个单位时间(1s),T0对外部脉冲计数,在此期间所计的脉冲数即为待测频率值。由于晶振频率为11.0592MHz,机器周期为12/11.0592us,若选T1工作在方式1下,其最大定时时间为71ms,远远小于1s。因此利用T1完成1s的定时任务还必须配合相应软件来实现。可设计一个T1定时次数计数器,若设T1定时50ms,当该计数器值为20时,定时1s到。则当T1开始定时

9、时,T0立即对外部脉冲进行计数,定时时间1s到,T0停止计数,此时T0的计数值即为信号的频率。由上个实验计算值可知T1的初值为4C00H。流程图:电路图:代码及注释:CONT EQU 72H ;CONT为定时器T1的定时次数 ORG 8000H ;硬件仿真程序 LJMP MAIN ORG 8100H ;硬件仿真程序MAIN: MOV TMOD,#15H ;T0工作于计数方式1,T1工作于定时方式1 MOV TH0,#00H ;T0计数初值置0 MOV TL0,#00H MOV TH1,#4CH ;T1定时50ms MOV TL1,#00H MOV CONT,#20 ;计数器初始化,20 SET

10、B TR1 ;启动T1定时 SETB TR0 ;启动T0计数BACK: JNB TF1,BACK ;等待定时50ms到 CLR TF1 ;定时器T1溢出中断标志清零 MOV TH1,#4CH MOV TL1,#00H ;T1重装定时初值,为下次定时做准备 DEC CONT ;循环次数减1 MOV A,CONT JNZ BACK ;计数次数不到20次,继续等待 CLR TR0 ;1s时间到,T0停止计数 MOV 71H,TH0 MOV 70H,TL0 ;存结果 SJMP $ END实验结果记录及分析:1、用示波器在P1.0处观察到稳定的周期方波,其频率为10.00khz。但是一开始实验时在P1.

11、0处观测到的方波非常不稳定,方波波形像是由两个频率相近的方波叠加而成的,频率范围在9.810.2KHz之间。这是因为在实验程序中设置T0工作于定时方式2。工作中,当TL0的内容被计满溢出时,除同步方式0、1置位TF0,产生溢出中断请求外,还自动将TH0中不变的初值重新装入TL0。这一过程中系统会对中断溢出标志进行自动清零,由于计算出的定时初值N为近似值210,且自动清零时会产生很小的延时,这些延时的累积会产生一定的误差,故输出波形的频率会有细微的差别,从而产生抖动。因此,在实验中我对程序进行了一些修改,即在查询转入程序的电平取反CPL P1.0后加入了一条NOP指令,以加入一条指令的延时。修改

12、后再观察P1.0口的波形即可得到稳定的10KHz方波。实验时,发现有些同学将T0设置于工作在定时方式1,所测波形的频率也会有些偏差,这是因为方式1在查询情况下,定时器计满溢出时系统不会对中断溢出标志进行自动清零,需在程序中加入一条CLR TF0指令,对其进行手动清零。而这条指令的加入会改变循环周期,增加延时,从而产生输出频率与预期频率的偏差。为得到所需频率的方波,T0的定时初值应重新设定,应比按公式计算出的初值稍小一些。2、实验中可观察到逻辑笔的红灯和绿灯每1s切换一次。用示波器观察P1.0口的输出波形,可看到稳定的方波波形,周期为1.02s。这个实验中通过两个中断完成产生周期为1s的方波的功

13、能。如实验设计中所说明的这是因为要产生1s的定时,一个定时器不够用,需要两个定时器的配合才能完成。所以我在设置中断时,将定时器设定为高优先级,计数器设定为低优先级,先进行50ms的定时,每次定时时间到,计数器则进行加1计数,由此完成1s的定时。在实验1中有讨论到在查询情况T0工作于定时方式1时,由于系统不会对中断溢出标志进行自动清零,需在查询转入程序中加一条CLR TF0指令进行转入清零。但是在中断程序中则不用考虑这个问题,在TF0为1的情况下系统会自动对TF0清零并转向中断服务程序。不过在中断时对TF0清零的操作也会占用极少的时间,故每次的定时会产生很微小的延时,在10次计数中会进行一定的累

14、积,所以最后测得的周期为1.02s,有很小的误差。3、通过信号源产生不同频率的方波的信号,在1s中对信号的脉冲进行计数,得到信号的频率,在存储单元70H和71H中可看到计数结果,将存储类型改为float,可以十进制显示结果。选取十个不同频率的方波信号,测得的数据结果如下所示:待测频率与实测频率关系待测频率(KHz)1.8382.2253.5464.4737.052实测频率(KHz)1.8382.2263.5474.4747.054相对误差(%)0.00000.04490.02820.02240.0284待测频率(KHz)10.23015.27020.32024.84030.080实测频率(KHz)10.23815.27620.32824.84430.088相对误差(%)0.07820.03930.03940.01610.0266由待测频率与实测频率的关系表及关系图中,可看出实测频率与待测频率几乎一致,只有非常小的误差。而随着频率的升高,相对误差也有细微的变化,但都在同一个数量级上。由于频率变高时,信号源的输出频率不稳定,所测频率与待测频率的相对误差变化较大。不过从理论上来说,频率越高相对误差应该越小,因为在定时中产生的细小误差在越大的频率中体现得越不明显。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2