图11 控制电路程序流程
3.2 数字频率计程序设计
数字频率计由数字逻辑电路构成,内部可以分成基脉冲发生器,计数器和数据锁存器,时基脉冲发生器是对晶振进行分频,得到一个1秒的闸门时间信号,它作为计数器的使能端,当闸门信号为高电平时,计数器工作,对输入的脉冲计数,当闸门信号跳变为低电平时,计数器停止计数,并将结果送数据锁存器保存,用于显示频率时调用。程序设计时,先实现图中各部件,然后连接起来生成顶层器件[13]。
3.3 A/D转换
本设计采用ADC0809进行A/D转换, ADC0809的时序如图12所示:
图12 ADC0809的时序图
将转换所得数据送入单片机,由单片机对其作一定的运算处理后,显示所测电压。
3.4 显示及通信模块程序设计
采用南亚LMA97S005AD点阵式字符型液晶模块显示,由一片AT89C52单片机专门控制。单片机负责接收频率计的测频结果和电压峰-峰值测量电路的测量结果然后驱动液晶进行显示。
单片机与液晶之间运用RS232串行通信原理进行数据传输,使用两根连线,一根用于接收数据,一根用于发送数据,由于只需要从单片机输出数据到液晶模块,省去一根数据线,只用一根线即可。设置波特率为2500b/s,同步模式。单片机与FPGA同样只需用一根数据线相连接, 由FPGA发送数据至单片机。程序流程图如图所示,图13为驱动液晶显示的基本流程,其中的两个子流程分别是串行方式数据接收与处理子流程(右)和液晶平面点阵布置子流程(左)。
图13 驱动液晶显示程序流程图
4. 系统测试和仿真
4.1 FPGA测控专用芯片的程序设计
FPGA的仿真工具为MAX-plusII,根据系统的总体设计方案,FPGA测控专用芯片的输入信号有:FIN为被测频率信号输入端;CLK为200 Hz基准信号输入端;EN为ADDSUB的控制信号端口,在EN的上升沿,ADDSUB可加载到FPGA;ADDSUB[1..0]为MC145152的控制输入,当其为“00”时,将发射频率设定在25 MHz,当其为“01”时,每按一次升频键,发射频率以100 kHz增加, 当其为“10”时,每按一次降频键,发射频率以100 kHz降低,当其为“11”时,对FPGA不起作用;SEL[1..0]为输出选择,当其分别为“00”、“01”、“10”、“11”时,输出为频率计数器的第0~7位、第8~15位、第16~23位、第16~23位。输出信号有:CTR[9..0]为MC145152控制信号输出口;DATA[7..0]为FPGA到单片机的数据输出口,与单片机的P0口相连,由SEL[1..0]控制输出的内容。其应实现的功能就是负责控制MC145152和实时测量压控振荡器输出信号的频率。如图14所示。
图14 FPGA测控专用芯片组成框图
4.2 系统的有关仿真
从图15可以看出,当ADDSUB='0'(即ADDSUB[1..0]= ''00'')时,CTR=H''0FA'',即CTR=D''250'',当ADDSUB='1' 时,EN每来一个上升沿,CTR在原来值的基础上加1,依次为H''0FB''、H''0FC''、H''0FD''、H''0FE''、H''0FF''等,即CTR=D''251''、D''252''、D''253''、D''254''、D''255''等,亦即其锁定频率分别为25 MHz,25.1 MHz、25.2 MHz、25.3 MHz、25.4 MHz、25.5 MHz。
图15 FPGA测控专用芯片的仿真图
程序设计时规定CLK=200 Hz,而仿真时被测信号FIN的频率为CLK的20倍,因此仿真的结果应该为200×20=4000 Hz。从图16的实际仿真结果看,所测频率为十优尔进制的000028,即十进制的000040,亦即00.0040 MHz,也就是4000 Hz,与预计的结果一致。 电压控制LC振荡器的设计+仿真图+流程图+源程序(5):http://www.youerw.com/zidonghua/lunwen_730.html