测频计Word文档下载推荐.docx
- 文档编号:21085865
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:14
- 大小:118.71KB
测频计Word文档下载推荐.docx
《测频计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《测频计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
结合了AT89C51单片机,给出了一种小规模的频率计设计方案,即:
利用单片机的T0口定时(1秒),T1口对外面输入的脉冲进行计数,定时1秒之后,再结合进制间的转换关系,利用数码管将T1寄存器中值显示出来,即为所测的频率值,我们可以测量频率的范围在0-65535。
考虑到利用定时和外部中断的方法中,在执行外部中断程序的同时会有定时中断产生,这样会对测量结果造成意想不到的误差,所以在最后我们给出了利用定时和计数的方法来实现频率的测量。
关键字:
频率计AT89C51外部中断定时器仿真
一:
设计原理
通常频率的测量方法有两种:
一种是频率测量法,即在某一选定的时间间隔内对被测信号进行计数,然后将计数值除以时间间隔就得到所测的频率;
另一种是周期测量法,即通过测量被测信号的周期并求其倒数即可得到被测信号的频率。
由于在汇编程序中,使用周期测量法比较的麻烦,所以这里我们选取频率测量法,为了简便,我们把选定的时间间隔设为1秒,这样在1秒内所测量的脉冲次数即为频率值。
在电路板上设置一个开始计数按键和清零按键,以上按键与AT89C51的p3口连接,通过查询按键是否按下来判断进行计数或者清零。
如果开始计数按键被按下之后,则T1口开始计数,T0口开始定时1秒,1秒之后数码管显示脉冲频率。
清零之后数码管则全部显示0。
二:
硬件与软件设计
2.1硬件系统设计
在PCB板中,通过p0口来驱动6位数码管,p2口实现对数码管的片选,实现动态显示,按键接到p3口上。
基本框架如下图2.1:
开始按键
数码管显示
89C51单片机
控制
清零按键
图2.1基本框架
晶振电路
单片机内部实质上是种时序电路,所以必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
晶振电路如图2.2
图2.2
显示电路
在显示电路中,共有6个数码管,理论上能显示0-65535。
每个数码管都接在p0口上,使用p2口进行片选控制,采用动态显示。
如图2.3为脉冲计数的结构原理图,图2.4为测频计的PCB设计图。
图2.3脉冲计数器的结构原理图
2.4频率计的PCB设计图
2.2软件设计
这里我们将软件编程的程序框图画出来了,如下图2.5。
程序见附录1。
开始
开T0、INT0、CPU中断允许并设置INT0为边沿触发
YES
将数码管全部清零
将数码管清零
3结果分析和检验部分
在频率计设计中,理论上可以记录的频率值的范围是0-65535,这里为了验证我们的设计,可以利用Keil与proteus软件来仿真,仿真的结果如图3.1。
图3.1仿真结果图
考虑到利用定时和外部中断的方法中,在执行外部中断程序的同时会有定时中断产生,这样会对测量结果可能会造成意想不到的误差,所以在最后我们给出了利用定时和计数的方法来实现频率的测量。
这样只要利用T0定时1秒的同时在利用T1进行计数,这样T0在中断来临的同时就不会可能与外部中断产生重叠中断的情况,进而造成的误差也很小。
最后在定时1秒结束的时候,直接将程序转向显示程序即可(利用进制之间的转化)。
代码见附录2。
参考文献
李全利主编:
《单片机原理与接口技术》,高等教育出版社,2004年
附录一:
ORG0000H
LJMPSTART
ORG0003H
LJMPINTT0;
跳转到外部INT0中断程序
ORG000BH
LJMPTT0;
跳到T0中断程序
ORG0100H
START:
CLRA;
初始化R0-R4
MOVR0,A
MOVR1,A
MOVR2,A
MOVR3,A
MOVR4,A
LOOP:
SETBP1.0
SETBP1.1
JNBP1.1,REL;
P1.1接的开关用于清零
JNBP1.0,SE;
P1.0接的开关用于启动计数
LJMPLOOP
REL:
MOVP2,#0C1H
MOVP0,#0BFH
SE:
SETBEA;
CPU中断允许
SETBIT0;
设置INT0为边沿触发中断
SETBEX0;
INT0中断允许
SETBET0;
T0中断允许
SETBTR0;
启动T0定时
MOVR5,#20;
T0中断次数
MOVTMOD,#01H
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
LL2:
LCALLDISPLAY
JNBP1.1,START
LJMPLL2
INTT0:
INCR0;
检测到外部下降沿,自增一次,R0计满向R1进位,R1计满向R2进位,R2计满向R3进位,R3计满向R4进位
MOVA,R0
CJNEA,#10,NEXT
MOVR0,#0
INCR1
MOVA,R1
MOVR1,#0
INCR2
MOVA,R2
CJNER2,#10,NEXT
MOVR2,#0
INCR3
MOVA,R3
CJNER3,#10,NEXT
MOVR3,#0
INCR4
NEXT:
RETI
TT0:
MOVTH0,#(65536-50000)/256;
T0中断程序,重装TL0、TH0,并判断是否中断次数是否到20次
DJNZR5,LL1
CLREX0;
计时已到,关闭中断
CLRTR0
CLREA
LL1:
RETI
DISPLAY:
MOVDPTR,#TAB;
利用动态显示将频率值显示出来
MOVCA,@A+DPTR
MOVP2,#11011111B
MOVP0,A
LCALLDELAY
MOVP2,#11101111B
MOVP2,#11110111B
MOVP2,#11111011B
MOVA,R4
MOVP2,#11111101B
RET
DELAY:
MOVR7,#20;
延时程序
L1:
MOVR6,#25
DJNZR6,$
DJNZR7,L1
TAB:
DB3FH,06H,5BH,4FH,66H,7DH,07H,7FH,6FH
END
附录二:
CISHUEQU20H;
T0定时中断的次数
MOVDPTR,#TAB
MOVCISHU,#0
MOVTMOD,#51H;
选择T0为定时功能,T1为计数功能,工作方式都为1.
MOVTH1,#00;
T1计数器清零
MOVTL1,#00
开启T1和T0
SETBTR1
JNBTF0,$
CLRTF0
INCCISHU
MOVA,CISHU
CJNEA,#20,NEXT;
循环20次,定时为1秒
CLRTR0;
定时时间已到,关闭T0和T1
CLRTR1
MOV30H,TL1
MOV31H,TH1
MOVR0,TL1;
将TH1和TL1里面的值通过数码管显示出来,五位十进制数值分别放在R0-R4寄存器中
MOVR1,TH1
CLRA
MOVR2,A;
R2-R4清零
MOVR3,A
MOVR4,A
MOVR5,#16;
循环的次数,共转化16位
CLRC
MOVA,R0
RLCA;
从待转换数的高端移出一位到Cy
MOVR0,A
MOVA,R1
RLCA
MOVR1,A
MOVA,R4;
送到BCD码的低端
ADDCA,R4;
带进位加。
自身相加,相当于左移一位
DAA;
十进制调整,变成BCD码
MOVR4,A
MOVA,R3
ADDCA,R3
DAA
MOVR3,A
MOVA,R2
ADDCA,R2
MOVR2,A
DJNZR5,LOOP
至此,已经把TH1TL1中的数字,转换成BCD码,送到了R2R3R4。
下面,分别存入R4R3R2R1R0。
MOVB,#16
DIVAB
MOVR1,A
MOVR0,B
MOVA,R2
MOVR4,A
MOVA,R3
MOVB,#16
DIVAB
MOVR3,A
MOVR2,B
MOVp2,#11110111B
MOVP2,#11111101B
MOVA,R5
MOVP2,#11111110B
LJMPDISPLAY
DB3FH,06H,5BH,4FH,66H,7DH,07H,7FH,6FH
MOVR7,#20
MOVR6,#25
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测频计