基于单片机的等精度数字频率计设计.docx
- 文档编号:27668816
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:16
- 大小:222.90KB
基于单片机的等精度数字频率计设计.docx
《基于单片机的等精度数字频率计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的等精度数字频率计设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于单片机的等精度数字频率计设计
电子系统设计
----专题篇
学院:
信息工程学院
班级:
2007050106
学号:
200705010621
姓名:
题目:
用等精度频率测量原理,设计一个以单片机为核心的等精度数字频率计。
要求画出完整的原理图。
并编制该数字信号的监控程序。
功能:
频率测量,周期测量,时间间隔测量;
被测信号的频率范围:
10~30MHz
测量精度:
<10-4
灵敏度:
100mv
阀门时间:
0.1s,1s.
正文
1.等精度频率计的测量原理
基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化。
传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。
等精度频率测量方法是采用多周期同步测量。
由单片机发出预置门控信号GATE,GATE的时间宽度对测频精度影响较少,可以在较大的范围内选择,即在高频段时,闸门时间较短;低频时闸门时间较长。
实现了全范围等精度测量,减少了低频测量的误差。
2.等精度频率计计数测量误差
有上述测量原理可知,公式Fx=f0*Nx/No成立,设所测频率的准确值为fxo,在一次测量中,由于fx计数器的其实时间是由该信号的上升沿控制的,因此,在T时间内对fx的计数器NX无误差。
在此时间Fo的计数器No最多和差一个脉冲,即
,则下式成立:
分别推出得:
带入上式最后得出:
最后整理得:
因为
所以
既相对误差为:
其中:
等精度频率法测量误差:
Nx计数无误差,Ns最多相差一个脉冲
fx=fs*Nx/Ns
fxe=fs*Nx/(Ns+Δ1)
相对误差
δ=(fxe-fx)/fxe=Δ1/Ns<1/Ns
Ns=T*fs
测量误差与被测信号频率无关,仅与Ns有关
闸门时间越长,标准频率越高,测量相对误差越小。
由此可知,增大Tp或提高fx,可以增大Nx,减少测量误差。
提高测量精度;相对测量误差与被测量信号频率的大小无关,仅仅取样时间以及时基信号频率有关,可以实现被测量频带内的等精度测量;取样时间越长,时基信号频率越高,分辨率越高。
3.等精度测频的硬件电路设计
单片机主控电路
用单片机T0口作为频率计接口
在系统的设计中,可将单片机系统的各个中断口用作外部计数器的接口,由于其为数字电路的特点,可将其作为频率计的接口,被测信号频率范围在10HZ——30MHZ,对应的输入为TTL电平。
其连接电路图如下图所示
最后流程总结如下:
程序设计
一、频率计子程序:
PUBLICPINGLV
PINGLV:
MOVTMOD,#05H;初始化TMOD。
MOVTH0,#00H;初始化TH0
MOVTL0,#00H;初始化TL0
SETBEA;开中断
SETBET0;开T0中断
MOVR1,#64H;设置外循环次数
SETBTR0;启动T0
LOOP3:
MOVR3,#0AH;完成一秒钟计数,实现频率功能
LOOP2:
MOVR2,#64H
LOOP1:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR2,LOOP1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP;18个LOOP
DJNZR3,LOOP2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP;12个LOOP
DJNZR1,LOOP3
CLRTR0;关定时器0,计数器存入TH0,TL0
RET;子程序结束
Voidfrep()//实现频率的数值显示范围为10HZ—30000HZ
{
unsignedintdataxxx;
unsignedchardataxchar;
bittt;
while
(1)
{
PINGLV();//调用频率的汇编计数程序
xxx=TH0*256+TL0;
buffer[0]=(unsignedchar)(xxx/10000000+0x30);
buffer[1]=(unsignedchar)(xxx/1000000+0x30);
buffer[2]=(unsignedchar)(xxx/100000+0x30);
buffer[3]=(unsignedchar)(xxx/10000+0x30);
buffer[4]=(unsignedchar)((xxx%10000)/1000+0x30);
buffer[5]=(unsignedchar)((xxx%1000)/100+0x30);
buffer[6]=(unsignedchar)((xxx%100)/10+0x30);
buffer[7]=(unsignedchar)(xxx%10+0x30);
PRINT();//显示计数频率值
tt=scankey();//检验是否有键按下
if(tt)
{
KEY();//调用键盘子程序
xchar=KEYDATA;
if(xchar==0x0f)//若为F键则返回,其他则继续执行频率计子程序
return;
}
}
}
二、LED显示部分,采用静态显示,8个LED
1.电路图:
(注:
还有3个LED没有画)
2.清屏子程序
PUBLICCLR;清屏子程序
CLR:
MOVA,#0FFH
MOVDPTR,#8000H
MOVX@DPTR,A
MOVDPTR,#9000H
MOVX@DPTR,A
MOVDPTR,#0A000H
MOVX@DPTR,A
MOVDPTR,#0B000H
MOVX@DPTR,A
MOVDPTR,#0C000H
MOVX@DPTR,A
RET
3.LED显示子程序
PUBLICPRINT;LED显示程序
PRINT:
PUSHPSW
CLRC
MOVA,buffer
SUBBA,#30H
MOVDPTR,#TABLED
MOVCA,@A+DPTR
MOVDPTR,#0C000H
MOVX@DPTR,A
MOVA,buffer+1
SUBBA,#30H
MOVDPTR,#TABLED
MOVCA,@A+DPTR
MOVDPTR,#0B000H
MOVX@DPTR,A
MOVA,buffer+2
SUBBA,#30H
MOVDPTR,#TABLED
MOVCA,@A+DPTR
MOVDPTR,#0A000H
MOVX@DPTR,A
MOVA,buffer+3
SUBBA,#30H
MOVDPTR,#TABLED
MOVCA,@A+DPTR
MOVDPTR,#9000H
MOVX@DPTR,A
MOVA,buffer+4
SUBBA,#30H
MOVDPTR,#TABLED
MOVCA,@A+DPTR
MOVDPTR,#8000H
MOVX@DPTR,A
POPPSW
RET
TABLED:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;0-8
DB90H,88H,83H,0C6H,0A1H,86H,84H,0FFH,8CH;9ABCDEF
DB0BFH;"-"
4.显示欢迎界面HELLO的子程序
voidhello()//欢迎界面程序
{
XBYTE[0xc000]=0x89;
XBYTE[0xb000]=0x86;
XBYTE[0xa000]=0xc7;
XBYTE[0x9000]=0xc7;
XBYTE[0x8000]=0xc0;
}
三、键盘部分
1.电路图:
2.键盘部分程序:
PUBLICKEY
KEY:
MOVR7,#00H
MOVA,#00H
MOVB,#0EH
KEY1:
NOP
ORLA,B
MOVDPTR,#WR273
MOVX@DPTR,A
NOP
NOP
NOP
NOP
MOVDPTR,#RD244
MOVXA,@DPTR
ANLA,#0FH
CJNEA,#0FH,KEY2
INCR7
SETBC
MOVA,B
RLCA
ANLA,#0FH
CJNEA,#0FH,KEY0
MOVA,#0EH
MOVR7,#00H
KEY0:
MOVB,A
SJMPKEY1
KEY2:
CPLA
ANLA,#0FH
JNBACC.0,KEY6
MOVA,#00H
SJMPKEY9
KEY6:
JNBACC.1,KEY7
MOVA,#01H
SJMPKEY9
KEY7:
JNBACC.2,KEY8
MOVA,#02H
SJMPKEY9
KEY8:
MOVA,#03H
KEY9:
XCHA,R7
MOVB,#04H
MULAB
ADDA,R7
MOVDPTR,#KTAB1
MOVCA,@A+DPTR
MOVKEYDATA,A
LCALLSOUND
KEYUP:
MOVDPTR,#RD244
MOVXA,@DPTR
ANLA,#0FH
CJNEA,#0FH,KEYUP
RET
KTAB1:
DB33H,0DH,0FH,0EH
DB32H,0BH,0CH,0AH
DB31H,39H,38H,37H
DB30H,35H,36H,34H
KTAB0:
DB00H,01H,02H,03H
DB04H,05H,06H,07H
DB08H,09H,0AH,0BH
DB0CH,0DH,0EH,0FH
SOUND:
SETBP1.0
LCALLTIM0
CLRP1.0
RET
TIM0:
MOVR7,#40H
TIME1:
MOVR6,#00H
TIME2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR6,TIME2
DJNZR7,TIME1
RET
3.键盘测试程序:
PUBLICTESTKEY
TESTKEY:
MOVbuffer,#41H
MOVbuffer+1,#30H
MOVbuffer+2,#30H
MOVbuffer+3,#31H
TESTK0:
LCALLPRINT
LCALLKEY
MOVA,KEYDATA
CLRC
SUBBA,#30H
JNCTESTK1
RET
TESTK1:
MOVbuffer,buffer+1
MOVbuffer+1,buffer+2
MOVbuffer+2,buffer+3
MOVbuffer+3,KEYDATA
LJMPTESTK0
4.检验是否有键按下程序:
bitscankey()//送全0信号到行扫描口,读列扫描端口,若为全1,则没有键按下
{
unsignedchardatakk;
kk=RD244;
kk=0x0f&kk;
if(kk!
=(unsignedchar)0x0f)
{return1;
}
else
return0;
}
四、主程序:
voidmain()
{
unsignedchardataCHAR,xchar;
CLS();//调用清屏子程序
SSSS:
hello();//调用欢迎界面子程序
KEY();//调用键盘子程序
CHAR=KEYDATA;
switch(CHAR)
{
case10:
PINGLV();//若为A,完成频率的技术与显示
break;
default:
gotoSSSS;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 精度 数字频率计 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)