“双核”示波器的硬件描述与程序设计

作者 魏坤 来源 《无线电》杂志 2009.01
发布时间 2010-12-24

3.时钟产生电路

时钟产生电路为AD转换器提供一系列的采样时钟信号,分别为600Hz、6kHz、60kHz、600kHz、 3MHz、6MHz、30MHz和60MHz,共8种,分别对应着不同的水平扫速,由MCU1控制,控制关系见表2。时钟产生电路见图8,基准时钟信号由一块60MHz的温度补偿型有源晶体模块提供,输出的60MHz信号一路直接作为60MHz采样时钟送入多路选择器74F151,另一路被送入由 74F74触发器组成的2分频器分频,得到30MHz的信号分为两路,一路送入多路选择器74F151,另一路送入由2-5-10分频器74LS390组成的5分频器进行分频,得到6MHz信号,再分为两路,一路继续分频,另一路送入多路选择器74F151,后面几级分频与以上相同。对60MHz信号进行第一次二分频没有用74LS390中的二分频器,而单独使用了一片74F74,是因为74LS390中的二分频器的最高输入频率为40MHz,所以在其前面用了一级独立的二分频器。8种时钟信号都被送入多路选择器,MUC1通过对74F151的S0、S1、S2三根选通信号线进行控制来选择所需的采样频率。

“双核”示波器的硬件描述与程序设计

“双核”示波器的硬件描述与程序设计

4.MCU2单片机显示处理电路

MCU2选用ATMEL公司的AVR单片机ATmega32-16AI,与51单片机相比AVR单片机具有更高的工作频率与更高效率的硬件结构,51单片机的指令周期是将晶体振荡器的振荡频率进行12分频后得到的,又有累加器Acc在高速执行指令时的瓶颈因素,而AVR单片机则不同,它的指令周期就是晶体振荡器的振荡周期,有32个类似与累加器Acc的寄存器直接和运算器相连,取址周期短,又可预取指令实现流水作业,故可高速执行指令。ATmega32-16AI的ROM容量为32KB,RAM为2KB,32个输入、输出口,官方给出的最高速度为16MHz,但在实际使用中工作在18~20MHz也很稳定,所以用该单片机做显示处理非常合适。在本电路中为了提高LCD显示器的屏幕刷新速率使其工作在18MHz,实际使用中电路工作十分正常。

MCU2电路见图9所示。PD0~PD7与LCD显示器8位并行数据端相连,PC1~PC5与LCD显示器的控制端相连用于驱动LCD显示器,PC0用于控制LCD背光,PC0=0有背光,PC0=1无背光。PB4、PB5与PB7作为SPI通信端口与MCU1相连进行两个单片机之间的通信。 PA0~PA7与FIFO存储器的数据输出端D0~D7相连接,PB0~PB3分别与FIFO存储器的使能(FIFO_EN)控制端、复位(FIFO_RES)控制端、读数据(FIFO_R)控制端和满标志(FIFO_FF)位相接。上电时,MCU2通过FIFO_RES端口对FIFO存储器进行复位,复位后存储器的读写指针都指向0,允许写数据,MCU2通过FIFO_EN端使能FIFO存储器,开始将AD转换器输出的数据写入存储器,当 FIFO存储器写满数据后FIFO_FF位被拉高通知MCU2读取采样数据,MCU2禁止FIFO存储器写入数据,然后从FIFO存储器中读数据,当数据读完并完成软件触发后使能FIFO存储器继续存储采样数据,然后从读取的数据中测出波形的峰峰值后将数据转换成波型与参数显示在LCD显示器上,峰峰值的测量是通过对一屏显示数据进行比较取出最大值与最小值与当前垂直电压灵敏度作为系数计算出来的。SPI通信通过中断的方式实现,MCU1每次给MCU2发送频率、水平扫速、垂直电压灵敏度等数据一共为9个字节,每发送一个字节MCU2中断一次,将接收到的数据存到一个数组中,直到9个字节全部发送完毕 MCU2才对接收到的数据进行处理显示。这样可以使MCU2在平时都工作在数据的处理和显示上,提高了数据的处理速度。

“双核”示波器的硬件描述与程序设计

5.MCU1单片机控制与信号整形电路

MCU1同MCU2一样也选用AVR单片机,型号为ATmega8-16,工作频率为16MHz,在电路中负责控制程控放大器和时钟发生电路,并负责测量被测信号频率,将各种参数通过SPI总线发送给MCU2。

MCU1电路见图10, PC2~PC5共4个I/O口接4个轻触开关S1~S4,S1、S2是两个复用键,用于控制水平扫速与垂直电压灵敏度,功能通过S4切换,当前功能状态显示在显示器上,如果当前的控制功能为控制水平扫速,则在显示器的右下边反显示“T”, 如果当前的控制功能为控制垂直电压灵敏度,则在显示器的右下边反显示“V”。S3是触发控制,当前状态显示在控制状态左边,箭头上升则自动触发,箭头向下则不触发。长按S3选择交直流耦合方式。该示波器现在只能实现基本功能,其他更多功能有待于广大爱好者共同努力。S0、S1、S2、S3、S4共5个端口分别连接PB4、PB0、PB1、PC0、PC1用于垂直电压灵敏度控制,控制数据见“程控放大电路”中的表1。 PB2、PB3、PB5作为SPI总线接口与MCU2通信,为了防止下载程序时两芯片SPI口冲突,在两单片机之间的SPI总线上串联了3只1kΩ的电阻,实验证明此法非常有效,电路工作稳定。PD0~PD2共3个I/O口用于时钟控制,控制数据见“时钟产生电路”中的表2。频率的测量使用了16位计数器,外部下降沿触发。程控放大器输出的信号送给由场效应管VT2和高频三极管VT3组成的高输入阻抗整形电路,整形后再由U17触发器74F74进行4分频,然后送入MCU1的T1(PD5)脚进行计数测频,在低水平扫速时(5ms/div和50ms/div)为了保证测频精度测频周期为1s,在高水平扫速时(小于5ms/div)测频周期为0.25s。测频的原理是通过记录1s或0.25s内计数器记录的脉冲数来换算频率,测频定时由中断完成,每测完一次频率就通过SPI总线向MCU2发送一次数据,所以在高水平扫速时每秒向MCU2发送4次数据,而在低水平扫速时每秒向MCU2发送1次数据,能较好地保证参数显示的实时性。

上一页123456下一页
标签: 示波器, 程序
电子爱好者 DIANZIAIHAOZHE.COM