基于430单片机的频率计设计
430实现频率的检测
1 引言由于频率信号具有抗干扰性强、易于传输、测量准确度较高等优点,因此许多非频率量的传感信号都转换为频率量来进行测量和处理。
因此频率测量方法愈来愈引起关注和研究。
频率测量是测量和控制系统领域的最基本测量之一。
当今用的最多的测量信号频率的仪器是频率计,由于频率计在测量过程中需要一个时基信号作为测量信号频率的时基。
时基信号一般是由本机振荡电路发生的,尽管现在多用石英晶体振荡器,但是仍然不能保证时基信号的精度,因此频率计的测量精度也就成了问题。
传统的频率测量方法有两种[1]:一种是测频法,在一定时间间隔T内测出待测信号重复变化次数N,频率即为;另一种方法是测周法,在被测信号的一个周期内测出标准高频信号f的个数N,则被测频率。
本文介绍了一种测宽法[2],借助光电耦合原理,将交流信号转变成周期脉冲信号,通过捕获脉冲信号的下降沿,由定时器计数,通过二次计数的差值便能得到脉冲信号的周期,进而可以计算出所测交流信号的频率。
2 硬件电路设计硬件电路完成的任务是:(1)模拟电路部分的设计,其功能是进行信号的转化。
交流信号通过整流桥、光电耦合器等模拟器件便能得到周期脉冲信号。
(2)数字电路部分的设计,其功能是进行信号的检测。
MSP430单片机内部的16位定时器A具有脉冲捕获功能,能将脉冲信号的占空比检测出来。
图1为它的基本结构图。
图1 系统的基本结构2.1 模拟电路部分的设计图2为模拟部分原理。
下面主要阐述该电路的工作原理:图2模拟部分原理图考虑到交流信号中可能含有一定的直流信号,而直流信号会引起交流波形的上移或下移,这可能会导致原有交流信号没有零点,这就谈不上过零检测、周期脉冲了,因此要根据交流信号的实际情况,在交流信号的出口处用设个适当的电容,起到隔直的作用。
R1和R2是限流电阻,保护后面的稳压管、二极管、光电耦合器在额定功耗范围内。
由于这里的交流信号源选取的是220V市电正弦信号,所以R1和R2的阻值要比较大而且功率要比较大,该系统使用的是、1W的电阻。
基于MSP430G2553的数字频率计设计
基于MSP430G2553的数字频率计设计这是经过改进后的程序源码,较上次的设计相比,测频范围提高到3MHz,是因为将上次采用的IO口中断计数,改为两人TIMERB计数,通过TIMERA定时,TIMERB捕获计数,最终实现测频。
相关经验总结1、测频有两种方法:侧频法和测周法;本次设计是采用的timerA定时1S,P1.0口作为被测信号输入口,上升沿捕捉,每来一个上升沿进入IO中断,在中断服务函数里变量i 计数一次,当定时1S到时,读取变量i的值,则为被测频率;然后将数据传送到LCD和PC机显示;G2553有两个定时模块timerA和timerB,要特别注意它的寄存器的区别格式,默认的是TIMER A的。
中断向量也有两个,有优先级之分,timer0_A0 (应用于CCR0 优先级最高)timer0_A1(用于CCR1,CCR2和其他寄存器)。
2、串口通信有UART的异步通信与SPI的同步通信,也有两个通信模块,接收中断和发送中断,对应口位P1.1和P1.2。
3、MAX232在焊接时,外围的电容可以在0.1UF到10UF,没有影响,9阵的串口接线时也需要特别注意(见单片机书上179页)4、在最后的串口通信中会出现串口调试窗口中不仅显示需要的频率还会有其他的数据,这就需要传进BUFF(8位)中的数据长度不能有其他的,因此比如传一个字符串型的DA TA 进入BUFF,用到stringlen(),包含头文件sring.h。
5、重点是波特率的配置,特别是当分频系数为小数时:/***msp430g2553_LCD1602_Frequency_Detect*****grade:2010*date:2012.7.16*函数功能:测频率*管脚:P1.0作为外部频率的入口*LCD显示:P1.3 P1.5 --> RS EN P2.0--> RW P2.4->2.7 数据端口*/#include <msp430g2553.h>#include "lcd1602_4.h"unsigned long data;int i,j,h,m=0,n=0;char a[15]=" ";char *pa=a;double Freq=0; //频率测量结果存放变量double TA_OverflowCnt=0;//TA溢出次数存放变量void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDT//端口设置P1SEL |=BIT0; //允许其第二功能,作为TACLK输入,即待测输入<<----设为1外围模块接口P2SEL=0x00; //设置P2为通用I/OP1DIR &=~BIT0; //P1.0(TACLK)作为输入引脚P2DIR |= 0xf1; // Set P2 to output direction 1111 0001P1DIR |= 0x28; //0111 1000 p1.3 1.5 作为LCD使能复位控制端0010 1000//initial_lcd(); //LCD初始化initLCD();TA1CCR0=65535; //A1定时1sTA1CTL = TASSEL_2 + ID_3 + TACLR + MC_1 + TAIE; // TA1信号作为基准时钟选择SMCLK作为时钟选ACLK会不会稳定点?TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2; //外部信号作为A0时钟,捕获模式TACCTL0 = CCIE; //打开A0中断捕获(该句和下一句为中断必要语句)TA1CCTL0 = CCIE; //打开A1中断捕获_EINT(); //打开全局中断for (;;){_enable_interrupts();data=(int)data;a[0]=data/100000+0x30;a[1]=data/10000%10+0x30;a[2]=data/1000%10+0x30;a[3]=data/100%10+0x30;a[4]=data/10%10+0x30;a[5]=data%10+0x30;a[6]='H';a[7]='z';a[8]='\0';for(h=5000;h>0;h--){//LCD_Disp(0,0,"f=");onLcd(0,0,"f=");//delay(100);//LCD_Disp(1,0,pa);onLcd(1,0,pa);}_disable_interrupts();}}// TA interrupt service routine计数器A0溢出中断#pragma vector=TIMER0_A0_VECTOR__interrupt void Timer_R0(void){_disable_interrupts();TA_OverflowCnt++; //TA每次溢出,溢出次数变量+1TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2;//连续计数模式,选择外部时钟_enable_interrupts();}//定时器A1中断#pragma vector=TIMER1_A0_VECTOR__interrupt void Timer_R1(void){_disable_interrupts();data = (TA_OverflowCnt*65535 + TAR)*2.30012328;//读取上次TA计数值及溢出次数,计算频率TA_OverflowCnt=0; //将溢出次数置零TA1CTL = TASSEL_2 + ID_3 + TACLR + MC_1 + TAIE; //选择子系统时钟SMCLK 四分频增计数模式TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2; //选用外部时钟连续计数模式_enable_interrupts();}。
基于单片机的频率计的设计数字频率计
基于单片机的频率计的设计1绪论1.1研究背景及主要研究意义频率是电子技术领域永恒的话题,电子技术领域离不开频率,一旦离开频率,电子技术的发展是不可想象的,为了得到性能更好的电子系统,科研人员在不断的研究频率,CPU 就是用频率的高低来评价性能的好坏,可见,频率在电子系统中的重要性。
频率计乂称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,其最基本的工作原理为:当被测信号在特定的时间段T内的周期个数N时,则被测信号的频率£=1\!/「电子计数器是一种基础测量仪器,到目前为止已有三十多年的发展历史。
早期, 设计师们追求的目标主要是扩展测量范围,再加上提高测量精度、稳定度等,这些也是人们衡量电子计算机的技术水平,决定电子技术器价格高低的主要依据。
目前这些技术日臻完善,成熟。
应用现代技术可以轻松地将电子计数器的频率扩展到微波频段。
1.2数字频率计的发展现状随着科学技术的发展,用户对电子计数器也提出了新的要求。
对于低档产品要求使用操作方便,量程(足够)宽,可靠性高,价格低。
而对中高档产品,则要求有较高的分辨率,高精度,高稳定度,高测量速率;除通常通用计数器所具有的功能外,还要有数据处理功能,统计分析功能等等,或者包含电压测量等其他功能。
这些要求有的已经实现或者部分实现,但要真正地实现这些目标,对于生产厂家来说,还有许多工作要做,而不是表面看来似乎发展到头了。
由于微电子技术和计算机技术的发展,频率计都在不断地进步着,灵敏度不断提高,频率范围不断扩大,功能不断增加。
在测试通讯、微波器件或产品时,通常都市较复杂的信号,如含有复杂频率成分、调制的含有未知频率分量的、频率固定的变化的、纯净的或叠加有干扰的等等。
为了能正确的测量不同类型的信号,必须了解待测信号特性和各种频率测量仪器的性能。
微波技术器一般使用类型频谱分析仪的分频或混频电路,另外还包含多个时间基准、合成器、中频放大器等。
虽然所有的微波计数器都是用来完成技术任务的, 但各自厂家都有各自的一套复杂计数器的设计、使得不同型号的技术其性能和价格会有所差别,比如说一些计数器可以测量脉冲参数,并提供类似与频率分析仪的屏幕显示,对这些功能具有不同功能不同规格的众多仪器,我们应该视测试需要正确的选择以达到最经济和最佳的应用效果。
103636_基于MSP430G2553的频率计设计
数字式频率计一、设计概述在电子技术中,频率是最基本的参数之一,数字频率计具有精度高、使用方便、测量迅速、以及便于实现测量过程自动化等优点,是近代电子技术领域的重要工具之一,在许多领域得到广泛应用。
本系统以超低功耗MSP430G2553单片机为核心处理芯片来测量信号的频率,通过定时器A 采用计数法完成信号频率测量,并将被测频率值通过LCD12864液晶串行显示。
频率可测量范围在1Hz 到999MHz 之间。
如需要,范围可继续扩宽,频率计的误差在1%以内。
二、原理图基于MSP430G2553的频率计设计原理图如图1所示,通过串口方式液晶显示,只需配置单片机三个口线便可以实现对频率的测量。
其中待测频率信号从P1.0口输入,然后可以直接在液晶屏上显示。
三、引脚说明(一)MSP430G2553引脚功能说明由原理图可以看出,430单片机的最小系统用到1脚电源、16脚复位端、20脚接地端、配置P1.0口为待测信号输入端,P1.4为串行数据输出口,P1.5为串行时钟输出口,如表1所示。
图1 基于MSP430G2553频率计设计原理图表1 MSP430G2553引脚功能说明引脚序号引脚名称功能说明备注1 VCC 电源正2 P1.0 频率信号输入端6 P1.4 串行数据输出端7 P1.6 串行时钟输出端16 RST 复位脚20 GND 电源地(二)LCD12864引脚功能说明LCD12864液晶显示屏用到1、2脚,电源接口线,19、20脚背光电源接口线,15脚并行/串行接口选择,5脚串行数据口,6脚串行的同步时钟。
LCD12864引脚功能如表2所示。
表2 LCD12864接口说明引脚序号引脚名称功能说明备注1 VSS 模块的电源地2 VDD 模块的电源正端4 RS(CS) 并行指令/数据选择信号;串行片选信号5 R/W(SID) 并行读写选择信号;串行的数据口6 E(CLK) 并行使能信号;串行的同步时钟15 PSB PSB并/串行接口选择:H-并行,L-串行19 LED_A 背光源正极20 LED_K 背光源负极(0V)四、软件设计流程图系统软件设计包括初始化模块、中断模块和信号频率显示模块。
基于MSP430F5438A单片机测量频率的程序实例
基于MSP430F5438A单片机测量频率的程序实例基于MSP430F5438A单片机测量频率的程序实例/*****************************************************程序描述:利用Timer_A捕获脉冲宽度利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量程序用到了定时器A的CCI1A端口(MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,start,end,两个个变量来计算脉冲宽度*****************************************************/#include"msp430x14x.h"#include"lcd12864.h"uint start,end;uint width;//==用于存放脉宽==uint period;//==用于存放周期==uint frequency;//==用于存放频率==uint fy[7];//==用于存放频率显示数据==uint pd[7];//==用于存放周期显示数据==uint wh[6];//==用于存放脉宽显示数据==const unsigned char zhouqi[]={"周期为:(us) "};const unsigned char us[]={"us "};const unsigned char pinlv[]={"频率为:(Hz) "};const unsigned char hz[]={"HZ "};void process(void);//==函数声明==void delay();//==延时函数==void InitSys(); //==初始化时钟==/****************************************************主函数****************************************************/int main(void){WDTCTL = WDTPW + WDTHOLD;//==关狗==InitSys();//==初始化时钟,SMCLK,MCLK均为8M==P1DIR&=~BIT2;P1SEL = BIT2;//==设置P1.2端口为功能模块使用,即:做捕获源==TACTL = TASSEL_2+ID_3+TACLR+TAIE+MC1;//==定时器A时钟信号选择SMCLK,8分频,同时设置定时器A计数模式为连续增计模式==CCTL1 =CM_1+SCS+CAP+CCIE;//==输入上升沿捕获,CCI0A为捕获信号源==_EINT();//==开全局中断允许==Ini_Lcd();//==初始化液晶==Clear_GDRAM();//==清屏==Disp_HZ(0x80,zhouqi,8);Disp_HZ(0x88,pinlv,8);while(1){process();Write_Cmd(0x90);//==写地址==Write_Data(0x30+pd[6]);Write_Data(0x30+pd[5]);Write_Data(0x30+pd[4]);Write_Data(0x30+pd[3]);Write_Data(0x30+pd[2]);Write_Data(0x30+pd[1]);Write_Data(0x30+pd[0]);Write_Cmd(0x98);//==写地址==Write_Data(0x30+fy[6]);Write_Data(0x30+fy[5]);Write_Data(0x30+fy[4]);Write_Data(0x30+fy[3]);Write_Data(0x30+fy[2]);Write_Data(0x30+fy[1]);Write_Data(0x30+fy[0]);delay();}}/*****************************************************初始化时钟*****************************************************/ void InitSys(){unsigned int i;//--- 使用XT2振荡器---BCSCTL1&=~XT2OFF;//==打开XT2振荡器==do{IFG1 &=~OFIFG;//==清除振荡器失效标志==for(i = 0xFF; i > 0; i--);//==延时,等待XT2起振==}while((IFG1 & OFIFG)!= 0);//==判断XT2是否起振== BCSCTL2 =SELM_2+SELS;//==选择MCLK、SMCLK为XT2,8M== }/*****************************************************延时函数*****************************************************/void delay(){unsigned int i;unsigned int j=10;for(i=10;i>0;i--){while(j--);}}/***************************************************数据处理***************************************************/void process(void){while(end<start);< bdsfid="155" p=""></start);<>//while(endstart width = end-start;//==实际脉冲宽度的计算==period = 2* width;frequency=1000000/period;pd[6]=period/1000000;pd[5]=(period-1000000*pd[6])/100000;pd[4]=(period-1000000*pd[6]-100000*pd[5])/10000;pd[3]=(period-1000000*pd[6]-100000*pd[5]-10000*pd[4])/100 0;pd[2]=(period-1000000*pd[6]-100000*pd[5]-10000*pd[4]-1000*pd[3])/100;pd[1]=(period-1000000*pd[6]-100000*pd[5]-10000*pd[4]-100 0*pd[3]-100*pd[2])/10;pd[0]=period%10;fy[6]=frequency/1000000;fy[5]=(frequency-1000000*fy[6])/100000;fy[4]=(frequency-1000000*fy[6]-100000*fy[5])/10000;fy[3]=(frequency-1000000*fy[6]-100000*fy[5]-10000*fy[4])/10 00;fy[2]=(frequency-1000000*fy[6]-100000*fy[5]-10000*fy[4]-100 0*fy[3])/100;fy[1]=(frequency-1000000*fy[6]-100000*fy[5]-10000*fy[4]-100 0*fy[3]-100*fy[2])/10;fy[0]=frequency%10;}/***************************************************中断处理函数***************************************************/#pragma vector=TIMERA1_VECTOR //==定时器A中断处理==__interrupt void timer_a(void){switch(TAIV)//==向量查询=={case 2://==捕获中断==if(CCTL1&CM0)//==捕获到上升沿=={CCTL1=(CCTL1&(~CM0))|CM1;//==更变设置为下降沿触发== start=TAR;//==记录初始时间==}else if(CCTL1&CM1)//==捕获到下降沿=={CCTL1=(CCTL1&(~CM1))|CM0;//==更变设置为上升沿触发== end=TAR;//==用start,end,overflow计算脉冲宽度==}break;default: break; } }。
基于MSP430F149的频率计的设计
基于MSP430F149的频率计的设计/***本例程是利用定时器A的捕获功能,从P1.2引脚捕获被测量信号的上升沿,从而计算出其频率值,并显示在1602液晶屏上。
测量的频率范围为1Hz~100kHz,若频率在1KHz 以下,以Hz为单位显示整数部分,若频率大于1KHz,显示2位小数***/#include "msp430x14x.h"#include "LCD1602.c"unsigned int old_cap=0;//捕获的旧值unsigned long int period=0;//信号周期unsigned char TA_ov_num=0;//定时器计数溢出次数/*****系统时钟配置****/void init_MCLK(){ uchar i;WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗BCSCTL1&=~ XT2OFF; //msp430f149 选择XT2频率,一般为8MHz do//do这个循环不能删除,否则下载到硬件电路上没法实现测温功能{IFG1 &= ~OFIFG; //清除晶振失败标志for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振}while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?BCSCTL2 |= (SELM_2 + DIVM_0 + SELS+DIVS_0); // SMCK=MCLK=8MHz}/*********//****捕获方式设置****/void cap_init(){P1SEL|=BIT2; // 设置P1.2为第二功能引脚TA1P1DIR&=~BIT2; // 设置P1.2为输入引脚TACTL = TASSEL_2 + MC_2+ID_3+TAIE; //计数时钟为1MHz,计数方式为连续计数CCTL1 |= CAP+CM_1 + SCS + CCIS_0+ CCIE;// 上升沿捕获,同步,CCI0A(P1.2信号源),捕获功能,中断允许TACCR1=0;}/****频率计算及显示****/void display_freq(){uchar lcdbuf[8];unsigned long temp;temp=period;if(temp>1000)//表示频率小于1KHz{temp=1000000/temp;//定时器的计数时钟为1MHz,且以Hz为单位只显示整数部分lcdbuf[0]=temp/100+0x30;lcdbuf[1]=(temp%100)/10+0x30;lcdbuf[2]=temp%10+0x30;lcdbuf[3]='H';lcdbuf[4]='z';lcdbuf[5]=' ';lcdbuf[6]=' ';lcdbuf[7]=' ';if(lcdbuf[0]==0x30){if(lcdbuf[1]==0x30)LCD_Write_String(5,2,&lcdbuf[2]);elseLCD_Write_String(5,2,&lcdbuf[1]);}elseLCD_Write_String(5,2,&lcdbuf[0]);}else//表示频率大于1KHz{temp=10000/temp;//定时器的计数时钟为1MHz,以KHz为单位显示,且显示2位小数//1000/period再扩大10倍以显示小数lcdbuf[0]=temp/1000+0x30;lcdbuf[1]=(temp%1000)/100+0x30;lcdbuf[2]=(temp%1000)%100/10+0x30;lcdbuf[3]='.';lcdbuf[4]=(temp%1000)%10+0x30;;lcdbuf[5]='K';lcdbuf[6]='H';lcdbuf[7]='z';if(lcdbuf[0]==0x30){if(lcdbuf[1]==0x30){LCD_Write_String(5,2,&lcdbuf[2]);LCD_Write_String(11,2," ");}else{LCD_Write_String(5,2,&lcdbuf[1]);LCD_Write_String(12,2," ");}}elseLCD_Write_String(5,2,&lcdbuf[0]);}}/****主程序*******/void main(void){volatile unsigned int i;init_MCLK();//初始化系统时钟for (i=0; i<20000; i++); // 延时等待晶振稳定cap_init();//捕获初始化_EINT(); // 开总中断LCD_Init();//液晶初始化LCD_Write_String(0,1,"freq:");//从第一行第0列开始显示while(1){display_freq();//脉宽计算及显示}}#pragma vector=TIMERA1_VECTOR//捕获中断子程序__interrupt void TimerA1(void){switch(TAIV){case 2://比较/捕获模块1中断period=TA_ov_num*65536+TACCR1-old_cap;old_cap=TACCR1;TA_ov_num=0;break;case 4:break;//比较/捕获模块2中断未用case 10:TA_ov_num++;break;}}。
430单片机课程设计报告
430单片机课程设计报告(步进电机驱动和键盘输入程序)学号:班级:姓名:此处放学校Logo一、设计思想在步进电机驱动方面,利用课程设计实验板上2003驱动接口电路,通过编程完成步进电机驱动功能。
系统初始化后,通过定时器B产生脉冲通过MC1413对步进电机进行驱动,同时满足初始设定值是步进电机的转速为每转5秒钟,正转2圈之后再反转2圈,循环进行。
并加入键盘模块,可以修改步进电机的运行参数。
在键盘输入程序方面,我设定了三个模式,一个模式用来输入单个字符,一个模式用来输入字符串,一个模式用来修改步进电机的运行参数(左右转圈数、周期)。
二、参数计算1、步进电机驱动实验使用型号为XY39ST20的四相步进电机,采用四相八拍控制方式工作。
步进电机的转角和转动方向取决于各相中通电脉冲的个数和顺序。
控制相序如表。
当按A-AB-B-BC-C-CD-D-DA顺序通电时步进电机正转,反之按相反顺序通电时步进电机反转。
XY39ST20步进电机正转时控制顺序及数学模型步序 1 2 3 4 5 6 7 8控制位P7.7 1 1 1 0 0 0 0 0P7.6 0 0 1 1 1 0 0 0P7.5 0 0 0 0 1 1 1 0P7.4 1 0 0 0 0 0 1 1控制模型0x90 0x80 0xc0 0x40 0x60 0x20 0x30 0x10由于MSP430每一种器件中都含有低速晶体振荡器(LFXT1),默认工作在低频模式32768Hz,捕获/比较寄存器CCR0经常用来用作周期寄存器,因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况,计数器TAR可以增计数到CCR0的值,当计数器与CCR0的值相等(定时器值大于CCR0的值时),定时器值复位并从0重新开始计数。
所以初始化TACCR0=32768,计数一次的时间便是32768/32768=1s,初始化TBCCR0 =328,计数一次时间约为4s,程序由步进电机为四相八拍,所以每步为0.9°,一圈为360°,故转一圈需走360/0.9=400次的正转数组,用时4s。
基于单片机的频率计的设计
基于单片机的频率计的设计一、频率计的基本原理频率是指单位时间内信号周期性变化的次数。
频率计的基本原理就是在一定的时间间隔内对输入信号的脉冲个数进行计数,从而得到信号的频率。
常用的测量方法有直接测频法和间接测频法。
直接测频法是在给定的闸门时间内测量输入信号的脉冲个数,计算公式为:频率=脉冲个数/闸门时间。
这种方法适用于测量高频信号,但测量精度会受到闸门时间和计数误差的影响。
间接测频法是先测量信号的周期,然后通过倒数计算出频率。
其适用于测量低频信号,但测量速度较慢。
在实际设计中,通常会根据测量信号的频率范围选择合适的测量方法,或者结合两种方法来提高测量精度和范围。
二、系统硬件设计1、单片机选型在基于单片机的频率计设计中,单片机是核心控制部件。
常用的单片机有 51 系列、STM32 系列等。
选择单片机时需要考虑其性能、资源、价格等因素。
例如,对于测量精度和速度要求不高的应用,可以选择51 单片机;而对于复杂的系统,可能需要选择性能更强的 STM32 单片机。
2、信号输入电路为了将输入信号接入单片机,需要设计合适的信号输入电路。
一般需要对输入信号进行放大、整形等处理,使其成为标准的脉冲信号。
常见的整形电路可以使用施密特触发器来实现。
3、显示电路频率计的测量结果需要通过显示电路进行显示。
常用的显示器件有液晶显示屏(LCD)和数码管。
LCD 显示效果好,但驱动较为复杂;数码管显示简单直观,驱动相对容易。
4、时钟电路单片机需要一个稳定的时钟信号来保证其正常工作。
时钟电路可以采用外部晶振或内部振荡器,根据系统的精度和稳定性要求进行选择。
5、复位电路为了确保单片机在系统启动时能够正常初始化,需要设计复位电路。
复位电路可以采用上电复位和手动复位两种方式。
三、系统软件设计1、主程序流程系统启动后,首先进行初始化操作,包括设置单片机的工作模式、初始化显示、设置定时器等。
然后进入测量循环,等待输入信号,在给定的闸门时间内进行计数,并计算频率,最后将结果显示出来。
基于单片机MSP430F149的数字频率计设计
基于单片机MS P 4 3 0 F 1 4 9 的数字频率计设计
陈蓉 林凡强 毛若鹰 唐道波 成都 理工大学信息科学与技术学院 四川成都
6 1 0 0 5 9
【 擒 叠 】在电子技 术中, 频率是 最基 本的参数之一, 频率 的测 量就 捉 事 件 , 若 是 则 计 显得 十分重要, 本设计是 基于M S P 4 ¥ O 单片机的 智能频率测量 系统 。 实现 算 两 次 捕 捉 时 间差
的P 1 2 作为捕捉 信号 的输 入端 , 测 量该信
莱统初 始化 中断^口
l 开 断 总 中 断I < ; 件 中 断 :
\ —
1 , 前盲 在电子 技术 中, 频率是最 基本的 参数之一, 并且与许多电参量 的测 量方案 , 测 量结果都 有密切的 关系, 因此频率 测量在 科技领域 和实际应 用中的作用 一 日 益重要 , 在 广播、 电视 、 电讯 、 微 电子技 术等现代科 学领 域中有广泛 的应 用。 传统 的频率计采用组合电路和时序 电路 等大量硬件 电路构成, 产品不但体积大, 运行速 度慢, 而且在测低 频信号不宜采用。 本系统基 于MS P 4 3 0 F 1 4 9 单片机 的智能频率 测量 系统, 具 有精度 高、 使 用方便、 测量迅 速, 以及便于实现测量过 程 自 动化等优 点。 2 . 芯片 介绍 MS P 4 3 0 F 1 4 9 是 美国德仪 公司推 出的 系列 超低 功耗 控制 器中的一 种, 基 于真 正的 l 6 位R I S C C P U内核 , 1 6 位 总线结 构 , MS P 4 3 0 F 1 4 9 的 电源 电压 工作范 围1 . 8 3 . 3 V, 在1 MHz 时 钟条 件下 , 最大 工作 电流 仅有 3 5 0 u A, 具 有五种 低功 耗模 式 , 在 不同的工作模 式下, 工作 电流可 下降 到7 0 0 . 1 u A, 具有超低 功耗 。 Ms P 4 3 O F 1 4 9 MC U 片内包括6 O KB 闪存、 2 KB R AM、 1 2 位AD C 、 2 U S AR T 、 硬件乘法 器等多个高性能数 据转 换 器接 口, 既能作为带有 比较器的简便低 功耗 控制器, 又能作 为完整的
基于MSP430F449的数字频率计设计
毒写 虿
结 构 ,具 有 丰 富 的 片 内 外 设和 大 容 量 的 片 内工 作 寄 存 器 和 存 储器 ,性
能 价 格 比很 高 。它 的特 点 包 括 :
垂 耄
南 ≈ ?、 、 习 -, f
蓦
耗 ; 一 _超 低 的 功_:能够 在 一 _ 。 、
MCpn接 地 时 为 2 6分 频 。有 较高 i 5
拳
硬 件 设 计
图 1 信 号 的前 端 处 理 及 分 频 为 设 计 。 输 出 后 的 信 号 再 经 两 片 S 4 3 0 频 , N7 HC3 0 高 N7 HC 9 分 S 4 9是
:乏
£
的灵 敏 度 和 较 强 的谐 波 抑 制 能力 。
新 颖 的 、全 自动 的数 显测 量 射 频 频 位 定 时器 ( P 3 F 4 是 ls TA、T ,串 口0、1 B) ,液 MS 4 0 4 9 F ah型 器 件 ,片 内
率 的设 计方 案 。
晶 显示 驱 动 器 ,6个 8 的 I/ 0端 有调 试 接 口和 电可 擦 写 的 F a h存 位 ls 口 ,  ̄ ADC( 高 采样 - 0 k ) 储 器 ,可 以先 下 载 程 序 到 Fah内 , 1 2 最 ! 0 Hz  ̄2 l s
翠
弓
主 要 器 件 介 绍
MSP 3 F 4 4 0 4 9单 片 机
M S 4 0 4 9采用 1 P 3F 4 6位 R S IC
等 。 丰 富 的片 上 外 设 可 以很 方便 地 再 在 器 件 内通 过软 件 控 制程 序 的运 构 建 一 个 较 为 完 整 的 系 统 。另 外 , 行 , T 由J AG接 口读 取 片 内信 息供 设
基于430单片机的简易频率计设计
基于430单片机的简易频率计设计曹浩彤;刘艳【期刊名称】《微型机与应用》【年(卷),期】2014(000)021【摘要】为精确测量信号的频率、周期等电参数,设计了一种以 MSP430F149单片机为控制核心,外接1602显示屏的简易频率计,可以用于测量信号的频率、周期以及方波的占空比和脉宽时间。
该频率计利用单片机的定时器 A捕捉相邻上升、下降沿。
通过处理对应时刻的 TAR值,计算得出频率、周期等电参量,并在1602上显示。
经过测试,该系统简洁方便、功能多样,频率测量误差低于0.1%,达到设计的指标,信号频率的测量范围为1 Hz~1 MHz,可用于测量小信号,能够满足实际要求,可投入实际测量中使用。
%To realize the accurate measurement of frequency and other electrical parameters of a signal, we design a simple frequency counter which is based on MSP430F149 as the core and 1602 LCD screen. It can be used to measure the frequency and period of signal, the duty ratio and pulse width of square wave which is to be measured. This frequency counter uses the timer A of the SCM, catches the rising edge and the falling edge which are near. By calculating the corresponding TAR results, we can get the frequency, period and other electrical parameters and show the results on the 1602 screen. After test, frequency is under 0.1%. This meets the index of the design. The range of the frequency is 1 Hz~1 MHz. The system can be used to measure smallsignal. The frequency can meet the actual requirements and it can be used in the actual measurement.【总页数】3页(P92-94)【作者】曹浩彤;刘艳【作者单位】南京邮电大学海外教育学院,江苏南京 210023;南京邮电大学电子科学与工程学院,江苏南京 210023【正文语种】中文【中图分类】TM935.13【相关文献】1.基于单片机MSP430F149的数字频率计设计 [J], 陈蓉;林凡强;毛若鹰;唐道波2.基于MSP430单片机频率计数器的设计与实现 [J], 丰励;3.基于51单片机简易数字频率计的设计与实现 [J], 赵银玲;4.基于MSP430单片机的高精度数字频率计设计 [J], 李联炳;马晓婷5.基于单片机的简易频率计设计 [J], 廖小芳因版权原因,仅展示原文概要,查看原文内容请购买。
基于430单片机的频率计设计
基于430单片机的频率计设计(0—10MHz)一、单元电路(含传感器选型和电路)的设计与说明1.单片机(处理器)模块2.系统电源模块3.JTAG在线调试接口4.LCD显示器模块5.频率信号入口二、监控软件设计与说明(1)程序流程图(2)主程序/************基于430单片机频率计程序**************************************** 说明:本程序实现了超低功耗的频率测量,测量范围:0~429MHz,分辨率:0.1Hz,完全满足0~10MHz的范围要求,10s产生一次定时中断,并检测在此时间内的脉冲个数Freq=TA_OverflowerCnt*65536 + TAR******************************************************************************/ #include "msp430x42x.h"#include "LCD_Display.h"unsigned long int Freq; //频率测量结果存放变量unsigned int TA_OverflowerCnt;//TA溢出次数存放变量unsigned char Timer5=0;//BT定时时基计时用全局变量,实现倍数次定时时基void main( void ){WDTCTL = WDTPW + WDTHOLD;//停止看门狗FLL_CTL0 |=XCAP18PF; //配置晶振电容P1DIR &=~BIT5; //P1.5(TACLK)作为输入引脚P1SEL |=BIT5; //允许其第二功能,作为TACLK输入BTCTL =BTDIV+BT_fCLK2_DIV256; //BasicTimer设为2s一次中断IE2 |=BTIE; //允许BasicTimer中断_EINT(); //允许总中断LCD_Init(); //初始化LCDfor(;;){LPM3; //休眠,等待被BasicTimer中断唤醒,10s唤醒一次/****************以下代码每10秒运行一次********************************/ Freq=TA_OverflowerCnt*65536 + TAR; //读取上次TA计数值及溢出次数,计算频率TA_OverflowerCnt=0; //溢出次数清零TACTL=TASSEL_0 + MC_2 +TAIE + TACLR; //TA清零并重新开始计数if(Freq>=10000000)//MHz级别的显示(7个0),1S周期内对应6个0才是MHz,故10s//对应7个{Freq=Freq/1000000;//省略了先除以10,再乘以10的算术操作,故此处只除以6个0 LCD_DisplayDecimal(Freq,1);LCD_InsertChar(mm);LCD_InsertChar(HH);LCD_InsertChar(ZZ);}else if(Freq>=10000) //KHz级别显示(4个0),1S周期内对应3个0才是KHz,故10s//对应4个{Freq=Freq/1000;//省略了先除以10,再乘以10的算术操作,故此处只除以3个0LCD_DisplayDecimal(Freq,1);LCD_InsertChar(KK);LCD_InsertChar(HH);LCD_InsertChar(ZZ);}else //Hz级别显示{Freq=Freq*10;//显示一位小数之前需对该值扩大10倍LCD_DisplayDecimal(Freq,1);LCD_InsertChar(HH);LCD_InsertChar(ZZ);}}}#pragma vector = BASICTIMER_VECTOR__interrupt void BT_ISR(void) //2s中断一次(由BasicTimer产生),每10s唤醒一次CPU {Timer5++;if(Timer5>=5) Timer5=0;if(Timer5==0)__low_power_mode_off_on_exit();//唤醒CPU}#pragma vector = TIMERA1_VECTOR__interrupt void TA_ISR(void) //为测量大于65536Hz的频率,计数溢出中断个数{switch(TAIV){case 2: break;case 4: break;case 10: TA_OverflowerCnt++;//TA每次溢出,溢出次数变量+1break;}}(3)LCD显示模块函数/***********MSP430F4XX系列LCD显示通用驱动程序**************************** 说明:该驱动程序库包含了常用的LCD显示功能,如显示数字、字母等可以作为各种程序的底层驱动使用。
基于MSP430的低频频率测量计
基于MSP430的低频频率测量计作者:陈文奇丛超来源:《无线互联科技》2013年第07期摘要:本文主要通过运用单片机定时器的捕获功能,采用测量脉冲周期的方法,通过相应计算,测量出35-54Hz低频信号的频率,误差范围控制在0.6%以内。
关键词:MSP430单片机;捕获;低频测量随着电子技术的飞速发展,单片机的功能也越来越丰富。
由于它具有高性能,价格低,体积小等优势,已经被广泛的运用于各种仪器仪表系统中。
1 测量原理本设计所用单片机为TI公司生产的MSP430F149,它是一种超低功耗处理器,常用于便携式仪器仪表的设计中。
它具有两个定时器,即定时器A和定时器B,均有强大的中断功能。
通过设置相应的寄存器,使定时器A工作在上升沿捕获模式,且计数方式为增计数模式,就能测量出信号周期。
具体方法是:在第一次上升沿到来时,定时器A开始计数,第二次上升沿到来时,停止计数。
定时器A的计数值X就是两个上升沿之间的时间值。
若定时器计数的时钟选择为3.6864MHz,则测量到的信号周期T为那么对应的频率f为2 系统设计2.1 硬件设计如图1所示,为MSP430单片机的最小系统,外部时钟选择3.6864MHz。
引脚13作为低频信号的输入口。
由于MSP430的数字信号为3.3V逻辑,因此外部进入的低频信号也应使3.3V逻辑。
若高电平超过这个值,则有可能烧坏单片机。
2.2 软件设计在软件设计过程中,需要注意的是定时器A工作时钟的选择。
若选择的时钟太慢,而所测脉冲频率太快,就会导致漏掉脉冲,导致测试结果出现错误。
因此时钟的选择就显得格外重要。
同时,考虑到计数器A最大计数为65535,因此运用此方法能测量的最大的信号周期TMAX为超过此周期的低频信号测不能用此方法测量。
软件设计流程如图2所示。
3 实验结果及结论实验采用信号发生器输出相应频率到I/O口P1.2,高电平为+3V,低电平为0V。
从实验结果可以看出,所测低频信号与理论值的误差均在0.6%以内,精确度比较高。
频率计(430单片机)
mp430定时器转的一些文章:--------------------------MSP430的定时器中有比较捕获的概念,刚刚接触非常生疏。
看了半天终于清楚:比较模式:这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx 置一,同时产生中断。
若中断允许未开启则只将中断标志位CCIFGx置一。
例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。
如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断处理。
捕获模式:利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。
捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。
完成捕获后相应的捕获标志位CCIFGx置一捕获模式的应用:利用捕获源的来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx 中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。
如测量时间、频率、速度等例子:利用两次捕获的值来测量脉冲的宽度。
或捕获选择任意沿,CCISx=”11“(输入选择VCC),这样即当VCC与GND发生切换时产生捕获条件结合利用:异步通讯同时应用比较模式和捕获模式来实现UART异步通信。
即利用定时器的比较模式来模拟通讯时序的波特率来发送数据,同时采用捕获模式来接收数据,并及时转换比较模式来选定调整通信的接受波特率,达到几首一个字节的目的----------------------------------------利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。
本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。
一种基于MSP430单片机的交流频率检测系统
一种基于MSP430单片机的交流频率检测系统本文提出了一种交流信号过零检测的电路,即捕获交流信号的零点,并借助MSP430单片机内部的16位定时器A(Timer A)的脉冲捕获功能便能得到该交流信号的周期进而能得到它的频率。
系统的硬件部分主要由MSP430单片机以及整流桥、光电耦合器、三级管等器件构成;而软件部分主要是基于MSP430单片机的C语言程序,包括系统的初始化、定时器的设置等。
该系统的实验结果和电路仿真吻合较好,具有一定的应用价值。
1 引言由于频率信号具有抗干扰性强、易于传输、测量准确度较高等优点,因此许多非频率量的传感信号都转换为频率量来进行测量和处理。
因此频率测量方法愈来愈引起关注和研究。
频率测量是测量和控制系统领域的最基本测量之一。
当今用的最多的测量信号频率的仪器是频率计,由于频率计在测量过程中需要一个时基信号作为测量信号频率的时基。
时基信号一般是由本机振荡电路发生的,尽管现在多用石英晶体振荡器,但是仍然不能保证时基信号的精度,因此频率计的测量精度也就成了问题。
传统的频率测量方法有两种[1]:一种是测频法,在一定时间间隔T内测出待测信号重复变化次数N,频率即为;另一种方法是测周法,在被测信号的一个周期内测出标准高频信号f的个数N,则被测频率。
本文介绍了一种测宽法[2],借助光电耦合原理,将交流信号转变成周期脉冲信号,通过捕获脉冲信号的下降沿,由定时器计数,通过二次计数的差值便能得到脉冲信号的周期,进而可以计算出所测交流信号的频率。
2 硬件电路设计硬件电路完成的任务是:(1)模拟电路部分的设计,其功能是进行信号的转化。
交流信号通过整流桥、光电耦合器等模拟器件便能得到周期脉冲信号。
(2)数字电路部分的设计,其功能是进行信号的检测。
MSP430单片机内部的16位定时器A具有脉冲捕获功能,能将脉冲信号的占空比检测出来。
图1为它的基本结构图。
图1 系统的基本结构2.1 模拟电路部分的设计图2为模拟部分原理。
基于MSP430F149的频率计设计
预 置闸 门
实际闸门
艏
’ ’ ’。 。 。。 。 。。 。 。
I ‘。 。。。 ‘。‘。 ‘。¨
.
本地 时基
—
_- f. - _ ] - 1 n
图 2 等精度测 量的 原理
蔫
为待测信号的
计数器B 的计数结果为 设 为实际闸门时间, 为本地时基 的周期 , 周期 , 为待测信号的频率 , 则有 :
维普资讯
总第 2 9卷
第 2期
时 间 频 率 学 报
J u n l f mea d F e u n y o r a o Ti n r q e e
V 12 0 _ . 9NO 2 . De . 0 6 c. 2 0
20 0 6年 l 2月
1 0。由此可得
:
垒
: :l ±0
M r +AMT M r M 0 o 0
T = J = M + 一 V o +  ̄ ' 2
—
和
赤
维普资讯
l8 1
时间 频 率 学报
总2 9卷
在本设计 中, 取待测信号的频率 为
,
这里将 一 对应于计数误差 △ =± ? 1
的结果佣 给微控制器进行运算 , 即可求得待测信号的频率 。由于闸门信号 S 的时 口 间是被测信号周期 的整数倍 ,被测信号的计数值 存在± 的计数误差 ,测量结果的相对 1
收稿 日 : 06 0— 7 期 20 -8 1;修回日 : 06 1 8 期 20 — l
维普资讯
沿到来才开启 ,而当预置门信号为低电平时,实际闸门也没有立 即关闭 , 而是要等到被测 信号的上升沿到来才关 闭。因此 , 实际闸门时间为被测信号周期 的整数倍 , 待测信号 的计 数无误差。 但对于本地时基信号 ,因为没有用来和预置门同步 , 以存在A ±1 所 M= 的计 数误差。
基于单片机的简易频率计设计
基于单片机的简易频率计设计频率是电信号的基本参数之一,频率的测量在科学研究、工程应用、工业控制等领域具有重要价值。
单片机作为一种微型计算机,具有高性能、低功耗、易于编程等优点,因此,基于单片机的简易频率计设计具有实际的应用价值。
系统架构:基于单片机的简易频率计主要由单片机、信号源、频率计和显示模块组成。
其中,单片机是整个系统的核心,控制信号源的启动和停止,读取频率计的数据,并通过显示模块显示测量结果。
信号源:信号源是用来产生需要测量的交流信号。
一般可以使用函数发生器或信号发生器作为信号源。
频率计:频率计是用来测量交流信号的频率。
可以使用专用的频率计芯片,也可以使用单片机内部的计数器功能。
显示模块:显示模块用于显示测量结果。
可以使用LED显示屏、液晶显示屏等。
主程序:主程序主要负责控制整个系统的运行。
主程序需要初始化单片机和各个模块。
然后,主程序需要从频率计读取频率数据,并计算出频率值。
主程序需要将测量结果显示在显示模块上。
中断服务程序:中断服务程序用于处理外部中断事件,例如信号源的启动和停止。
当外部中断触发时,中断服务程序会执行相应的操作,例如启动或停止测量过程。
定时器程序:定时器程序用于控制测量周期和读取频率计数据的时间间隔。
定时器程序需要在主程序的控制下启动和停止。
测试环境:在实验室环境下进行测试,使用函数发生器作为信号源,输出不同频率的交流信号。
测试方法:将设计的频率计连接到函数发生器的输出端,启动频率计进行测量,并观察显示模块上的测量结果。
验证结果:经过测试和验证,基于单片机的简易频率计能够准确测量不同频率的交流信号,测量结果稳定可靠。
本文设计了一种基于单片机的简易频率计,该频率计具有结构简单、成本低、易于实现等优点。
通过测试和验证,该频率计能够准确测量不同频率的交流信号,具有实际的应用价值。
本设计可以为科学研究、工程应用、工业控制等领域提供一种实用的测量工具。
频率计是一种用于测量信号频率的电子仪器,被广泛应用于各种领域。
基于MSP430单片机和DDS技术的频率特性测试仪的设计
、 . col Eetcl n nom t nEnier g,in s ece nvrt f Tcnl y C ag. uJa gu23 0 , hn ] 2 Sh o o l r a dI r ai f ci a f o gnei J gu Tahr U i syo eh o g , hn zo ins 10 1 C ia n a s ei o h
E AC 7 1 ;3 0 E C:2 0 7 1 G
d i1 . 9 9 j i n 1 0 - 4 0 2 1 . 5 0 0 o :0 3 6 / .s .0 5 9 9 . 0 1 0 .1 s
基于 M P3 单片机和 D S S40 D 技术的频率特性测试仪的设计
刘艳 云 . 朱 雷
Ab t a t T v r o h e c e c e ft a eta i o a n lg fe u n y c a a t r t e tri e p n ie i — sr c : o o e c me t e d f in is o t h dt n la a o q e c h r ce i i t se s x e s ,n i h t r i r sc v c n e i n o o e ae a d i e o ma c n e ss s e t l e e au e d f , i l e u n y c a a trs c o v n e tt p r t n t p r r n e i d x i u c p i et t mp r t r r t a s s f b o i mpe f q e c h r c e i i r t t s ri d s n d wi h o i ain o e t s e i e t t e c mb n t f DDS a d MS 4 0 MC b sn ii l tc n lg . h y t m a e g h o n P 3 U y u i g dg t e h oo y T e s s a e hs f e d y h ma - c i e i tra ewi d lrd sg o c p , n e i i a e u n y a d se au f r q e c i r n l u n ma h n n e c t mo u a e in c n e t a d t t l r q e c n tp v l eo e u n y f h h n i f f
基于msp430的等精度频率计
基于MSP430G2553的等精度频率计电气410 马唯焜2140401286摘要:本系统以超低功耗MSP430G2553单片机为核心处理芯片来测量信号的频率,通过定时器A0和A1以及A1中的捕获器,采用等精度法完成信号频率测量,测量精度在全频域内相同,实测范围在1Hz到208.2KHz之间。
一、方案论证1.方案分析方案一:使用测频法进行频率测量。
测频法即在限定的时间内(如1s)检测到来脉冲的个数,然后计算出1s内的脉冲数即为待测信号的频率。
测高频信号时较为准确,测低频和中频信号时误差较大。
方案二:使用测周法进行频率测量。
测周法即记录一个脉冲的相邻两个上升沿到来的时刻,相减得到该脉冲的周期,由此计算出其频率。
测低频信号时较为准确,测中频信号和高频信号误差较大。
方案三:使用等精度法进行频率测量。
等精度法即开启有限定时间长度的预闸门信号后,在待测信号的第一个上升沿同时分别开启对待测信号和对基准时钟的计数器;预阀门信号到时关闭后,在待测信号的第一个上升沿同时分别关闭对待测信号和基准时钟的计数器,之后通过计数值计算得出信号频率。
等精度法理论上在全频域内有相同的测量误差,且误差仅与预闸门信号时间长度和基准信号频率有关,故测频范围较广时更为适合。
考虑到本设计要求测频范围较广,以及测频法和测周法在中频区的误差不可避免,最终选用等精度法进行测量。
2.总体方案设计等精度法测量的实际闸门时间T cp恰好是待测信号周期的整数倍,能消除待测信号计数器±1个脉冲误差的影响,在整个量程内维持相同的测量精度。
本项目中,分别使用MSP430G2553的内置定时器TimerA0定时1s作为预闸门信号,定时器TimerA1作为基准时钟的计数器,捕获器TACCR1上升沿捕获作为待测信号的计数器。
测量原理如图示,两个计数器均在预闸门信号开启后的第一个上升沿启动,在预闸门信号关闭后的第一个上升沿停止,实际闸门时间T cp与预闸门时间T GR不完全相等但相差不超过一个待测信号周期。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于430单片机的频率计设计测控技术与仪器专业课程设计报告班级:040852 姓名:姬树明学号:04085144 起始时间:2012-02-27 --- 2012-03-11课程设计题目:基于51单片机频率计的设计(0—10MHz)一、对题目的认识和理解1 引言本设计综合考虑了频率测量精度和测量反应时间的要求。
例如当要求频率测量结果为3位有效数字,这时如果待测信号的频率为1 Hz,则计数闸门宽度必须大于1 000 s。
为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法:(1)当待测信号的频率>100 Hz时,定时/计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,计数闸门宽度>1 s时,即可满足频率测量结果为3位有效数字;(2)当待测信号的频率<100 Hz时,定时/计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。
这时用方波作计数闸门,当待测信号的频率=100 Hz,使用12 MHz时钟时的最小计数值为10 000,完全满足测量精度的要求。
二、本频率计的设计以AT89C51单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。
单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz 时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。
在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12 MHz时钟时,最大计数速率为500 kHz)。
定时/计数器的工作由运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。
三、2频率计的量程自动切换使用定时方法实现频率测量时,外部的待测信号通过频率计的预处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/计数器的输入脚。
工作高电平是否加至定时/计数器的输入脚;当判定高电平加至定时/计数器的输入脚,运行控制位TR置1,启动定时/计数器对单片机的机器周期的计数,同时检测方波高电平是否结束;当判定高电平结束时TR清0,停止计数,然后从计数寄存器读出测量数据。
这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。
四、使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器的计数源,利用软件延时程序实现计数闸门。
频率计的工作过程为:定时/计数器的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;运行软件延时程序,同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数。
从计数寄存器读出测量数据,测量数据在完成数据处理后,由显示电路显示测量结果。
测量结果的显示格式采用科学计数法,即有效数字乘以10为底的幂。
这里设计的频率计用5位数码管显示测量结果:前3位为测量结果的有效数字;第4位为指数的符号;第5位为指数的值。
采用这种显示格式既保证了测量结果的显示精度,又保证了测量结果的显示范围(0.100 Hz~9.99 M Hz)。
频率计测量量程自动转换的过程由频率计测量量程的高端开始。
由于只显示3位有效数字,测量量程的高端计数闸门不需要太宽,例如在进入计数器的信号频率范围在10.0~99.9 kHz,计数闸门宽度为10 ms 即可。
频率计开始工作时使用计数方法实现频率测量,并使计数闸门宽度为最窄,完成测量后判断测量结果是否具有3位有效数字,如果成立,将结果送去显示,完成测量工作;否则将计数闸门宽度扩大10倍,继续进行测量判断,直到计数闸门宽度达到1s,这时对应的进入单片机的待测信号频率范围为100~999 Hz。
如果测量结果仍不具有3位有效数字,频率计则使用定时方法实现频率测量。
定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。
无论采用何种方式,只要完成一次测量,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。
二、方案论证与比较2.1、脉冲数定时测频法(M法):此法是记录在确定时间 Tc内待测信号的脉冲个数 Mx ,则待测频率为: Fx= Mx/ Tc 显然,时间 Tc 为准确值,测量的精度主要取决于计数 Mx 的误差。
其特点在于:测量方法简单;测量精度与待测信号频率和门控时间有关 ,当待测信号频率较低时 ,误差较大。
2.2、脉冲周期测频法(T 法):此法是在待测信号的一个周期Tx内,记录标准频率信号变化次数Mo。
这种方法测出的频率是:Fx = Mo/ Tx此法的特点是低频检测时精度高,但当高频检测时误差较大。
2.3、脉冲数倍频测频法(AM 法):此法是为克服M 法在低频测量时精度不高的缺陷发展起来的。
通过A 倍频,把待测信号频率放大A倍,以提高测量精度。
其待测频率为:Fx= Mx/ ATo 其特点是待测信号脉冲间隔减小,间隔误差降低;精度比M 法高 A倍,但控制电路较复杂。
2.4、脉冲数分频测频法(AT法) :此法是为了提高T法高频测量时的精度形成的。
由于T法测量时要求待测信号的周期不能太短,所以可通过A分频使待测信号的周期扩大A倍,所测频率为: Fx = AMo/ Tx其特点是高频测量精度比 T法高A倍;但控制电路也较复杂。
2.5、脉冲平均周期测频法(M/ T法) :此法是在闸门时间Tc内,同时用两个计数器分别记录待测信号的脉冲数Mx和标准信号的脉冲数Mo。
若标准信号的频率为Fo ,则待测信号频率为: Fx = FoMx/ MoM/ T法在测高频时精度较高;但在测低频时精度较低。
2.6、多周期同步测频法:是由闸门时间Tc与同步门控时间Td 共同控制计数器计数的一种测量方法,待测信号频率与M/ T 法相同。
此法的优点是,闸门时间与被测信号同步,消除了对被测信号计数产生的±1 个字误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。
设计方案确定:电路整体框图如图所示,被测信号经过放大电路,整形电路从而将其转换成同频率的脉动信号,送入计数器计数,闸门的一个输入信号是秒脉冲发出的标准脉冲信号,秒脉冲信号源含有个高稳定的石英振荡器和一个多级分频器共同决定,其时间是相当精确的,计数器显示电路采用液晶显示。
三,信号预处理电路信号预处理电路如图所示,他由4级电路构成。
第1级为零偏置放大器,当输入信号为零或者为负电压时,三极管截止,输出高电平;当输入信号为正电压时,三极管导通,输出电压随着输入电压的上升而下降。
零偏置放大器可把正负交替波形变换成单向脉冲,这使得频率计既可以测量脉冲信号的频率,也可以测量正弦波信号的频率。
放大器的放大能力实现了对小信号的测量,本电路可以测量幅度≥0.5 V的正弦波或脉冲波待测信号。
三极管应采用开关三极管以保证放大器具有良好的高频响应。
第2级采用带施密特触发器的反相器7414,他用于把放大器生成的单向脉冲变换成与TTL/CMOS电平相兼容的方波。
第3级采用十进制同步计数器74160,第2级输出的方波加到74160的CLK,当从74160的TC输出可实现10分频(多个74160的级连可以进一步扩展测频范围)。
第4级同样采用十进制同步计数器74160,第3级输出的方波加到他的CLK,当从他的Q0输出既可实现2分频,且其输出为对称方波,方波宽度等于待测信号的周期,从而为测量信号周期提供基础。
3.3、钳为电路因为输入到单片机的电压必须为0—5V之间,所以使用限幅。
之后再输入到51单片机中。
四、监控软件设计与说明如图所示,通过一个按键启动测量,先用直接测频率法测量待测信号的频率,如果大于等于1Mhz,则为实测频率并显示,如果小于1Mhz,那么改用测周期法测量周期,并转换为频率,最后显示,一次测量完毕后自动返回开始下一次测量。
系统软件设计:频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。
测量初始化模块设置堆栈指针(SP)、工作寄存器、中断控制和定时/计数器的工作方式。
定时/计数器的工作首先被设置为计数器方式,即用来测量信号频率。
首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。
计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。
计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。
判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。
当上述测量判断过程直到计数闸门宽度达到1 s(对应的频率测量范围为100~999 Hz)时测量结果仍不具有3位有效数字,频率计则使用定时方法测量待测信号的周期。
定时/计数器的工作被设置为定时器方式,定时/计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位TR清0,停止计数。
16位定时/计数器的最高计数值为65 535,当待测信号的频率较低时,定时/计数器将发生溢出。
产生溢出时,程序进入定时器中断服务程序,对溢出次数进行计数。
待测信号的周期由3个字节组成:定时/计数器溢出次数、定时/计数器的高8位和低8位。
信号的频率f与信号的周期T之间的关系为:f =1/T完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。
为提高运算精度,采用浮点数算术运算。
浮点数由3个字节组成:第1字节最高位为数符,其余7位为阶码;第2字节为尾数的高字节;第3字节为尾数的低字节。
待测信号周期的3个字节定点数通过截取高16位、设置数符和计算阶码转换为上述格式的浮点数。
然后浮点数算术运算对其进行处理,获得用浮点数格式表达的信号频率值。
再通过浮点数到BCD码转换模块把用浮点数格式表达的信号频率值变换成本频率计的显示格式,送到显示模块显示待测信号的频率值。
完成显示后,频率计都开始下一次信号的频率测量。
系统软件设计采用模块化设计方法。
整个系统由初始化模块、显示模块和信号频率频率测量模块等各种功能模块组成。
上电后,进入系统初始化模块,系统软件开始运行。
在执行过程中,根据运行流程分别调用各个功能模块完成频率测量、量程自动切换、周期测量和测量结果显示。