基于单片机的频率测试系统及使用上述系统的测试方法

文档序号:5956327阅读:143来源:国知局
专利名称:基于单片机的频率测试系统及使用上述系统的测试方法
技术领域
本发明涉及一种基于单片机的频率测试系统及使用上述系统的测试方法,属于频率测量技术领域。
背景技术
在工控系统中,经常需要测量各种信号的频率。然而,现有的复杂频率计尽管测试范围宽、精度高,但是价格昂贵;而各种简易频率计具有明显的不足,主要是其采取了以下的测试方法在Is时间内,使用计数器对测试信号进行计数,则计数器的计数结果就是信号的频率。这种测试方法尽管易于实现,但却难以测试IHz以下的信号频率。因而,现有的简易频率计只能测试IHz以上的信号频率。

发明内容
本发明的目的是提供基于单片机的频率测试系统及使用上述系统的测试方法,以解决现有的频率计无法测试IHz以下信号频率的不足。本发明为解决上述技术问题还提供了一种基于单片机频率测试系统,该频率测试系统包括波形产生芯片、计数器、单片机和显示装置,波形产生芯片的输出端与计数器的时钟信号端相连,计数器中存放计数初值的数据端口与单片机的计数初值控制输出端口相连,计数器的输出端口与单片机的第一外部中断接口相连,4次该外部中断为一个测试周期,用于对待测信号的计数、显示和清零,待测信号与单片机的第二外部中断接口相连,该外部中断用于对待测信号进行计数,单片机首先设置一计数初值,使计数器的输出信号的周期为O. 5S,一个测试周期就为2S,一个测试周期被对待测信号的计数时间为1S,第一外部中断第一次到来后,开启第二外部中断,第一外部中断第二次到来后,不进行任何处理;第一外部中断第三次到来后,关闭第二外部中断,保存对待测信号上升沿进行计数的全局计数变量,单片机的输出端通过其SPI接口与显示装置相连,用于控制显示装置对待测信号的频率计数进行显示;第一外部中断第四次到来后,判断在一个测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为I 9999Hz,则得到的计数变量的大小就是待测信号的频率,如果计数变量为0,单片机对计数器的计数初值进行修改,使计数器输出信号的周期为5S,则一个测试周期为20S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. I O. 9Hz,则得到的计数变量的大小除以10就是待测信号的频率,如果计数变量为0,单片机对计数器的计数初值进行修改,使计数器输出信号的周期为50S,则一个测试周期为200S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. 01 O. 09Hz,则得到的计数变量的大小除以100就是待测信号的频率。所述的显示装置包括串行LED显示芯片和四个8段数码管,串行LED显示芯片的输入端与单片机的SPI接口相连,串行LED显示芯片的输出端与所述4个8段数码管相连,8段数码管的控制端与串行LED显示芯片的片选信号端相连,四个8段数码管分别用于显示频率的个位、十位、百位和千位。系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. Ol O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮。所述的单片机为AT89C51单片机。所述的所述的计数器为可编程定时/计数器8253。所述的波形产生芯片为555振荡器。本发明为解决上述技术问题而提供一种使用上述测试系统的的频率测试方法,该测试方法的步骤如下·
O.将频率范围为O. 01 9999Hz的待测信号按着其频率划分为三个级别,分别为I 9999Hz,O. I O. 9Hz 和 O. 01 O. 099Hz ;
2).将计数器的输出端口与单片机的第一外部中断接口相连,4次该外部中断为一个测试周期,用于对频率范围为O. 01 9999Hz的待测信号的计数、显示和清零,待测信号与单片机的第二外部中断接口相连,该外部中断用于对频率范围为O. 01 9999Hz的待测信号进行计数,第一外部中断第一次到来后,开启第二外部中断,第一外部中断第二次到来后,不进行任何处理,第一外部中断第三次到来后,关闭第二外部中断,保存对待测信号上升沿进行计数的全局计数变量,第一外部中断第四次到来后,根据全局计数变量改变计数器的初值;
3).用单片机设置一计数初值,使计数器的输出信号的周期为O.5S,一个测试周期就为2S,一个测试周期被对待测信号的计数时间为1S,判断在一个测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为I 9999Hz,则得到的计数变量的大小就是待测信号的频率,如果计数变量为0,则进入步骤4);
4).单片机对计数器的计数初值进行修改,使计数器输出信号的周期为5S,则一个测试周期为20S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. I O. 9Hz,则得到的计数变量的大小除以10就是待测信号的频率,如果计数变量还是为0,则进入步骤5);
5).计数变量为0,则说明待测信号的频率为O.01 O. 09Hz,利用单片机对计数器的计数初值进行修改,使计数器输出信号的周期为50S,则一个测试周期为200S,该测试周期内对待侧信号的上升沿进行计数的计数变量的大小除以100就是待测信号的频率。所述的频率测试方法还将测试周期内对待侧信号的上升沿进行计数的计数变量通过显示装置显示出来,该显示装置包括串行LED显示芯片和四个8段数码管,串行LED显示芯片的输入端与单片机的SPI接口相连,串行LED显示芯片的输出端与所述4个8段数码管相连,8段数码管的控制端与串行LED显示芯片的片选信号端相连,四个8段数码管分别用于显示频率的个位、十位、百位和千位,系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. 01 O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮。所述的频率测试方法中的单片机为AT89C51单片机。
所述的频率测试方法中用的计数器为可编程定时/计数器8253。所述的频率测试方法中所用到的波形产生芯片为555振荡器。本发明的有益效果是本发明以单片机为核心,利用单片机对外部待测信号的上升沿进行计数,得到待测信号的频率,单片机根据信号的频率范围,控制计数器的计数初值,实现测量范围的自动切换,本发明不仅可以测试IHz以上的信号频率,也可以测试IHz以下的信号频率,并且可以实现测量范围的自动切换。


图I是本发明基于单片机的频率测试系统实施例中的系统框 图2是本发明实施例中外部中断I的子程序流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅仅用以解释本发明,并不用于限制本发明。本发明的一种基于单片机的频率测试系统的实施例
我们以待测信号的最高频率为9999Hz为例进行说明。如图I所示,本实施例中的基于单片机的频率测试系统包括包括单片机、555振荡器、可编程定时/计数器8253、串行LED显示芯片MAX7219和4个8段数码管。系统选用常用的AT89C51单片机作为控制核心,其端口 PO用作低8位数据,连至可编程定时/计数器8253 ;并且PO的输出经过8位锁存器,其8位输出用作低8位地址,QO和Ql分别连至可编程定时/计数器8253的AO和Al,Q7经过反相器连至可编程定时/计数器8253的片选信号#CS,也就是可编程定时/计数器8253的基地址为80H,并占有地址 80H 83H ;
555振荡器产生周期为O. 25s的方波信号,该信号连至可编程定时/计数器82253的计数器O的引脚CLKO ;
设置可编程定时/计数器8253的计数器O工作于方波发生器模式下,门控信号GATEO连至+5V并一直保持高电平,所以可编程定时/计数器8253的计数初值决定了 OUTO输出的方波信号的的频率,从而决定了待测信号频率的测量范围。·如果计数初值为2,OUTO会输出周期为O. 5s的方波信号,系统的频率测量范围为I 9999Hz ;如果计数初值为20,OUTO会输出周期为5s的方波信号,系统的频率测量范围为O. I O. 9Hz ;如果计数初值为200,OUTO会输出周期为50s的方波信号,系统的频率测量范围为O. 01 O. 09Hz ;0UT0连至AT89C51的外部中断I输入引脚,初始时,计数初值为2,系统的测量范围为I 9999Hz ;外部待测信号连接AT89C51单片机的外部中断O引脚,外部中断O的中断处理子程序主要完成待测信号上升沿的计数;
单片机的P3. 4 P3. 7引脚连接串行LED显示芯片MAX7219,其中,P3. 7连至MAX7219的片选,P3. 4 P3. 6模拟SPI协议,实现MAX7219的控制;
串行显示芯片MAX7219外部级联了 4个8段数码管,分别显示频率的个位、十位、百位和千位。系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. Ol O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮;
设置并开启51单片机的外部中断I后,4次外部中断I成为一个周期,完成待测信号的计数、显示和清零在第一次外部中断O到来后,开启外部中断O ;在第二次外部中断I到来后,不进行任何处理;在第三次外部中断I到来后,关闭外部中断0,保存全局计数变量,并送至串行LED显示芯片MAX7219,从而驱动数码管显示频率值;在第四次外部中断I到来后,判断全局计数变量是否为0,如果为0,则将8253的计数初值改为20,使系统的频率测量范围为O. I O. 9Hz ;同理,在系统的频率测量范围为O. I O. 9Hz时,全局计数变量的值仍然为0,就将8253的计数初值改为200,使系统的频率测量范围为O. 01 O. 09Hz,而当全局变量的值不小于10时,将8253的计数初值改为2,使系统的频率测量范围为I 9999Hz ;在系统的频率测量范围为O. 01 O. 09Hz时,全局变量的值不小于10时,将8253的计数初值改为20,使系统的频率测量范围为O. I O. 9Hz。同时,将全局计数变量清零, 并通过串行LED显示芯片MAX7219在数码管上显示O。外部中断I的中断处理子程序流程图见图2,图中的变量IntlNum表示外部中断I的重复周期中的第几次中断,其值可以是I、
2、3和4 ;变量Count是全局计数变量;变量Fre表示频率测量范围,为I表示I 9999Hz,为2表示O. I 0.9Hz,为3表示O. 01 O. 09Hz。在外部输中断O处理子程序中,对全局计数变量进行加I操作。本发明的一种使用上述测试系统的频率测试方法的实施例
本实施例中所用到的基于单片机的频率测试系统如图I所示,其具体构造已在上个实施例中进行了详细说明,这里不再重复说明。本实施例中的频率测试方法的步骤如下
I.利用555振荡器产生周期为O. 25s的方波信号,将该信号连接至定时/计数器8253的计数器O的引脚CLKO上,设置8253的计数器O工作于方波发生器模式下,其计数初值决定了频率测量范围,如果计数初值为2,OUTO会输出周期为O. 5s的方波信号,系统的频率测量范围为I 9999Hz ;如果计数初值为20,OUTO会输出周期为5s的方波信号,系统的频率测量范围为O. I O. 9Hz ;如果计数初值为200,OUTO会输出周期为50s的方波信号,系统的频率测量范围为O. 01 O. 09Hz ;0UT0引脚连至单片机的外部中断O引脚,初始时,计数初值为2,频率的测量范围为I 9999Hz。2.将设置好计数初值的定时/计数器的输出端和待测信号分别连接到单片机的外部中断I引脚和O引脚,利用外部中断I和O的中断处理子程序来完成待测信号上升沿的计数,其具体过程如下
设置并开启单片机的外部中断I后,4次外部中断I成为一个周期,完成待测信号的计数、清零和显示在第一次外部中断I到来后,开启外部中断O ;在第二次外部中断I到来后,不进行任何处理;在第三次外部中断I到来后,关闭外部中断0,保存全局计数变量,并送至串行LED显示芯片MAX7219,从而驱动数码管显示频率值;在第四次外部中断I到来后,判断全局计数变量是否为0,如果为0,则将8253的计数初值改为20,使系统的频率测量范围为O. I O. 9Hz ;同理,在系统的频率测量范围为O. I O. 9Hz时,全局计数变量的值仍然为0,就将8253的计数初值改为200,使系统的频率测量范围为O. 01 O. 09Hz,而当全局变量的值不小于10时,将8253的计数初值改为2,使系统的频率测量范围为I 9999Hz ;在系统的频率测量范围为O. 01 O. 09Hz时,全局变量的值不小于10时,将8253的计数初值改为20,使系统的频率测量范围为O. I O. 9Hz。3.将单片机的SPI接口连接串行LED显示芯片;串行LED显示芯片外部级联4个8段数码管,4个8段数码管分别显示个位、十位、百位和千位。系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围 为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. 01 O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮。
权利要求
1.基于单片机的频率测试系统,其特征在于该频率测试系统包括波形产生芯片、计数器、单片机和显示装置,波形产生芯片的输出端与计数器的时钟信号端相连,计数器中存放计数初值的数据端口与单片机的计数初值控制输出端口相连,计数器的输出端口与单片机的第一外部中断接口相连,4次该外部中断为一个测试周期,用于对频率范围为O. Ol 9999Hz的待测信号的计数、显示和清零,待测信号与单片机的第二外部中断接口相连,该外部中断用于对频率范围为O. 01 9999Hz的待测信号进行计数,单片机首先设置一计数初值,使计数器的输出信号的周期为O. 5S,一个测试周期就为2S,一个测试周期被对待测信号的计数时间为1S,第一外部中断第一次到来后,开启第二外部中断,第一外部中断第二次到来后,不进行任何处理;第一外部中断第三次到来后,关闭第二外部中断,保存对待测信号上升沿进行计数的全局计数变量,单片机的输出端通过其SPI接口与显示装置相连,用于控制显示装置对待测信号的频率计数进行显示;第一外部中断第四次到来后,判断在一个测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为I 9999Hz,则得到的计数变量的大小就是待测信号的频率,如果计数变量为O,单片机对计数器的计数初值进行修改,使计数器输出信号的周期为5S,则一个测试周期为20S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. I O. 9Hz,则得到的计数变量的大小除以10就是待测信号的频率,如果计数变量为0,单片机对计数器的计数初值进行修改,使计数器输出信号的周期为50S,则一个测试周期为200S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. 01 O. 09Hz,则得到的计数变量的大小除以100就是待测信号的频率。
2.根据权利要求I所述的基于单片机的频率测试系统,其特征在于所述的显示装置包括串行LED显示芯片和四个8段数码管,串行LED显示芯片的输入端与单片机的SPI接口相连,串行LED显示芯片的输出端与所述4个8段数码管相连,8段数码管的控制端与串行LED显示芯片的片选信号端相连,四个8段数码管分别用于显示频率的个位、十位、百位和千位,系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. 01 O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮。
3.根据权利要求I所述的基于单片机的频率测试系统,其特征在于所述的单片机为AT89C51单片机。
4.根据权利要求I所述的基于单片机的频率测试系统,其特征在于所述的计数器为可编程定时/计数器8253。
5.根据权利要求I所述的基于单片机的频率测试系统,其特征在于所述的波形产生芯片为555振荡器。
6.如权利要求I所述频率测试系统的频率测试方法,其特征在于该测试方法的步骤如下 O.将频率范围为O. 01 9999Hz的待测信号按着其频率划分为三个级别,分别为I 9999Hz、O. I O. 9Hz 和 O. 01 O. 099Hz ; 2).将计数器的输出端口与单片机的第一外部中断接口相连,4次该外部中断为一个测试周期,用于对频率范围为O. Ol 9999Hz的待测信号的计数、显示和清零,待测信号与单片机的第二外部中断接口相连,该外部中断用于对频率范围为O. 01 9999Hz的待测信号进行计数,第一外部中断第一次到来后,开启第二外部中断,第一外部中断第二次到来后,不进行任何处理,第一外部中断第三次到来后,关闭第二外部中断,保存对待测信号上升沿进行计数的全局计数变量,第一外部中断第四次到来后,根据全局计数变量改变计数器的初值; 3).用单片机设置一计数初值,使计数器的输出信号的周期为O.5S,一个测试周期就为2S,一个测试周期被对待测信号的计数时间为1S,判断在一个测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为I 9999Hz,则得到的计数变量的大小就是待测信号的频率,如果计数变量为0,则进入步骤4); 4).单片机对计数器的计数初值进行修改,使计数器输出信号的周期为5S,则一个测试周期为20S,判断在该测试周期内对待侧信号的上升沿进行计数的计数变量是否为0,如果不为0,判定待测信号的频率为O. I O. 9Hz,则得到的计数变量的大小除以10就是待测信号的频率,如果计数变量还是为0,则进入步骤5); 5).计数变量为0,则说明待测信号的频率为O.01 O. 09Hz,利用单片机对计数器的计数初值进行修改,使计数器输出信号的周期为50S,则一个测试周期为200S,该测试周期内对待侧信号的上升沿进行计数的计数变量的大小除以100就是待测信号的频率。
7.根据权利要求6所述的频率测试方法,其特征在于所述的频率测试方法还将测试周期内对待侧信号的上升沿进行计数的计数变量通过显示装置显示出来,该显示装置包括串行LED显示芯片和四个8段数码管,串行LED显示芯片的输入端与单片机的SPI接口相连,串行LED显示芯片的输出端与所述4个8段数码管相连,8段数码管的控制端与串行LED显示芯片的片选信号端相连,四个8段数码管分别用于显示频率的个位、十位、百位和千位,系统的频率测量范围为I 9999Hz时,只驱动数码管的7位数据位,而不点亮小数点;如果系统的频率测量范围为O. I O. 9Hz,则显示数据时,同时将十位数码管的小数点点亮;如果系统的频率测量范围为O. 01 O. 09Hz,则显示数据时,同时将百位位数码管的小数点点亮。
8.根据权利要求6所述的频率测试方法,其特征在于所述的频率测试方法中的单片机为AT89C51单片机。
9.根据权利要求6所述的频率测试方法,其特征在于所述的频率测试方法中用的计数器为可编程定时/计数器8253。
10.根据权利要求6所述的频率测试方法,其特征在于所述的频率测试方法中所用到的波形产生芯片为555振荡器。
全文摘要
本发明涉及一种基于单片机的频率测试系统及上使用上述系统的测试方法,属于频率测量技术领域。本发明以单片机为核心,利用单片机对外部待测信号的上升沿进行计数,得到待测信号的频率,通过其SPI接口传递给串行LED显示芯片,进而驱动数码管显示频率值,另一方面单片机根据信号的频率范围,控制计数器的计数初值,实现测量范围的自动切换。本发明不仅可以测试1Hz以上的信号频率,也可以测试1Hz以下的信号频率,并且可以实现测量范围的自动切换。
文档编号G01R23/02GK102901870SQ20121031483
公开日2013年1月30日 申请日期2012年8月30日 优先权日2012年8月30日
发明者张海涛, 张世伟, 白舸, 刘翠苹 申请人:河南科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1