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

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

没有程序,那一堆堆电路起不到任何作用,完全是一堆废板子!就像一台没有操作系统的电脑一样,只能废电。程序设计是整个示波器制作中的难点,本文将详细讲解程序的设计。该示波器中的程序全部是用C语言编写的,开发环境为CodeVisionAVR C,源程序可到《无线电》网站(www.radio.com.cn )下载,下面就各个重要的子程序的设计一一叙述,其他程序见源程序。MCU2与MCU1的程序流程图分别见图1和图2。

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

同步触发的软实现

细心的朋友也许会发现这个示波器电路中缺少一部分电路,就是硬件触发电路。为了降低电路的复杂性,我没有做这个电路,而是用软件实现同步触发的。虽然这样做有个弊端,就是几乎无法实现单次触发,但是我基本不用这个功能。要用这个功能的朋友只需在程控放大器部分加上一个由高速比较器构成的迟滞比较器,然后将输出端接到一个外部中断的输入口即可。当然程序和电路就要作相应的变化,这里就不多讲了。软件触发的好处是触发条件更易调整,只需调整比较语句中的参数即可。保证可以用软件触发的条件是要有足够大的存储空间,显示一屏的数据为240个,但每次读进单片机的数据为500个,多余260个数据就是作为不满足触发条件的舍弃余量。为了以防万一,当从500个数据中已经读出超过260个数据但还没有符合触发条件的数据时,将跳出触发比较循环,重新从 FIFO存储器中读出500个数据,因为FIFO存储器为4K容量,最多可以这样重复读取8次数据,所以软触发可以非常稳定地工作,在该示波器的MCU2 中控制触发的语句见以下程序段:

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

程序的意思是只有当此时采样信号的数值是m且为上升沿时才可以触发,改变触发沿只需改变运算符,改变触发电压只需改变m的值即可,m的取值范围是0~255。

从采样数据中测信号峰峰值

本示波器能够测量输入信号电压的峰峰值,并显示在屏幕上。这个功能由峰峰值测量子程序完成,见下面的程序段。
在程序开始时给a中赋值128,即基线电压值。因为一屏幕的显示数据为240个,所以用for()循环将if…else…判断语句执行240次,在a中存放最大值,在b中存放最小值。对每个数据进行比较,如果该数据比a大则将这个数据存入a,如果小于a,则将这个数据与b进行比较,比b大则抛弃,比b小则存入b。故当240个循环执行完后,a中存放的是这一屏幕数据中的最大值,b中存放的是这一屏幕显示数据中的最小值。在比较完后用a减去b,得到差值存入c 中,则c中保存的值就是电压的峰峰值,调用电压计算显示子程序,根据当前的垂直灵敏度给c乘以不同的倍数,得到实际的峰峰值。当前垂直灵敏度的判断由一个 switch()选择结构完成。biao寄存器中的数据是当前的垂直灵敏度,case 4:后面没有运算是因为程控放大器在此状态下的放大倍数为1,即没有放大也没有衰减。

在计算完峰峰值后,设置LCD显示器,使其工作在文本模式(因为只有在文本模式下对字库的调用才有效),然后设置屏幕上显示电压峰峰值的坐标(对该LCD模块的控制是先送命令,后送参数。例如设置X坐标“SdCmd(0x60);SdCmd(30);”中,第一个 SdCmd()送的0x60是设置X坐标的命令,第二个SdCmd()送的30是X轴的坐标,其他设置相同。具体见光盘中LCD显示屏的资料。),在设置完LCD后约定显示格式,小数点后保留2位有效数字,显示单位为Vpp,显示完毕后需重新设置LCD工作状态,使其工作在图形模式用于波形显示。

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

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