一、实验目的
1、了解定时器的工作原理和四种工作方式的使用方法 2、学习定时器的相关应用(产生信号、计数等)
二、实验原理
1、定时器的结构和原理
上图是定时器T0、T1的结构,振荡器经过12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。反相器,或门,与门共同构成启/停控制信号。TH和TL为加1计数器,TF为中断标志。每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON
2、定时器的工作方式 方式0:13位定时/计数器
方式1:16位定时/计数器
方式2:8位重复定时/计数器
方式3:8位定时/计数器,仅T0
三、实验内容
1、通过查询定时器状态,在P1.0产生近似10kHz的方波
2、利用计数器测量信号发生器产生的不同频率的方波周期,并在寄存器中显示结果。
四、电原理图 本实验无需接线
五、实验流程图
六、实验代码 1、
ORG 0000H LJMP MAIN ORG 0100H MAIN:
SETB P1.0 MOV TMOD,#01H MOV TH0,#0FFH MOV TL0,#0D2H SETB TR0 BACK:
JBC TF0,BACK1 SJMP BACK BACK1:
MOV TH0,#0FFH MOV TL0,#0D2H CPL P1.0 SJMP BACK END 2、
RUTL EQU 70H RUTH EQU 71H CONT EQU 72H ORG 0000H LJMP MAIN ORG 0100H MAIN:
;给P1.0一个初始状态 ;T0工作于定时方式1
;定时时间到,跳转
;定时时间未到,继续查询
;重新设置定时器 ;反转P1.0
MOV TMOD,#15H MOV TH0,#00H MOV TL0,#00H MOV TH1,#4CH MOV TL1,#00H MOV CONT,#14H SETB TR0 SETB TR1
BACK1:
JNB TF1,BACK1 CLR TF1 MOV TH1,#4CH MOV TL1,#00H DEC CONT MOV A,CONT JNZ BACK1 CLR TR0 MOV RUTH,TH0 MOV RUTL,TL0 SJMP $ END
七、实验记录 1、 TL0 D1H 9.690 F(kHz) ;T0工作于计数方式1,T1工作于定时方式1 ;T0计数清零
;定时46080个脉冲(50ms) ;中断20次 ;启动T0计数 ;启动T1计时
;计数器溢出标志清0 ;重新定时50ms ;中断次数减1
;完成20次中断,停止计数 ;存结果
D2H 9.940 D3H 10.08 D4H 10.31
2、 输入频率f 内存数据 测得频率 误差 12Hz 000CH 12Hz 0% 35.79Hz 0023H 35Hz 2.2% 500Hz 01F4H 500Hz 0% 1kHz 03E7H 999Hz 0.1% 12kHz 2ED8 11.992kHz 0.067% 15.348kHz 3BE9 15.337kHz 0.072% 42.14kHz A480 42.112kHz 0.066% 八、实验分析
1、实验所用单片机的时钟频率为11.0592MHz,机器周期为
11.0592/12=921.6kHz。实验中定时器T0工作于方式1,要产生10kHz方波,则需要给定时器置的初值满足:(216−N)×921.6=10,得到N=FFD2H。但是在实验中可以发现当给TL0赋的值为D2H时,P1.0口测得的频率为9.94kHz,当给TL0赋的值为D3H时,P1.0口测得的频率为10.08kHz,都十分接近10kHz。当TL0赋其它值时,实验结果就与10kHz相差较大了。分析可知,当TL0值D2H时,测得的理论频率应该为10.01kHz,与实验结果不符,可能的原因有:代码采用查询TF0的方式完成方波反转,查询代码需要时间;示波器的测量存在误差,有偶然因素在里面,尤其实验时发现测量的频率不是很稳定,有时会不断跳转,这时只能取一个值作为测量结果。
2、实验2中可以看出,测量误差整体还是比较小的。实验中是用1s时间内测得外部脉冲数目作为外部信号的频率。由于测得的脉冲数目只能是整数值,所以当测量的频率较低,且不为整数值时,测量的误差可能就较大,例如实验数据中测量35.79Hz时误差为2.2%。当测量频率较高时,实验误差就比较小,均在0.1%以下,但在高频时信号并不稳定,且信号发生器只能精确到0.01kHz,因此还是有误差的。实验中,由于16位计数器的限制,测量范围为1Hz~
65535Hz。如果想要提高测量范围,可以相应缩短测量时间,如0.5s,但是会使精度减小;也可以将T0的进位保存下来以提高测量范围,此时精度不会改变。如果想要提高精度,较小误差,可以延长测量时间,但测量范围会减小。但无论用何种方法,最终测量上限都不会超过机器周期,即921.6kHz。
2
1
因篇幅问题不能全部显示,请点此查看更多更全内容