简易数字显示频率计的设计

2024-06-22

简易数字显示频率计的设计(精选8篇)

1.简易数字显示频率计的设计 篇一

河池学院2004届本科生毕业论文(设计)简易数字频率计

附件

源程序如下: #include unsigned char data key,flag_ft,point,buffer,j,INT1_ready,couter0,couter1,bus0,bus1,cycle;//键盘,频率判决结果,小数点位置标志,判决频率寄存,显示缓冲变量,边沿触发界定,定时器0定时寄存,定时器1定时寄存,显示刷新循环寄存CT0计数值寄存,CT1计数值寄存,显示循环变量 unsigned int data Z,delay,k,turn;//占空比,程序延迟循环变量,判断频率段跳转值,等于各测量值 float data T,F,T_T,F_F,W;//周期,频率,脉宽

unsigned char code BitTab[4]={0x7f,0xbf,0xdf,0xef};//位驱动码

unsigned char code DispTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x80};//字形码 /*

0

.*/ unsigned char data DispBuf[4];//待显示数据寄存 sbit P2_0=P2^0;//位变量定义 sbit P2_1=P2^1;sbit P2_2=P2^2;sbit P2_3=P2^3;sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;sbit P0_7=P0^7;sbit P3_3=P3^3;/////////////////////////////////////////////////////////////////// void Ft();//1KHZ/16KHZ门限频率判决函数 void Ft_10();//10KHZ门限频率判决函数 void test_af();//小于1KHZ的频率测量函数 void test_w();//小于10KHZ脉冲宽度测量函数 void test_bf();//1KHZ~16KHZ频率测量函数 void test_z();//占空比测量函数

void test_at();//小于1KHZ的周期测量函数 void test_bt();//1KHZ~16KHZ周期测量函数 void test_cf();//16KHZ以上频率测量函数 void test_ct();//16KHZ以上周期测量函数 void Display();//显示驱动函数

void Delay_5m();//软件延迟约5ms函数 void Measure();

//按键处理与对应测量函数 ///////////////////////////////////////////////////////////////////// void Ft()

//判决1KHZ/16KHZ 河池学院2004届本科生毕业论文(设计)简易数字频率计 {

//unsigned char p;

TMOD=0x15;

TL1=0xb0;

TH1=0x3c;

TH0=0;TL0=0;

TR1=1;

TR0=1;for(;TF1==0;);

TF1=0;for(;TF1==0;);

TF1=0;for(;TF1==0;);

TF1=0;

TR0=0;

TR1=0;

k=TL0|(TH0<<8);

if(k>131)flag_ft=3;

else if(k>10)flag_ft=2;

else flag_ft=1;} //////////////////////////////////////////////////////////////////////////////// void Ft_10()//判决10KHZ函数 {

TMOD=0X15;

TL1=0XC0;

TH1=0XE0;TH0=0;TL0=0;

TR1=1;

TR0=1;

for(;TF1==0;);TF1=0;

TR0=0;

TR1=0;

k=TL0|(TH0<<8);

if(k<=5)flag_ft=4;

else flag_ft=5;} //////////////////////////////////////////////////////////////////////////////// void test_af(void)//测量小于1KHZ的频率,用INT1和CT0。{

F=0;河池学院2004届本科生毕业论文(设计)简易数字频率计

test_at();P1=P1|0xff;

//清除上次单位指示

F=1000000/T_T;

if(F<10)

{

F*=1000;point=1;}

else if(F<100)

{

F*=100;point=2;

}

else if(F<1000)

{

F*=10;point=3;}

else

{

point=4;} P1_2=0;//HZ指示灯亮 } ///////////////////////////////////////////////////////////////////////////////////// void test_w()//测量脉冲宽度 {

W=0;

TMOD=0x90;//初始化

TH1=0x00;

TL1=0x00;ET1=1;//开中断

EA=1;bus1=0;

for(;P3_3==1;);//等待无效高电平过去

TR1=1;

for(;P3_3==0;);//等待高电平

for(;P3_3==1;);//等待低电平关闭计数器

TR1=0;W=bus1*65536;

W+=TL1|(TH1<<8);if(W<100){

W*=100;point=2;P1_1=0;//us指示灯亮

} else if(W<1000){ 河池学院2004届本科生毕业论文(设计)简易数字频率计

W*=10;point=3;P1_1=0;//us指示灯亮

} else if(W<10000){

point=4;P1_1=0;//us指示灯亮

}

else if(W<100000)

{

W/=10;point=2;P1_0=0;//ms指示灯亮

}

else if(W<1000000)

{

W/=100;point=3;P1_0=0;//ms指示灯亮

} else if(W<10000000){

W/=1000;point=4;P1_0=0;//ms指示灯亮

}

else

{

point=0;} } ////////////////////////////////////////////////////////////////// void test_bf(void)//测量1KHZ~16KHZ频率T1记数,T0定时 {

F=0;

TMOD=0x51;TL1=0x00;TH1=0x00;TL0=0xbc;TH0=0xbd;ET0=1;ET1=1;EA=1;

TR0=1;TR1=1;couter0=0;bus1=0;

for(;couter0<16;);

TR1=0;TR0=0;

F=bus1*65536;//取CT1记数值

F+=TL1|(TH1<<8);河池学院2004届本科生毕业论文(设计)简易数字频率计

F_F=F;if(F<10000){

point=1;}

else if(F<100000)

{

F/=10;point=2;}

else

{

point=0;} P1_3=0;//KHZ指示灯亮 } /////////////////////////////////////////// void test_z(){

Z=0;Ft();if(flag_ft==1)test_at();

else test_bt();

test_w();P1=P1|0xff;//清上次单位指示

Z=(unsigned int)((W/T)*100);

if(Z<10)

{

Z*=1000;point=1;}

else if(Z<=100)

{

Z*=100;point=2;}

/*else if(Z<1000)

{

Z*=10;point=3;}*/ else {

point=2;

} } /////////////////////////////////////////////////////////////////////////////////// void test_at(void)//测量小于1KHZ的周期 河池学院2004届本科生毕业论文(设计)简易数字频率计 {

T=0;

TMOD=0x01;

IT1=1;

EX1=1;ET0=1;EA=1;TL0=0x00;

TH0=0x00;

bus0=0;

TR0=0;

INT1_ready=0;

for(;INT1_ready<2;);EX1=0;//关INT1中断

T=bus0*65536;

T+=TL0|(TH0<<8);T_T=T;//传递给频率测量函数

if(T<1000){

T=T*10;point=3;P1_1=0;//us指示灯亮

} else if(T<10000){

point=4;P1_1=0;//us指示灯亮

}

else if(T<100000)

{

T/=10;point=2;P1_0=0;//ms指示灯亮

}

else if(T<1000000)

{

T/=100;point=3;P1_0=0;//ms指示灯亮

} else if(T<10000000){

T/=1000;point=4;P1_0=0;//ms指示灯亮

}

else

{

point=0;} } ////////////////////////////////////////////////////////////////////////////////// void test_bt(void)//测量测量1KHZ~16KHZ周期 河池学院2004届本科生毕业论文(设计)简易数字频率计 {

T=0;

test_bf();P1=P1|0xff;//清上次单位指示

T=1000000/F_F;

if(T<1000)

{

T=T*10;point=3;} else if(T<10000){

point=4;

} else {

point=0;} P1_1=0;//us指示灯亮 } ////////////////////////////////////////////////////////////////////////////////////// void test_cf(void)

/*大于16KHZ频率,分频,T0记数,T1定时*/ {

F=0;TMOD=0x15;TL0=0x00;TH0=0x00;TL1=0xbc;TH1=0xbd;ET0=1;ET1=1;EA=1;TR1=1;TR0=1;couter1=0;bus0=0;

for(;couter1<16;);TR0=0;TR1=0;F=bus0*65536;

F+=TL0|(TH0<<8);F=F*16;F_F=F;if(F<100000){ 河池学院2004届本科生毕业论文(设计)简易数字频率计

F/=10;point=2;}

else if(F<1000000)

{

F/=100;point=3;} else if(F<10000000){

F/=1000;point=4;}

else

{

point=0;} P1_3=0;

//KHZ指示灯亮 } void test_ct(void)

//大于16KHZ频率 {

T=0;

test_cf();P1=P1|0xff;

//清上次单位指示

T=1000000/F_F;

if(T<10)

{

T*=1000;point=1;

}

else if(T<100){

T*=100;point=2;

}

else if(T<1000){

T*=10;point=3;}

else

{

point=0;}

P1_1=0;//us指示灯亮 } ///////////////////////////////////////////////////////////////////////////////////////////// void Display()//显示驱动程序 {

buffer=BitTab[j];河池学院2004届本科生毕业论文(设计)简易数字频率计

P2=P2|0xf0;

P2=P2&buffer;

buffer=DispBuf[j];

buffer=DispTab[buffer];

P0=buffer;

switch(point)

{

case 1:if(j==0)P0_7=1;//第一位小数点亮

break;

case 2:if(j==1)P0_7=1;//第二位小数点亮

break;

case 3:if(j==2)P0_7=1;//第三位小数点亮

break;

default:break;

}

j++;

if(j==4)j=0;} //////////////////////////////////////////////////////////////// void Delay_5m(){

for(delay=0;delay<100;delay++);} ///////////////////////////////////////////////////////////////// void Measure(){

TH0=0;TL0=0;TH1=0;TL1=0;F=0;T=0;W=0;Z=0;

switch(key)

{

case 0xef:P2=P2|0x0f;

P2_1=0;//F指示灯亮

Ft();//flag_ft=Ft();///////////////////////////////////?

switch(flag_ft)

{

case 1:test_af();//测量小于1KHZ频率

break;

case 2:test_bf();//测量1KHZ~16KHZ频率 河池学院2004届本科生毕业论文(设计)简易数字频率计

break;

case 3:test_cf();//测量大于16KHZ频率

break;

default:break;

}

break;

case 0xdf:P2=P2|0x0f;

P2_2=0;//T指示灯亮

Ft();//flag_ft=Ft();

switch(flag_ft)

{

case 1:test_at();//测量小于1KHZ周期

break;

case 2:test_bt();//测量1KHZ~16KHZ周期

break;

case 3:test_ct();//测量大于16KHZ周期

break;

default:break;

}

break;

case 0xbf:P2=P2|0x0f;

P2_3=0;//W指示灯亮

Ft_10();

switch(flag_ft)

{

case 4:test_w();//测量脉冲宽度

break;

default:break;

}

break;

case 0x7f:P2=P2|0x0f;

P2_0=0;//Z指示灯亮

Ft_10();

switch(flag_ft)

{

case 5:test_z();//测量占空比

break;

default:break;

}

break;

default:break;

}

break;} 河池学院2004届本科生毕业论文(设计)简易数字频率计 //////////////////////////////////////////////////////////////////////////////// void INT_0(void)interrupt 0 {

P1=0xff;

key=P1;

Measure();} ///////////////////////////////////////////////////////////////////////////////// void CT1(void)interrupt 3 {

bus1+=1;couter1++;} ///////////////////////////////////////////////////////////////////////////////// void INT_1(void)interrupt 2 {

TR0=~TR0;

INT1_ready=INT1_ready+1;} ///////////////////////////////////////////////////////////////////////////////// void CT0(void)interrupt 1 {

bus0+=1;

//用于记数

couter0++;

//用于1S定时 } ///////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// void main(void){

P1=0xff;

P2=0xff;//开关状态标志灯灭

IT0=0;

EX0=1;

EA=1;

IP=0x0e;

//设定中断优先级INT0最低,两层嵌套时允许打断按键中断

//显示主循环

for(;;)

{

P2=P2|0xf0;

TH0=0;

TL0=0;

TH1=0;

TL1=0;河池学院2004届本科生毕业论文(设计)简易数字频率计

switch(key)

{

case 0xef:{turn=(unsigned int)F;

DispBuf[3]=turn%10;

turn=turn/10;

DispBuf[2]=turn%10;

turn=turn/10;

DispBuf[1]=turn%10;

DispBuf[0]=turn/10;

Display();

Delay_5m();}

break;

case 0xdf:

{turn=(unsigned int)T;

DispBuf[3]=turn%10;

turn=turn/10;

DispBuf[2]=turn%10;

turn=turn/10;

DispBuf[1]=turn%10;

DispBuf[0]=turn/10;

Display();

Delay_5m();

};

break;

case 0xbf: {

turn=(unsigned int)W;

DispBuf[3]=turn%10;

turn=turn/10;

DispBuf[2]=turn%10;

turn=turn/10;

DispBuf[1]=turn%10;

DispBuf[0]=turn/10;

Display();

Delay_5m();

};

break;

case 0x7f:{

turn=Z;

DispBuf[3]=turn%10;

turn=turn/10;

DispBuf[2]=turn%10;

turn=turn/10;

DispBuf[1]=turn%10;

DispBuf[0]=turn/10;

Display();河池学院2004届本科生毕业论文(设计)简易数字频率计

Delay_5m();

};

break;

default: {

DispBuf[3]=10;

DispBuf[2]=10;

DispBuf[1]=10;

DispBuf[0]=10;

Display();

Delay_5m();

};

break;

}

cycle++;

if(cycle==500)

{

Measure();

cycle=0;} } }

2.简易数字显示频率计的设计 篇二

CPLD(复杂可编程逻辑器件)内部集成了可编程连线和大量的门和触发器等基础逻辑元件,应用时,对连接到电路板上的CPLD进行编程(设计),使其内部逻辑元件互连和组合。编程结束,即完成了对CPLD的设计,再将完成设计的CPLD与外部电路配合,得到具有一定逻辑功能的硬件电路,要想改变此硬件电路功能,只需对电路板上的CPLD重新编程和配置,这使设计更灵活,电路设计更新和升级也更容易。

MAX+PLUSⅡ软件是美国Altera公司推出的发展较完善的用于开发CPLD的EDA(电子设计自动化)软件工具,它界面友好、易学易用,有原理图输入、文本设计输入和波形输入3种设计输入方式。本文介绍应用MAX+PLUSⅡ软件原理图输入和文本输入相结合的方法设计4位数字频率计。

1 设计原理

图1为4位数字频率计原理框图。

测量输入信号频率范围1~9 999 Hz,由数码管显示测量值,要求测量值能被及时更新,采用EPM7128SLC84-15这款CPLD作为设计的主芯片,在芯片中实现计数、锁存、译码等功能,芯片以外的电路是外围电路。

2 外围电路组成及工作原理

2.1 限幅整形电路

限幅整形电路如图2所示。由G1~G4组成的电路是2级施密特电路,对输入信号波形进行整形。采用2级施密特的原因是用一级施密特整形后输出的信号作为CPLD芯片中十进制计数模块的计数信号时,其前沿陡峭度不够而出现不稳定现象。

2级施密特电路前面的2个5 kΩ的电阻是偏置电阻,给予这样的偏置以后,对ui幅值的要求可下降到uipp≥U+T-U-T=10 kΩ/200 kΩ×5 V=0.25 V即可。2个二极管是限幅二极管,起保护作用。

2.2 时基信号产生电路

电路如图3所示。以非门G1为核心的32 768 Hz晶体振荡电路产生32 768 Hz的信号,该信号经过11级二分频从Q11输出 8 Hz信号作为clk。二分频电路是由D触发器组成的T′触发器实现的,该电路可用CD4060来完成。

3 CPLD内部电路设计

采用自顶向下的方法进行电路设计。首先定义好系统高层次的功能,然后按照要求对系统进行分解,分解出的每个子系统具有相应的功能。图4虚线框内所示即为CPLD根据设计要求得到的顶层系统设计框图。

3.1 控制信号产生电路设计

在图1中对于控制信号产生电路的功能要求是对外部电路产生送入的clk(8 Hz)信号进行十进制计数,用计数的4个输出QD、QC、QB、QA周期性地产生3个控制信号,这3个信号分别是:

a) 闸门信号cs(也称计数控制信号):控制计数模块的计数和停止计数,计数控制cs的高电平部分正好是1 s,在这期间计数模块所计到的数值即为被测频率。cs的低电平部分是计数模块停止计数时间。

b) 锁存信号lock:当计数模块在1 s时间计数结束后产生一个送数信号,即把计数信号送进锁存器。

c) 清零信号clr:在每次计数模块开始计数前,清除模块内原先的计数值,使其为0。

这3个控制信号时序关系如图4所示。

基于上述控制信号产生电路功能描述,选择原理图输入方式实现设计电路简单、直观。当QD QC QB QA=0000时,clr=1;当QD QC QB QA=0001~1000期间时,cs=1;当QD QC QB QA=1001时,lock=1。如图5所示。

3.2 十进制加法计数器设计

用4块74160设计10000进制计数器,用闸门信号cs控制74160中的使能输入ENT和ENP,其中对于个位,用cs同时控制ENT和ENP,对于十位、百位、千位,cs控制ENT或ENP其中一个,另一个用前级的进位去控制,其原理图如图6所示。

3.3 计数锁存电路设计

功能要求为:当锁存信号lock=1 时,电路输出等于输入信号,当lock=0 时,输出保持不变实现锁存,该电路选择VHDL硬件描述语言设计逻辑功能简单。

3.4 数字显示译码电路设计

数字显示译码选用CPLD内部元件库中的74248,原码输出的数字显示译码器,原理图如图7所示。

各个单元电路设计完成后,建立相应电路符号,在原理图输入方式下,将各单元电路符号按图1所示数字频率计原理框图逻辑关系连接,通过保存、编译,确认正确无误后便完成了CPLD内部电路的设计,最终频率计设计芯片如图8所示。将设计项目下载至芯片EPM7128SL84-15,完成数字电路功能,还要进行项目处理,包括器件选择、引脚锁定、编程下载等工作。

4 结束语

本文介绍了使用CPLD在相应开发软件MAX+PLUSⅡ10.2软件支持下,使用原理图方式和VHDL硬件描述语言结合设计数字频率计的方法。原理图输入比较直观且效率高,而VHDL硬件描述语言同样是基于英语的一种编程语言,类似其他高级编程语言,只要有一定英语知识,就会很容易掌握并理解VHDL硬件描述语言的描述,可移植性好。本设计各个模块设计过程简单,并且各模块均可进行功能仿真,便于发现错误和进行修改。

参考文献

[1]陈云洽,保延翔.CPLD应用技术与数字系统设计[M].北京:高等教育出版社,2003.

[2]鲍可进,赵念强,赵不贿.数字逻辑电路设计[M].北京:清华大学出版社,2003.

[3]廖裕评,陆瑞强.CPLD数字电路设计——使用MAX+PLUSⅡ[M].北京:清华大学出版社,2003.

3.简易数字显示频率计的设计 篇三

【关键词】测频;频率计;电路设计

1.相关理论概述

数字频率计采用数字电路制作成以十进制码来现实被测信号频率,对于周期性变化的信号频率能够实现有效的测量的一种仪器。它是教学、科研等工作中的基础测量仪器,在模拟电路和数字电路实验中有着重要的作用,其能够直接读出信号源所产生的不同频率范围的信号将会对实验产生很大的影响。频率计主要用在正弦波、矩形波等周期性信号频率值的测量等,它的拓展功能能够实现对信号周期及其脉冲宽度的测量,引起对信号源的接受敏捷度使得其称为试验箱中的重要组成部分。

信号频率测量方法按照工作原理可以分为无源测量、比较测量、示波测量及技术等测量方法。其中最常见的测量方法是电子计数器,在该种技术下,频率计实现单位时间内被测信号脉冲数的直接计数,并将其频率值以数字的形式显示。实现了对不同频率、精确度的测频需求,保障了测量结果的精确度和速度。

2.整形电路的设计

整形电路就像把模拟的信号转换成为二值信号,也就是使其成为只有高电平和低电平的离散信号。在电路设计时我们可以将电压比较器用作模拟电路及数字电路的接口电路,通过其把非矩形信号转换成矩形信号。在选择比较器时,我们要充分考虑影响信号接收和转换功能的各种因素。下图为其整体设计结构图:

首先,是信号传播可能存在的延迟及时时间。信号传播的延迟时间是比较器选择时所要考虑的重要参数,这种时间的延迟有当信号通过元器件时所产生的传输时间上的延迟和信号上升及下降的时间延迟,只有将延迟的时间降低到最小才能有效的缩短信号处理的时间。

其次,要充分考虑电源电压对比较器的影响。就传统而言,比较器一般需要正负 15 伏的双电源来进行供电或者需要达到36 伏的单电源进行供电,这种传统的比较器在一些工业控制中仍有使用的空间和发展前途但以不适应发展的主流。现在多数的比较器需要在限定的电压条件下进行工作,即在电池电压所能够运行的单电源单位内进行工作,因此对其提出了低电流和小封装等当面的要求,并且在实际的应用中比较器还应该具备一定的关断的功能。当具备上述条件是,比较器才能够在试验箱中得到有效的利用,保证频率计在不同电源电压条件下的正常工作。

再次,充分考虑功耗对比机器的影响。功耗的大小直接影响比较器使用寿命和工作效果,功耗越低时其比较器的耗损相对较低,使用使用寿命得到延长,然而功耗由于器件的运作速度相关,功耗降低的同时可能带来运作速度的降低,因此,在比较器选择时,充分考虑功耗与元器件寿命及其运作速度的关系,寻得一种最优组合。

最后,不可忽视门限电压对比较器的影响。外围器件的设置可以用来实现对门限电大的测量,门限电压的大小与电路抗干扰能力呈现一种正比例的关系但与其敏感度成反比例关系。当我们通过对门限电压的测量并通过一定的公式计算,根据实际工作的需要来确定门限电压的具体值。

当我们充分考虑上述影响因素时,便会有针对性的选择相应的新品用于单元电路的设计,从而实现信号在电路中的顺利传输,避免芯片烧坏等现象的发生。

3.计数电路的设计

实现对信号的整形后我们便要关注一些低频信号由于其上升速度等原因可能产生的计数影响,因此在电路设计时应该根据信号的特点来完善计数电路的设计。低频信号上升缓慢或者高频信号叠加于其中时会使得计数电路将该种抖动作为输入脉冲予以计数,从而产生计数上的误差。避免该种现象的发生,我们可以通过低通滤波器的使用来处理低频信号传输中可能产生的抖动,并经过滤波器滤除叠加的高频信号。而反相器的使用可以实现在滤波前把高频信号和低频信号予以分开,即仅使低频信号经过反相器实现滤波得到比较规则的矩形信号而高频信号则不经过该过程。经滤波后的矩形信号输入到单片机中,在单片机选择时,低电压、高性能是我们考虑的重要方面,同时还要选择体积较小功能相对较强的单片器,实现迅速有效的技术。单片机计数器的精确度和终端结构的类型都会影响计数结果,通过精密比较器的植入和振荡器电路的设置,实现频率计的精度和存储等方面的要求。在单片机选择时还应该考虑技术进步革新对于存储器程序的选择和更新的可能,并且考虑单片机大小对于整个电路系统的影响,保证程序写入的便利性。下图为其计数模块设计图:

此外,对于计数电路的设计还要考虑信号频率高低的不同对计数器可能产生的影响,实现单片机对不同信号频率进行分频处理。经过整形后的信号进入选定规格的反相器后,对不同频级的信号进行分级处理,单片机频率自动分辨处理能力的选择能够有效的降低一些频级信号的分辨和处理,保证计数器工作的效率和速度。同时计数器的显示值的大小根据信号的频值进行实现随机变动,实现对不分频信号、高频机低频信号的有效计数。

4.显示电路的设计

显示电路是数字频率计电路设计的重要组成部分,它负责将整形电路及计数电路处理的数据显示出来。在该电路设计时我们要考虑的因素便是显示材料的选择及数据显示的方式。LED 数码管的类型会对数据的现实产生一定的影响,而该种材质的数据显示方式又分为动态和静态两种。就两种现实方式的优缺点而言,静态现实具备较高的亮度,为我们及时准确的读取数值提供了视觉便利,且其接口编程相对容易,但是该种显示方式会占用较多的口线,显示的位数直接关系到锁存器的数量,这直接带来所用器件数量繁多和连线的庞杂 ;而动态显示相交而言能够避免上述一些缺点。在动态显示使用时,先确定未选实现选定未选的段码的显示,经过一定的延时再实现对下一选定为送段码显示,并依此循环。下图为其显示模块图:

其具体的工作流程可以解释为,单片机中不同的构建作为译码器实现信号的输入,由译码器的输出来确定数码管的选择位。将每个数码管的公共端与一个接有高电平的 PNP 三极管的集电极相连,同时将三极管的基极和译码器的输出端相连接,这样可以通过对软件编程来设置单片机中的不用位置构建,从而设计译码器的输入端,其输出端设为低电平且只设一位,从而使与其连接的三界关处于一种饱和的状态,实现对计数器数据的动态显示。实现显示器电路中各元件的有机连接后,还要注重送段码的相关问题,使得相应位数的送段码可以通过一定串行口在数码管上进行显示。

5.结束语

除上述电路设计外,电子频率计的设计还要注重电源、滤波等电路的设计,只有将各种影响其工作的单元电路的设计不断的精细化和完善时,才能有效的保证其工作的效率和在实验和工业中的使用效果。

【参考文献】

[1]沈亚钧.基于单片机的数字频率计设计[J].山西电子技术,2012(05).

[2]杨帆.数字频率计的设计与实现[J].科技广场,2011(09).

[3]武卫华,郑诗程.基于SoPC的嵌入式数字频率计设计与实现[J].电子测量与仪器学报,2010(02).

4.简易数字显示频率计的设计 篇四

第一章设计指标

……………………………………....……...……....P2 设计指标

……………………………………………………………....第二章 系统概述

………………………………………...…..…...…....P3 2.1设计思想

…………………………………………………………..2.2可行性论证

…………………………………………….…...…...2.3各功能的组成……………………………………………………… 2.4总体工作过程

……………………………………………………… 第三章 单元电路设计与分析

………………………………...…...…...P4 3.1各单元电路的选择

……………………………………………… 3.2设计及工作原理分析

……………………………………………… 第四章 电路的组构与调试

…………………………………..…...…...P7 4.1 遇到的主要问题

…………………………………………………..4.2 现象记录及原因分析

…………………………………………….4.3 解决措施及效果

………………………………………………… 4.4 功能的测试方法、步骤、设备、记录的数据

…………………… 第五章 结束语

………………………………………………………...P11 5.1对设计题目的结论性意见及进一步改进的意向说明

…………..5.2 总结设计的收获与体会

………………………………………….附图(电路图、电路总图)………………………………………………P12

第一章设计指标

在生产实践和科学实验中,经常需要测量信号的频率。数字频率计就是用数字方式测量和显示被测信号频率的仪器。实用的数字频率可以测量多种不同的周期波形。

设计要求

要求设计一个测量TTL方波信号频率的数字系统。用按键选择测量信号频率。测量值采用四个LED七段数码管显示,并以发光二极管指示测量对象:测量的单位 HZ khz。频率测量范围有四档量程。

(1)测量结果显示4位有效数字,测量结果显示四位有效数字。测量精度为万分之一。(2)频率测量范围:0.1hz~999.9khz,分四档。

第一档:100.1hz~999.9hz

第二档:1.000khz~9.999khz

第三档:10.00khz~99。99khz

第四档:100.0khz~999.9khz(3)量程切换可以采用两个按键手动切换或由电路控制自动切换。

设计思想

数字频率计的基本原理是测量周期信号在单位时间内的信号周波数。主要电路为计数器需要控制的是计数器的输入脉冲。显然切换被测信号的时基信号的路径就可以实现数字频率记测量功能的转换。

由于测量结果以十进制显示,为了显示译码方便,一般采用十进制计数器级联构成信号测试电路。本设计要求频率测量结果以四位有效数字显示,所以可以采用四个十进制计数器级联构成莫为10000的极术器对被测信号计数,最大值为9999.四个计数器的4组BCD码译码后显示的结果。

第二章 系统概述

2.1设计思想

总体思想可以分为五块:

1.量程选择(包含小数点以及单位控制)2.单稳态触发器 3.计数器和锁存器 4.译码显示 5.分频计

2.2可行性论证

该设计通过单稳态触发器输出的清零信号和锁存信号控制译码的显示

2.3各功能的组成

量程通过操作台上的两个按键组合成2x2种组合,同时控制多个74153M芯片达到同时控制时基信号,档位,小数点,单位指示灯的选择分别反馈到分频器,单稳态触发器等各个模块的控制段,达到时基信号,档位,小数点,单位指示灯一一对应的效果然后通过计数器,锁存器,以及译码显示,最终在操作台的四位七段显示器上显示结果

第三章 单元电路设计与分析

各单元电路的选择以及原理简要分析

1.量程选择(包含小数点以及单位控制)

电路如上图,A,B两个输入端子同时对档位,小数点,以及单位控制端。

2.单稳态触发器

单稳态电路如上,输出锁存端Y,然后Y通过一个D触发器产生一个延时一个周期的清零信号,因为计数器和锁存器的级联,必先锁存有效,再对计数器进行清零,所以清零信号要延时于锁存信号。

3.计数器和锁存器

计数器如下图,用四个74160十进制计数器进位输出端RCO通过一个非门进行级联,构成一个10000进制计数器,其中第一个74160的仿真图也在下面

锁存器:锁存器采用两个74374进行对四个74160输出的16个二进制数字进行锁存

其中引出清零段和锁存端,4.译码显示

采用四位动态扫描:当选着段AB选择不同的值时,分别从四片74153M中选择出同一下标的数据

6.分频器,分频器分为两个模块,一个是DIV8,即把10MHZ的信号依次分频10,最后能够达到0.1HZ的频率。

另一个是通过芯片达到任意进制的分频器(基础要求当中的8分频和四分频)

第四章 电路的组构与调试

4.1 遇到的主要问题

我在这个设计电路当中,设计,调试比较顺利,唯一让我陷入困境的问题是,当输入某一频率时,显示器不能直接显示最终结果。

4.2 现象记录及原因分析

问题现象1:显示器乱码

问题现象1:显示器一直显示0 问题现象2:例如输入为500赫兹频率的信号时,显示器从0000由一递增开始快速跳到500然后瞬间清零,达不到锁存目的。分析:锁存器输出段和显示器的连接端口不对,并且电路当中的锁存器的锁存信号没有在应该有效的时候令锁存器达到锁存目的,故我着重检查计数—锁存电路

4.3 解决措施及效果

对于问题一,在仔细对照大课题前的四位动态扫描小实验当中的引脚接入,发现,一个74160所输出的4为二进制码并不是全部接入显示电路当中的同一片74153M芯片,导致乱码,而是应该分别接入四片74153M芯片。在重新接入对应的引脚后,显示器不再显示乱码,却出现问题现象二

对于问题现象2。在仔细检查电路之后,发现单稳态输出的锁存通过非门接入锁存器锁存段导致显示一直存在于0000,而后去掉了非门,结果照成问题现象3.针对问题现象3 措施1.修改单稳态电路,一共设计了以下的新的单稳态方案

仿真

:虽然是清零信号延时于锁存信号,但理论上会带来一定的误差,不过应该还是能大致正确显示频率数,结果接入新的单稳态芯片后,发现问题没有解决,依旧是显示器从0000由一递增开始快速跳到500然后瞬间清零,达不到锁存目的。

措施二,发现74373的锁存端是高电平有效,于是在高频率的信号输入下,锁存的时间跟清零时间非常接近导致锁存失败。提出新的才想:如果换成74374锁存信号上升沿有效的锁存器。会不会解决问题,于是把原先锁存电路当中的74373换成74373.结果正常实现。问题解决,在全部连接入其他部分的电路后,达到课程设计的基础要求

拓展要求方面

对于拓展要求二当中的实现多种频率信号,开始觉得采用不同分频的分频器就能达到效果,于是利用741690的置位端以及4个按钮达到多分频的目的。结果调试发现,某些频率的第一位有效数字重复,达不到1-9的目的。

于是采用74161 十六进制计数器进行分频,发现能实现1-9当中大部分的情况,唯独“4”不能出现,分析发现,74161进制达不到25分频。于是提出了以下两个解决方案

方案一:采用两片74161进行级联,构成16X16 进制分屏器,然后最高位都置为1,低五位通过5个按键进行组合。能够组合出25进制分频器,达到出现“4”的 效果。但仍旧发现依旧显示不出“4”的效果,失败。

方案二:在原先一片74161的情况下,输出信号通过一个D触发器,在次达到二分频的效果,但在纸上演示的时候,发现,“4”能够输出,但采用这个方案之后,“9”却不能输出了。方案二失败。

4.4 功能的测试方法、步骤、设备、记录的数据

1.四位动态显示器的测试方法:遮住显示屏,采用自己设计的组合的真值表进行组合,达到自己想要的输出字符。

2.对于计数器-锁存器-显示器部分,先输入个低频测试信号,例如1hz,观察显示器是否从0一直跳到9,并在低位由9变0的时候,高位进1成功。3.接入单稳态触发器,让清零段和锁存端接入单稳态的输出信号,并输入500赫兹看能否正确稳定显示0500 4.接入量程控制,切换AB键组合看能否显示0.500 00.50 000.5,并对应的单位指示灯是否正确亮灭。

5.最后电路。通过一个外接的函数信号发生器,调节在四档量程内的频率,查看显示器的显示数值跟信号发生器的显示是否一致 附上基础要求以及拓展要求2的测试表格:

第五章 结束语

5.1对设计题目的结论性意见及进一步改进的意向说明

这次的设计题目其实很有综合性,能够用上我们在数电课上所学的大部分知识,但还有一些知识点也应该涉及到,例如:TTL门的应用,时序逻辑电路的运用,以及ROM的编程引用,这样能加强我们所学知识的联系,运用,实践的能力,并应该整体电路以及设计方案都让学生自己设计,这样我相信能够涌现出更多有新奇创意的设计方案,百花齐放。进一步改进:其实对于拓展要求1,我们可以构思一个时序逻辑电路,通过画状态转换图,状态转换表等一系列基础分析方法,构建出合理电路。对于拓展要求二,其实我们可以运用ROM的编程达到设计要求,这有待我们进一步的思考,学习和实践。

付上各个部分的电路图(详细电路图在第三章)集成该部分的芯片图: 1.div8

2.7seg(七段显示)

3.单稳态触发器

4.计数器(JSQ)

5.七段显示芯片

6.小数点,量程,单位指示灯控制芯片

7.分频器芯片

8.基础要求总电路

9.扩展要求芯片(具体电路图在第四章)

10.拓展要求电路总图

5.简易数字显示频率计的设计 篇五

题目:智能数字频率计设计

专业: 信息工程 班级:信息111 学号:*** 姓名:*** 指导教师:***

北京工商大学计算机与信息工程学院

1、设计目的

(1)了解和掌握一个完整的电子线路设计方法和概念;

(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。

(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用: 包括放大器、滤波器、比较器、计数和显示电路等。

(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。

2、设计要求

(1)基本要求

设计指标:

1.频率测量:0~250KHz; 2.周期测量:4mS~10S; 3.闸门时间:0.1S,1S;

4.测量分辨率:5位/0.1S,6位/1S; 5.用图形液晶显示状态、单位等。

充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。

(2)扩展要求

用语音装置来实现频率、周期报数。

(3)误差测试

调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。

(4)实际完成的要求及效果

1.测量范围:0.1Hz~4MHz,周期、频率测量可调; 2.闸门时间:0.05s~10s可调; 3.测量分辨率:5位/0.01S,6位/0.1S; 4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。

3、硬件电路设计

(1)总体设计思路 本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。系统共设计包括五大模块: 主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。

各模块作用如下: 1.主芯片控制模块: 单片机AT89S52 内部具有2个16位定时/计数器T0、T1,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。利用单片机的计数器和定时器的功能对被测信号进行计数。以AT89S52 单片机为控制核心,来完成对各种被测信号的精确计数、显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。

2.整形模块:整形电路是将一些不是方波的待测信号转化成方波信号,便于测量。本设计使用运放器LM324连接成过零比较器作为整形电路。

3.分频模块: 考虑单片机利用晶振计数,使用11.0592MHz 时钟时,最大计数速率将近500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。本设计使用的分频芯片是74LS161实现4分频及16分频。

4.档位选择模块:控制74LS161不分频、4分频 或者 16分频,控制芯片是74LS153。5.显示模块:编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示,本设计选用LCD1602。

(2)测频基本设计原理

所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T(右图3-1所示)。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。利用单片机的定时/计数T0、T1的定时、计数功能产生周期为1s的时间脉冲信号,则门控电路的输出信号持 图3-1 续时间亦准确地等于1s。闸门电路由标准的秒脉冲信号进行控制,当秒脉冲信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒脉冲信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。

(2)系统框图

本智能数字频率计系统框图如图3-2所示

图3-2智能数字频率计系统框图

(3)单片机部分

P0口经上拉后做LCD数据接口 P2.1~P2.3作为LCD控制端口 P2.4~P2.5作为分频选择端口 P3.5作为被测信号输入端口

P3.2~P3.4作为开关控制端口(对应电路图中K1,K2,SET)

图3-3 89D52单片机部分电路

(4)分频部分

74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。

其管脚图如图3-4所示:

图3-4 74HC161 图3-5 74HC153管脚图

74HC153是一个双4选1数据选择器,其管脚图如图3-5所示:

74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6)。

图3-6 分频、选择分频档位电路图

(5)LCD显示部分

LCD显示,1602的八位数据I/O口与单片机的P0口相连,读写控制端接P2.0-P2.2口。三个按键中,设置键接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。

图3-7 LCD显示部分电路图

4、软件设计

(1)主程序流程图设计

本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:

图4-1主程序流程图

(2)子程序流程图设计

<1>显示程序:

LCD显示程序设计流程如图4-2所示:

图4-2显示程序流程图 <2>频率测量程序框图:

频率测量程序的整体架构如图4-3所示:

图4-3频率测量框架图

(3)中断服务流程图

INT0中断流程图如图4-4所示:

图4-4INT0中断流程图

(4)程序代码

#include #include #include #include float f;

//频率 float p;

//周期 float sj;

//闸门时间 char idata buff[20];char flag=0;

//频率、周期选择标志位

char xs=0;//设置闸门时间结束后是否显示结果的标志位

unsigned char m=0,n=0,yichu=0,fenpin;

//m定时中断次数 n计数中断次数 yichu判断是定时

//器还是计数器溢出

#define Key_Set P3 #define K1 0xf7

//11110111

P33 #define K2 0xef

//11101111

P34 #define NO_Set 0xff #define Freq 0 #define Peri 1

sbit B153=P2^4;sbit A153=P2^3;sbit P17=P3^4;sbit P16=P3^3;sbit P35=P3^5;sbit Set=P3^2;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsigned char InputMode);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cepin();void panduan();void timedisplay(float sj);void Time_Set1();void Time_Set2();void t0();void t1();

/*****模块名称 LCD1602显示程序******/

/***********************端口定义 ***********************************/

sbit LcdRs= P2^0;sbit LcdRw= P2^1;sbit LcdEn= P2^2;sfr DBPort= 0x80;

//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 /************************内部等待函数********************************/

unsigned char LCD_Wait(void){

LcdRs=0;

//寄存器选择输入端 1:数据 0:指令

LcdRw=1;

_nop_();//RW:为0:写状态;为1:读状态;

LcdEn=1;

_nop_();

//使能输入端,读状态,高电平有效;写状态,下降沿有效

LcdEn=0;

return DBPort;

} /**********************向LCD写入命令或数据***************************/

#define LCD_COMMAND 0

// Command #define LCD_DATA 1

// Data #define LCD_CLEAR_SCREEN

0x01

// 清屏 #define LCD_HOMING

0x02

// 光标返回原点 void LCD_Write(bit style, unsigned char input){

LcdEn=0;

LcdRs=style;

LcdRw=0;

_nop_();

DBPort=input;

_nop_();//注意顺序

LcdEn=1;

_nop_();//注意顺序

LcdEn=0;

_nop_();

LCD_Wait();} /********************设置显示模式*********************************/

#define LCD_SHOW

0x04

//显示开 #define LCD_HIDE

0x00

//显示关

#define LCD_CURSOR

0x02

//显示光标

#define LCD_NO_CURSOR

0x00

//无光标

#define LCD_FLASH

0x01

//光标闪动 #define LCD_NO_FLASH

0x00

//光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode){

LCD_Write(LCD_COMMAND, 0x08|DisplayMode);

} /*********************设置输入模式***********************************/ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00

// default #define LCD_MOVE 0x01

// 画面可平移 #define LCD_NO_MOVE 0x00

//default void LCD_SetInput(unsigned char InputMode){

LCD_Write(LCD_COMMAND, 0x04|InputMode);} /******************初始化LCD**************************************/

void LCD_Initial(){

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38);

//8位数据端口,2行显示,5*7点阵

LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);

//开启显示, 无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);

//清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

//AC递增, 画面不动 }

/************************************************************************/ void GotoXY(unsigned char x, unsigned char y){ if(y==0)

LCD_Write(LCD_COMMAND,0x80|x);if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40));} void Print(unsigned char *str){

while(*str!=')

{

LCD_Write(LCD_DATA,*str);

str++;

} }

/*************************************************************************** *

模块名称:

频率测量程序

* *

测量范围:0.1Hz~4MHz,闸门时间:0.05s~10s可调。

* ***************************************************************************/ /***************************89c52初始化************************************/ void C52_Initial(){ sj=1000000.00;Key_Set=0xff;TMOD=0x51;

// 01010001 T1为计数器,T0为定时器

EA=1;ET0=1;ET1=1;EX0=1;

PX0=1;

//外部中断0设置为高优先级

IT0=0;

//电平触发方式 } /**************************延时子程序**************************************/ void Delay(unsigned int t)

//t随着数值越大,误差趋于平衡.{

unsigned char i;

while(t--)

{

for(i=0;i<123;i++){;}

} } /*************************计数中*********************************/ void t1(void)interrupt 3

//计数器1溢出,yichu=1 { n++;yichu=1;TH1=0;TL1=0;} /***********************定时中断****************************/ void t0(void)interrupt 1

{ m++;yichu=2;

//定时器0溢出,yichu=2 TH0=0x3c;

//定时50ms TL0=0xb0;} /***********************频率显示*****************************/ void Fdisplay(float f){

if(f>999400.00)

{

if(f<4000400.00)

{sprintf(buff,“ F=%2.4fmHz ”,(f/1000000.00));}

}

else

{

if(f>1040.00)

{sprintf(buff,“ F=%4.2fkHz ”,(f/1000.00));}

else

{

if(f>0.06)

{sprintf(buff,“ F=%3.2fHz

”,f);}

}

}

GotoXY(0,1);

Print(buff);} /***********************周期显示**********************************/ void Pdisplay(float p){

if(p>999400.00)

{

if(p<10004000.00)

{sprintf(buff,“ Cycle:%2.4fs ”,(p/1000000.00));}

else

{sprintf(buff,“error(Time or F)”,p);}

}

else

{

if(p>9950.00)

{sprintf(buff,“ Cycle:%4.2fms ”,(p/1000.00));}

else

{

if(p>0.248)

{sprintf(buff,“ Cycle:%3.3fus ”,p);}

else

{sprintf(buff,“error(Time or F)”,p);}

}

}

GotoXY(0,1);

Print(buff);}

/*********************测试频率**************************/ void cepin(){ unsigned char a;unsigned long js;m=0;n=0;TMOD=0x51;TH0=0x3c;

//定时50ms TL0=0xb0;TH1=0;TL1=0;a=sj/50000.00;TCON=0x50;

//启动定时器和计数器 while(m!=a);TCON=0;js=TH1*256+n*65536+TL1;f=(js/(sj/1000000.00))*fenpin;p=sj/(js*fenpin);if(xs==0)

//设置结束后第一次不显示结果 { if(flag==Freq)Fdisplay(f);else Pdisplay(p);} }

/*********************判断频率******************************/ void panduan(){ xs=0;

//设置结束后第二次循环显示结果 B153=1;

//选择16分频 A153=0;yichu=0;TMOD=0x51;

TH0=0xff;

TL0=0x38;TH1=0xff;

TL1=0x9c;TR0=1;

TR1=1;while(yichu==0);

TR0=0;

TR1=0;

if(yichu==1)

(f>500khz)

{fenpin=16;

cepin();} else

频数

{

yichu=0;

B153=0;

A153=1;

TH0=0xfc;

TL0=0x18;

TH1=0xff;

TL1=0x9c;

TR0=1;

TR1=1;

while(yichu==0);

TR0=0;

TR1=0;

if(yichu==1)

(1khz

{fenpin=4;

//定时器0

200us

//计数器1

100脉冲

//启动定时器0和计数器1

//如果没有溢出一直循环

//已经溢出关闭定时器0和计数器1

//计数器先溢出:在200ms内测得的脉冲过多,说明频率较高

//转为测16分频后的频率 //定时器先溢出:100个脉冲的时间比较短,即频率较低,可以减少分

//定时器0

1ms

//计数器1

100个脉冲

//启动定时器0和计数器1

//如果没溢出一直循环

//已经溢出关闭定时器0和计数器1

//计数器先溢出:在1ms内测得的脉冲过多,说明频率较高

//转为测4分频后测频率

cepin();}

else

//定时器先溢出:100个脉冲的时间比较短,即频率较低

{ fenpin=1;

B153=0;

A153=0;

cepin();}

} } /*************************显示闸门时间***********************************/

void timedisplay(float GTime){ sprintf(buff,“GTime=%7.0fus ”,GTime);GotoXY(0,1);Print(buff);Delay(50);} /***************************减按键*******************************/ void Time_Set2(){ Delay(1000);if(P17==1)

{ sj=sj-50000.00;

if(sj>50000.00)timedisplay(sj);

else

{sj=50000.00;

timedisplay(sj);}

} else {while(P17==0)

{ Delay(500);

sj=sj-500000.00;

if(sj>50000.00)timedisplay(sj);

else

{sj=50000.00;

timedisplay(sj);}

} }

} /***************************加按键**********************************/

void Time_Set1(){ Delay(1000)if(P16==1)

{

sj=sj+50000.00;

if(sj<10000000.00)timedisplay(sj);

else

{sj=10000000.00;

timedisplay(sj);}

} else {while(P16==0)

{ Delay(500);

sj=sj+500000.00;

if(sj<10000000.00)timedisplay(sj);

else

{sj=10000000.00;

timedisplay(sj);}

//按住1s快加0.5s

} }

} /************************闸门时间设置***********************************/ void Time_Set()interrupt 0 { EA=0;

//防止无限中断

Delay(100);if(Set==0)

{

Delay(1000);

//判断处于哪种设置状态

if(Set==1)

{

GotoXY(0,1);

Print(“ Press Button ”);

GotoXY(0,0);

Print(“

T Settings

”);

while(Set==1)

{

switch(Key_Set)

{

case K1: Time_Set1();break;

case K2: Time_Set2();break;

default: break;

}

}

}

else

//选择测试频率或周期

{

GotoXY(0,1);

Print(“ 1.Freq 2.Cycle”);

GotoXY(0,0);

Print(“

Select ”);

while(Set==0);

//等待设置按键松开

while(Set==1)

{

switch(Key_Set)

{

case K1: flag=Freq;GotoXY(0,1);Print(“

---Freq---

case K2: flag=Peri;GotoXY(0,1);Print(”

---Cycle---

default: break;

}

}

}

} GotoXY(0,0);Print(“---Cymometer---”);

GotoXY(0,1);Print(“

Waiting...”);while(Set==0);

//防止再次进入中断

EA=1;xs=1;

//不显示此次结果.} /**************************主程序****************************/ void main(){

LCD_Initial();

//LCD初始化 GotoXY(0,0);Print(“---Cymometer---”);GotoXY(0,1);Print(“ Huixi && Xia”);Delay(1000);GotoXY(0,1);Print(“

Waiting...”);

“);break;”);break;

C52_Initial();

//89c52初始化 while(1)

{

panduan();

} }

5、调试过程

程序的设计及调试过程中离不开89C52的开发系统板电路图,起初忽视了开发板上的K3键用到的P35引脚也是定时器T1的信号输入引脚。后来在其他管脚的分配也曾出现错误,不过通过调试、修改都一一改正。仿真的时候默认晶振是12MHz,故程序编写的时候按12MHz设计的定时,以至于在实体时候测量不是很准确,后通过重新计算、修改程序达到了较高的准确率。但最终在实体系统演示中犯了一个极其幼稚的错误,未拿掉短接帽,以至于起初LCD未任何显示,浪费了不少时间去找程序的问题,还是自己不够认真细心。

6、实验结果

(1)最终实物图

最终实体电路系统如图6-1。

图6-1最终实物图

该课程设计验收时结果符合设计要求,可测量矩形波,方波,三角波,锯齿波等信号的频率;测量范围为0.1Hz~4MHz;闸门时间为0.05s~10s可调。

(2)电路仿真分析

由于实物演示不方便,这里用仿真图进行说明: 如下图,开关K1、K2、SET分别代表实物单片机最小系统上的开关K5、K4、K6。SET为确认键,K1可以选择频率输出,K2可以选择周期输出。K1、K2配合还可以调节阀门时间。

下图为开关仿真图和结果显示图:

开关K1,K2选择测周、测频及闸门时间的增减,SET键用于功能切换及确认

初始显示

选择测频率或测周期

频率显示

周期显示

改变阀门时间

7、总结与感悟

本设计通过运用单片机AT89S52,Proteus 仿真软件以及Kell 仿真软件的相关知识,成功地实现了数字频率计的设计。综合调试结果表明,本文提出的设计与传统测频系统相比,具有体积小、成本低、低功耗、精度高等优点,适用于各种测量电路。

6.简易数字显示频率计的设计 篇六

摘要:在频率测量过程中,±1个计数误差通常是限制频率测量精度进一步提高的重要原因。在分析±个计数误差产生原因的基础上,提出了一种利用被测信号、时钟基准和测量门限相位的全同步来消除计数误差的频率测量方法,给出了基于FPGA实现上述测量方法的实验原型和实验对比结果。关键词:相位同步频率测量FPGA频率测量是电子测量技术中最基本的测量之一。工程中很多测量,如用振弦式方法测量力、时间测量、速度测量、速度控制等,都涉及到频率测量,或可归结为频率测量。频率测量方法的精度和效能常常决定了这些测量仪表或控制系统的性能。频率作为一种最基本的物理量,其测量问题等同于时间测量问题,因此频率测量的意义更加显然。常用数字频率测量方法有M法、T法和M/T法。M法是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。这种测量方法的测量精度取决于闸门时间和被测信号频率。当被测信号频率较低时将产生较大误差,除非闸门时间取得很大。所以这种方法比较适合测量高频信号的频率。T法是通过测量被测信号的周期然后换算出被测信号的频率。这种测量方法的测量精度取决于被测信号的周期和计时精度,当被测信号频率较高时,对计时精度的要求就很高。这种方法比较适合测量频率较低的信号。M/T法具有以上两种方法的优点,它通过测量被测信号数个周期的时间然后换算得出被测信号的频率,可兼顾低频与高频信号,提高了测量精度。

图1

但是,M法、T法和M/T法存在±1个字的计数误差问题:M法存在被测闸门内±1个被测信号的脉冲个数误差,T法或M/T法也存在±1个字的计时误差。这个问题成为限制测量精度提高的一个重要原因。本文在以上方法基础上,提出了一种新的频率测量方法,该方法利用全同步方法消除限制测量精度提高的±1数字误差问题,从而使频率测量的精度和性能大为改善。1全同步数字频率测量方法的原理M/T法是目前使用比较广泛的一种频率测量方法。其核心思想是通过闸门信号与被信号同步,将闸门时间T控制为被测信号周期的整数倍。测量时,先打开参考闸门,当检测到被测信号脉冲沿到达时开始计时,对标准时钟计数;参考闸门关闭时,计时器并不立即停止计时,而是待检测到被测信号脉冲沿到达时才停止计时,完成测量被测信号整数个周期的过程。测量的实际闸门时间与参考闸门时间可能不完全相箱,但最大差值不超过被测信号的一个周期。M/T法测量原理如图1所示。

图2

设实际闸门时间为Ts,被测信号周期数为Nx,标准时钟计时值为Ns,频率为fs,则被测信号的频率测量值为:由于实际闸门时间为Ts为被测信号周期的整数倍,因此Nx是精确的;而对标准时钟的计量值则存在误差△Ns(|△Ns|≤1),即标准时钟计时的真值应为Ns±△Ns。由此可知被测信号的频率真值为:若不计标准时钟的误差,则测量的相对误差是:可以看出,M/T法实际上就是将测量闸门信号与被测信号同步,使得实际测量时间是被测信号周期的整数倍,所以M/T法又称为多周期同步测量法。M/T法中,相对误差与被测频率无关,即对整个测量频率域等精度测量;对标准时钟的计数值Ns越大则测量相对误差越小;提高门限时间Ts和标准时钟频率可以提高测量精度;在精度不变的情况下,提高标准时钟频率可以缩短门限时间,提高测量速度。由此可见,对闸门时间Ts的计时误差△Ns是限制M/T法频率测量精度进一步提高的主要原因,消除△Ns误差是提高测量精度的有效手段。全同步频率测量法则是在参考闸门的控制下,寻找与标准时钟同步的被测信号,并以此信号作为实际闸门的控制信号,实现实际测量闸门信号、标准时钟、被测信号全同步,从而消除Nx和Ns测量误差。全同步频率测量法原理如图2所示。在给出参考闸门信号后,通过一个脉冲同步检测器检测被测信号脉冲沿和标准时钟信号脉冲沿的同步信息,当它们同步就开始计时;参考闸门关闭后,亦检测被测信号脉冲沿和标准时钟信号脉冲沿的同步信息,当它们同步则停止计时。对于任意的标准时钟和被测信号,要找到两者脉冲完全同步的时刻来开启、关闭闸门是不现实的,但有可能找在实现脉冲同步检测电路时,也存在一个脉冲同步检测的误差范围。若以这个脉冲同步检测电路检测到脉冲同步的时刻作为开关信号,可以使得实际闸门的开关发生在标准时钟和被测信号都足够接近的时刻,从而达到计算值量化误差的`最小化。设开启闸门时脉冲同步时间为△t1,关闭闸门时脉冲同步时间差为△t2,脉冲同步检测最大时间差值或称为最大误差为△t,则有:|△t1|≤△t,|△t2|≤△t。不计标准时钟误差,实际闸门与标准时钟同步,实际闸门时间为Ts,则被测信号的频率测量值为:被测信号频率的真实值可表示为:频率测量的相对误差为:从(6)式可知,频率测量的最大相对误差只与脉冲同步检测最大时间差值△t和闸门时间Ts有关。将(6)式与(3)式对比可知,标准时钟周期1/?s和脉冲同步检测最大时间差值△t分别是M/T法和本文所述的全同步频率测量法中限制频率测量精度提高的原因。显然,控制△t来提高频率测量精度是有铲的,而且实现起来比提高标准时钟频率更容易。在全同步频率测量法中,当△t=2.5ns、Ts为1s时,频率测量相对精度可以达到10-9量级;或当△t=2.5ns、Ts取0.001s时,可以实现1000次/s、相对精度达到10-6量级的快速动态频率测量。

2实验原形与测试结果根据上述思想,利用VHDL语言,在基于ALTERA公司EPF10K100ARC240-1FPGA的硬件平台上实现了一个全同步数字频率测量的实验原形,其原理图如图3所示。系统由控制器、脉冲同步检测、计数器、频率换算逻辑、锁存器和显示等几部分组成。其中,脉冲同步检测是检测被测信号与标准时钟是否同步并产生实际闸门控制信号的关键部分,其电气性能直接影响到频率测量精度。脉冲同步检测的设计仿真结果如图4所示。图4中,pulse1和pulse2为输入的标准时钟和被测信号,gate为输入的参考闸门信号,output为脉冲同步检测电路产生的实际闸门信号。所设计电路的脉冲同步检测最大误差△t为2.5ns,即pulse1和pulse2的上升沿时间如果相差不大于2.5ns,则检测为两脉冲同步;反之,则检测为两脉冲不同步。

在相同条件下使用全同步频率测量法与A/T法进行频率测量的对比结果如表1所示。系统使用的标准时钟频率fs为1.000000MHz,被测信号频率标称值为3.68639MHz。

表1全同步频率测量法与M/T法的测量对比结果测量编号参考闸门时间(ms)全同步频率测量法M/T法标准时钟计

数值测量信号计

7.基于FPGA的数字频率计设计 篇七

数字频率计最基本的原理就是公式

其中, f-频率, T-一定的时间, N-相应时间内的周期数。基于这个公式, 衍生出两类数字频率计实现方案, 直接测量法和间接测量法。

1.1 直接测量法

直接测量法, 引入一个闸门信号, 由一个时间宽度固定的闸门信号来控制待测信号的计数使能端。通过测得在闸门时间内待测信号的周期个数N, 除以闸门时间T, 即可以得到待测信号的频率f。

闸门信号连接计数器的使能端, 高电平有效; 待测信号接计数器输入端, 作计数信号。

其误差来源于闸门信号上升沿和下降沿的到来时间, 与待测信号开始计数时脉冲的上升沿及计数结束时的脉冲的下降沿到来时间不完全一致。测高频信号时, N较大, 误差对测量精度影响不大。但在测低频信号时, N相对较小, 这个误差则对系统精度产生较大影响。

1.2 间接测量法

间接测量法泛指直接测量法以外的测量方法, 最具代表性的是周期测量法。其核心是借助于一个标准的参考时钟信号, 测得在待测信号的整数个周期时间内参考时钟的周期个数, 之后, 利用公式1, 计算得到待测信号频率。

(注 : fx-待测信号频率 , fa-参考信号频率 , Nx-测量时间内待测信号的周期数, Na-测量时间内参考信号的周期个数。)

简单控制电路实现的功能就是在待测信号整数个周期内,维持高电平输出。

此方案误差来源于待测信号的上升沿和下降沿到来时间与参考信号开始计数时脉冲的上升沿及计数结束时脉冲的下降沿到来的时间未必严格一致。因而Na最多会有一个脉冲的误差。最终的相对误差和Na成反比。周期测量法在低频段性能较好, 但在高频段误差较大。

1.3 自适应测量法原理

在一般的周期测量法中, 待测信号周期数是固定的。其结果就是随着待测信号频率的提高, 频率计系统的测量精度不断下降。

为了提高数字频率计系统在高频段的测量精度, 而又不延长数字频率计在测量低频信号时的测量时间, 提出将Nx作为一个可变的量。但是, 假如片面地追求在整个测量范围具有相等的精度, 那么根据公式 (1-2), 势必会引入一个以为乘数的乘法运算。这个乘法运算将会在很大程度上提升系统的复杂度。因此, 这里设Nx相对固定, 只赋于它4个值: 1、10、100和1000。这样既能使系统在高频段的测量精度有了保障, 又避免了乘法运算的引入, 只需对最后的十进制输出结果进行移位运算就可达到乘法运算的效果。

2 设计与实现

2.1 设计指标与硬件环境

文中设计的数字频率计, 预期实现的测量范围为1Hz~10MHz, 测量相对误差小于1%。本款设计基于FPGA, 其中EDA工具采用Altera公司出品的Quartus II 5.1, 硬件描述语言使用VHDL, PLD芯片是Altera Cyclone EP1C6T144C8。

2.2 系统模块

数字频率计系统总共有4大模块, 分别是参考信号计数器模块、周期控制计数器模块、除法运算处理单元模块以及移位锁存单元模块。

参考信号计数器模块: 在使能端允许的情况下, 负责对参考信号进行计数操作, 在计数结束后, 将结果输出到除法运算处理单元。

周期控制计数器模块: 根据除法运算处理单元的反馈信号确定待测信号的周期数。在待测信号的周期数达到预定数目之前, 维持参考信号计数器的使能端为高电平, 一旦达到预定数目, 则将参考信号计数器的使能端置为低电平。

除法运算处理单元: 将参考信号计数器的输出结果作为本模块的输入。先对输入进行判断, 并将相应的信号反馈到周期控制计数器模块。假如输入大于一定的数值, 则进行除法运算, 之后, 运算结果输出到移位锁存单元。

移位锁存单元模块: 利用除法运算处理单元的反馈信号对运算结果进行移位并锁存, 之后利用数码管显示出来。

2.3 系统电路原理

数字频率计原理图如图6所示。它有4个功能实体, 即CycleControl、ReferenceCounter、DivisionProcess和ResultDisplay。它们分别对应设计模块图中的周期控制计数器、参考信号计数器、除法运算处理单元和移位锁存单元。而Cymometer作为整个数字频率计系统的顶层实体, 主要负责调度各个功能模块。

ClkX: 整个系统的待测信号, 同时也是CycleControl实体的时钟输入信号。

ClkR: 整个系统的参考时钟信号 , 同时也是ReferenceCounter实体的时钟输入信号。

CReset: 整个系统的异步复位信号, 高电平有效, 同时,也是4个功能实体的异步复位信号。

CymNum: 整个系统的8位十进制输出信号 , 同时也是ResultDisplay实体的输出信号。

CCEn: ReferenceCounter实体的计数使能控制信号, 高电平有效。

CCClr: ReferenceCounter实体的计数清零信号 , 高电平有效。

RCNum: ReferenceCounter实体的计数结果输出数据, 为6位十六进制数据。

DPTn: DivisionProcess实体反馈 到CycleControl实体和ResultDisplay实体的12位二进制 数据信号 , 有“000000000001”、“000001100100”和“000000001010”、“001111101000”4种可能。

CCPc: DivisionProcess实体的输入数据 (即参考信号计数结果) 的除法处理控制信号, 上升沿有效。

DPRc: ResultDisplay实体的输入数据 (即除法处理结果)的移位锁存处理信号, 上升沿有效。

DPNum: ResultDisplay实体的输入数据 , 即除法处理结果, 为8位十进制数据。

整个系统的工作原理详细阐述如下:

测量开始时, CReset会产生一个短的脉冲, 使整个系统复位。具体而言, 是指CCEn置为0, CymNum置为全0, CCClr置为1, DPTn则置为“000000000001” , CCPc置为0,DPRc置为0。之后 , 在待测信号ClkX的第一个上升沿 ,CCEn置为1, CCClr置为0, ReferenceDisplay开始计数。

一个周期后, CCEn置为0, 计数暂停, CCPc置为1, 使DivisionProcess实体开始工作。由DivisionProcess判断RCNum是否不小于4096, 是, 则开始进行除法处理, 得出初步结果,并将DPRc置为1, 由ResultDisplay进行移位锁存处理, 最后输出到数码管。否则判断RCNum的值是处于哪个区段。若小于16, 那么就将DPTn置为“001111101000”, 继续计数, 直到达到相应的测量周期, 再由DivisionProcess, ResultDisplay进行处理。若介于16与256之间, 那么就将DPTn置为“000001100100”, 同上一种情况作相同的处理。而若处于256与4096之间, 则需要分两种情况处理。第一种情况: 假如此时DPTn为“000000000001”, 则将其置为“000000001010”,之后也是按照上面那样处理。第二种情况: DPTn为其他值时, 停止计数, 直接进行除法处理, 直至得出结果。

RCNum数据在DivisionProcess实体中的判断流程如图7所示。

2.4 设计方案中的运算处理

2.4.1 乘法

因本方案中, Nx并非纯粹的变量, 它只有1、10、100和1000 4个可能的取值, 而之所以取这4个值, 是考虑到最终输出结果fx会是一个8位十进制的量, 这4个值都是10的幂, 乘法运算可转化成移位运算。比如, 倘若Nx取100, 那么, 只需要将经过除法处理的初步结果左移两位就可以得到fx, 简化了运算。

2.4.2 除法

在本方案中, 被除数即参考信号频率fa固定为20MHz,但是作为除数的参考信号周期数Na是一个在介于1000和107之间的整数。那么, 除法运算就不能简化为移位运算, 只能从算法角度来简化。

传统的除法运算处理方式为: 先将商置零, 接着开始循环, 比较被除数与除数, 若被除数大于或等于除数, 商加1,并将被除数与除数的差作为新的被除数, 开始下一个循环。否则, 退出循环。

这种算法循环次数即为商的大小。当商较大时, 循环次数将很多, 资源开销难以承受。尤其是相对于EDA工具Quartus II而言, 循环次数大于105 次的循环, 则无法通过编译。

提出的除法算法, 借鉴了除法笔算的思想, 即从高位向低位运算。虽然编程时复杂度有所提高, 但它所需的循环次数最多不超过40次, 大大节约了资源。

同时, 考虑到除数Na是一个十六进制的数, 而除法运算结果则是一个8位十进制的数, 为了避免在系统处理中再引入十-十六进制转换, 这里采用了十-十六混合进制算法。使用这一算法, 可以使得在除数为十六进制的情况下, 除法运算的结果直接就是十进制数。具体说明如下:

令除数Na=b3b2b1b0, 是一个十六进制数, 其中, b3不等于0。那么, fa可以表示为fa=4E20*103。将4E20与Na相除, 得到的商作为除法运算结果的千位。之后, 将余数乘以十 (可以通过将余数分别左移一位和左移三位后再相加来实现), 再与Na相除, 得到的商作为除法运算结果的百位。类似操作继续执行两次, 以分别得到除法运算结果的十位和个位, 即可完成除法运算处理。

这种除法处理的实际效果, 一个数据足以说明: 直接调用“*”运算时, 即使是16位乘以16位的运算, 所需的逻辑单元即接近1万。而这里整个数字频率计系统, 包括这个被除数为32位, 除数为24位的除法运算模块, 所需的逻辑单元不足5800个。

2.5 设计方案的性能分析

2.5.1 测量精度理论

本次设计中, 核心公式为:

令待测信号真实频率为f, 由于测量时, 测量时间的开始和结束都是由待测信号上升沿触发的, 所以对于待测信号周期数Nx的测量是没有误差的。

而对于参考信号周期个数Na, 则最多有一个周期的误差,也就是说:

由公式 (2-1)、公式 (2-2) 可得:

由相对误差公式:

将公式 (2-1)、公式 (2-3) 代入公式 (2-4), 可得:

再考虑到公式 (2-2), 那么, 会有:

因此, 只要能够确保Na足够大, 从理论上来说, 频率计系统的测量精度就可以得到保证。实际上, 在本方案中, 已经确保Na不小于1000, 也就是说, 频率计系统的理论测量精度不低于0.1%, 满足设计目标。

2.5.2 时序仿真结果

为了节约仿真时间, 将待测信号周期个数Nx与参考信号周期个数Na的比值扩大了100倍, 假使待Nx与Na的比值原本是1∶10000, 那么实际上, 在仿真图上表现出来比值将是1∶100。

这里需要将参考信号计数器由每一个参考信号的上升沿计数加1改为每一个上升沿计数加100。这样处理对于数字频率计系统功能的证实没有实质影响, 缺点是会将系统测量误差放大100倍。

(1) 待测信号为4000Hz时, 如图8所示。

可以看出, 当待测信号为4000Hz时, 仿真输出结果是“00000000000001000000000000000000”, 也就是4000。所以,测量结果与待测信号的实际频率相同, 此时的测量误差为0%。

(2) 待测信号为40000Hz时, 如图9所示。

可以看出, 当待测信号为40000Hz时, 仿真输出结果是“00000000010000000000000000000000”, 也就是40000。所以,测量结果与待测信号的实际频率相同, 此时的测量误差为0%。

之所以会出现测量误差为0%的仿真结果, 是因为仿真时的输入信号比较理想, 从而使△Na=0, 进而导致0误差的测量结果。

当待测信号为4000Hz时, Nx即为1, 并不需要做出改变, 而待测信号为40000Hz时, Nx为10, 需要改变。两种待测信号下都可以正常工作, 则表明本设计方案可以实现周期自动调整的功能。

3 设计方案的资源消耗

整个数字频率计系统需要的逻辑单元是5731个, 输入输出端口35个, 设计时使用的拥有着十几万逻辑单元的AlteraCyclone EP1C6T144C8芯片而言, 资源是非常充足的。

4 结语

设计的自适应性数字频率计, 将待测信号测量周期相对地固定为1、10、100和1000这4个值, 除法运算采用了独特的从高位向低位运算的十-十六进制除法算法。

仿真结果表明, 这样的处理只需要5700多个逻辑单元,就可以实现一个测量范围在1Hz~10MHz、测量误差小于0.1%的数字频率计系统, 成功地控制了资源的消耗。

摘要:针对周期测量法在高频段表现差强人意的缺点,提出了周期自适应测量法的设计方案,即在增加一项自动调整待测信号测量周期的功能。同时设计一款基于FPGA的数字频率计,其中EDA工具采用Altera公司出品的Quartus II 5.1,硬件描述语言使用VHDL,PLD芯片是Altera Cyclone EP1C6T144C8。

8.专用数字对讲机技术与频率规划 篇八

无线电频谱资源作为稀缺的国家战略资源之一,对其加强保护和利用是无线电管理的核心工作。而无线电频率规划作为频率管理的基础,目的就是通过科学的频率划分及分配,有效提高频谱资源的利用率,促进新技术和新系统的开发,以满足经济社会发展对无线电通信应用的深化需求

为满足上海地区经济建设发展与社会稳定保障等领域对专用对讲机的应用需求,进一步促进无线电数字通信技术的发展,提高无线频谱资源利用效率,根据国家工信部无线电管理机构《关于150MHz 400MHz频段专用对讲机频率规划和使用管理有关事宜的通知》的要求,上海市无线电管理局在对全市台站数据库进行分析、行业需求调研,以及对本市150MHz、400MHz频段进行无线电监测和测试数据分析的基础上,结合未来中长期专用对讲机应用需求增长的预期,以需求与使用状况分析报告提出为依据,制订了本市专用对讲机中长期频率分配、指配与使用的规划。

专用对讲机的管理和应用

专用对讲机的使用和管理有别于公众对讲机(俗称“娃娃机”,其频率设置及参数标准符合国家无线电发射设备型号核准的要求,功率在0.5W以下),从无线电管理方面的要求来讲,专用对讲机发射功率比公众对讲机大,根据需求实际可以设立中继台,覆盖范围大,同时,使用单位需每年缴纳频率占用费。因此,其频率使用、台站设置需要经无线电管理部门的行政许可。随着公众移动通信网的建设发展和应用拓展,原来的许多专用对讲机用户已转为公众移动通信终端用户,但专用对讲机与公众移动通信终端相比,因其具有接入速度快,具有群呼、组呼、呼叫优先级别设置、紧急呼叫等功能特点,目前仍广泛应用于公安、民航、铁路、水上等管理部门,以及建筑工程、物业管理、服务领域等企业单位。

由于专用对讲机频率数量多少的审批,是根据用户数量及用户的分组数量来决定的,因此专用对讲机的使用基本能保证各类呼叫的及时畅通,并在重大活动安全保障、防灾救灾、反恐维稳、应急处置、生产建设、交通运输、社区管理等的指挥调度上,发挥着不可或缺的重要作用。即使在公众移动通信迅速发展和普遍应用的今天,专用对讲机的业务用途和设备制造,仍然占有一定的应用范畴和市场份额。

数字对讲机的特点与优势

随着无线电通信技术的快速发展,模拟通信体制已逐渐被数字通信体制所替代。数字对讲机是采用数字技术进行设计的,即直接采用数字信号处理器,将语音信号数字化,并以数字编码形式调制到载波频率上进行传送的无线电通信设备。数字对讲机相比模拟对讲机而言,在频谱使用效率、信号质量、覆盖范围、系统功能等方面都优于模拟对讲机。模拟对讲机常用的信道间隔为25kHz或12.5kHz,而数字对讲机的信道间隔为12.5kHz或6.25kHz,在12.5kHz的信道间隔情况下,还可以采用时分复用技术或频分复用技术来提高频谱的使用效率。因此使用数字对讲机技术,可以大大提高频谱资源的使用效率。

同时,在模拟对讲机系统中,信号的传输质量与无线信号的传输路径损耗成正比,背景噪声如果侵入无线信道并与正常的信号叠加传输,则在接收端无法予以消除,严重影响通信效果。而使用数字通信技术,在接收端,只要信噪比达到一定指标,则信号可以无失真地复原,背景噪声可以完全消除。因此,数字对讲机对于背景噪声很大的场景如钢铁厂、集装箱码头、机场等,在覆盖边缘信号的无失真复原也就意味着有效覆盖范围的增大。

此外,数字对讲机能利用时分、码分等技术来实现话音、数据、图像等多媒体的信息传输,并具有强拆、编组、呼叫优先等分级功能,因而在安全调度等方面有着特定的优势及不可替代的作用。综上所述,数字对讲机技术是专用对讲机应用的发展方向。为此,国家工信部无线电管理机构在《关于150MHz、400MHz专用对讲机无线电频率管理和使用的通知》中,提出了我国专用对讲机向数字化发展的方向。

国外数字对讲机标准概况

无线电数字通信技术已是时下广泛应用的通信技术,但数字对讲机技术在国外也是近年来才发展起来的。模拟对讲机通信基带采用音频信号,因此能很容易实现互联互通,不同厂家连通不好的情况出现往往基于音频信号的传输效能。数字对讲机的互联互通则完全不同,它的特点就在于对基带信号的数字化处理,如果不同厂家使用不同的语音编解码方式、不同的信道编码格式,以及采用不同的信道交织和纠错方法,就会造成不同品牌的设备之间不能互相连通,为此需要形成相应的技术标准来实现互联。

目前,国外的数字常规对讲机标准主要有:欧洲的ETSI的DMR(Digital Mobile Radio)中规定的第II类设备和DPMR(Digital Private Mobile Radio)中的大功率标准、美国的P25标准和日本的NXDN标准等。其中,以欧洲的有关标准为例,ETSI DMR标准是在12.5kHz信道间隔下采用时分多址技术的数字对讲机标准,而ETSI DPMR标准是基于窄带(6.25kHz)的频分多址(FDMA)技术的数字对讲机标准。

DMR和DPMR标准的主要区别在于在一个12.5kHz的信道间隔下的复用方式的不同:DMR标准是在一个12.5kHz信道间隔下采用时分多址(TDMA)技术将信道划分二个逻辑子信道,每个子信道可传输一路话音信号或数据;DPMR则是采用窄带频分复用方式,在一个12.5kHz的信道间隔中采用频分多址(FDMA)技术,将信道划分为两个子信道,每个子信道带宽为6.25kHz,可传输一路话音或数据。用图解如下:

基于不同复用方式的ETSI DMR标准和ETSI DPMR标准的数字对讲机系统,是无法实现互联互通的;基于同一标准的不同厂家生产的数字对讲机,也并不一定能实现互联互通。因为不管是ETSI DMR标准还是ETSI DPMR标准,在标准中只定义了空中接口的物理层和数据链路层的内容,只要求在上述物理层和数据链路层要求能互联,而没有就语音编码、安全加密、网格管理等内容进行规定,从而造成不同厂家、不同品牌之间,不能像模拟对讲机那样完全互联互通。真正要解决上述问题,就要求每个数字对讲机标准都应有一个标准联盟,并对来自联盟成员所生产的数字对讲机之间进行互联互通的测试及颁发相应的证书。与此同时,我们可以看到,数字对讲机标准目前既有缺位,同时也给制造厂商之间和标准认同方面留下了很大的合作与发展空间。

nlc202309032144

国内发展契机

根据已经通过国家无线电管理机构型号核准的数字对讲机的情况来看,目前中国市场上的数字对讲机,主要是符合ETSI DMR和ETSI DPMR标准的产品。其中,摩托罗拉、日本建伍、日本艾可姆以及海能达公司占据了产品数量的绝大多数。摩托罗拉XiR系列和海能达PD系列产品是以ETSI DMR标准生产的,建伍的NXD系列和艾可姆的iDAS系列符合ETSI DPMR标准,而国内大部分中小型企业都还没有生产商用的数字对讲机,因此市场上可选择的数字对讲机产品非常少。同时,由于统一的数字对讲机标准尚未形成和完善,以及专用对讲机芯片的缺乏和产业规模的偏小,使数字对讲机的价格与模拟对讲机相比居高不下,也影响了一般用户使用数字对讲机的兴趣。

虽然目前模拟对讲机的生产和应用仍占绝对主流地位,但从数字对讲机技术发展和应用推广的前景来看,上述主要生产厂家都已着手生产从模拟对讲机到数字对讲机平滑过渡的模拟/数字兼容的对讲机产品,以便能逐步、平稳地促进模拟对讲机到数字对讲机的循序过渡。

为了促进我国数字对讲机在频率资源适应、设备应用推广、标准配套形成等方面的进程,2009年,国家工信部无线电管理机构发布的《关于150MHz 400MHz频段专用对讲机频率规划和使用管理有关事宜的通知》及所附的《150MHz、400MHz 频段数字对讲机设备无线射频技术指标》,开始在数字对讲机设备射频方面提出了相关的技术要求,规定了信道间隔为12.5kHz,每信道可安排一个或二个时隙,从而在频率参数指标上使ETSI DMR和ETSI DPMR标准的数字对讲机与之相适应,为中国数字对讲机的应用前景和产业发展提供了积极的指导和契机。作为改革开放的前沿,深圳特区已制定了地方性的《基于频分多址(FDMA)调频数字对讲机标准》,并开始作为深圳市数字对讲机系列指导性技术文件之一。

上海市专用对讲机频率规划及管理

根据《关于150MHz 400MHz频段专用对讲机频率规划和使用管理有关事宜的通知》的精神,上海市无线电管理局(以下简称“市无线电管理局”)认真梳理了全市对讲机应用现状,在预测专用对讲机频率中长期需求的基础上,从国家规定和上海市发展的实际出发,紧密结合上海地区专用对讲机的应用特点和场景模式,并充分考虑目前数字对讲机应用推广和产业链形成促进的趋势,完成了上海市150MHz、400MHz中长期专用对讲机频率的分配、指配与使用规划,以及过渡期内频率指配与使用的方案。主要包括以下几个方面:

新规划所划定 150MHz、400MHz频段专用对讲机频率的范围为137-167MHz及403-423.5MHz。本次规划两频段范围中的水上业务专用频率、业余无线电专用频段、国家规定的公众对讲机频率以及其他专项业使用频率不做调整,其管理仍按原文件执行。除上述两频段之外,其他原规定的专用对讲机使用频段不再列入本规划,并将按照国家有关规定另行调整。该频段中所涉及的水上业务、遇险业务、呼救业务、航空业务、铁路业务等已经明确的专用频点必须予以保护,任何个人或单位不得擅自使用。

新规划的150MHz、400MHz专用对讲机信道间隔由25kHz调整为12.5kHz,每信道可安排一或两个时隙;其中150MHz频段双频组网收发频率间隔为5.7MHz,400MHz频段双频组网收发频率间隔为10MHz。

根据上海市的实际情况,新规划将继续执行上海市对讲机公用频率的政策。上海市对讲机公用频率政策,是通过简化审批流程、减免部分频率占用费等措施,引导对通话质量要求不高的用户合法、经济、简便地使用对讲机,同时提高频率资源的使用效率。新规划中,原来的150MHz的上海市公用对讲机频率不变,新增416MHz-419MHz频段部分频率用于上海市公用对讲机频率;频率申请和台站设置的程序保持不变。原410MHz、411MHz和414MHz频段的上海市公用频率由于国家规定的调整,不再作为上海市对讲机公用频率,原使用用户要在2015年12月31日前完成频率的清退工作。

继续保留上海市室内覆盖频率管理和应用的政策。十多年的实践表明,对讲机楼宇室内覆盖系统适应上海这种特大型城市高层建筑物内的楼宇管理无线通信的需求,符合上海地区楼宇密集、无线通信量大、专用频率紧缺等特点。针对目前使用的室内频率组数量少、用户需求大、局部地区楼宇密集、系统间相互干扰日益突出的情况,新规划中在150MHz频段和400MHz频段各增加多组频率来缓解用频紧张的矛盾。同时,积极推进室内覆盖系统使用数字多信道等先进技术,以提高频率资源利用效率。

新规划在150MHz、400MHz频段各规划了一定数量的应急通信频率。应急通信频率仅限于应急通信使用,原则上不指配给任何单位使用。

现有的合法设台单位,所用频率不符合上海市专用对讲机频率规划方案的,在频率到期后由市无线电管理局重新进行频率指配,分期分批完成频率规划调整工作。为尽量避免过渡期内设台单位进行现有设备更换而造成损失,设台单位可向市无线电管理局提供现有设备购置日期、电台执照、频率占用费缴纳证明等必要信息,申请暂缓进行频率规划调整的,应不得晚于2015年底完成本次频率规划调整过渡工作。

积极推进用户单位逐步开始使用数字对讲机。从2012年1月1日起,新设置使用的150MHz、400MHz专用对讲机频率的无线电台站,将从新规划中指配频率,各设台单位应购置使用数字对讲机。如仍要求使用模拟对讲机,频率及台站使用期限可到2015年12月31日为止。超过此期限要求,市无线电管理局将收回频率并不再审批核发电台执照。

生产、进口、销售和设置使用各类无线电发射设备,均须取得国家工信部无线电管理机构核发的无线电发射设备型号核准证。自2011年1月1日起,国家已停止对该频段模拟对讲机设备的型号核准。

频率占用费收费标准按照现行文件执行。固定电台为1000元/每频点每站/年,移动台包括手持台和车载台为100元/台/年。

IMS咨询公司指出,直到2013年,世界范围内才会普及低成本的数字对讲机。也就是说,数字对讲机产业目前尚处于起步阶段,但它巨大的发展前景和应用潜力却不容小觑,值得各方共同期待。

上一篇:酒店保安部管理理念下一篇:XX乡中心小学教师代表大会落实情况