基于单片机的数字示波器的设计
【摘要】数字系统设计已进入一个新时代。本文是笔者在教学工作中带领学生初步设计一种数字示波器,它是由双CPU进行控制的、能够进行彩显的嵌入式数字示波器。
【关键词】双CPU;单片机ATC52;CPLD
引言
伴随着计算机的迅速发展和现代化工业控制的要求不断的提高,人们已不满足于单纯的文字操作,而是采用更真实、更形象的图形操作方式。但由此带来的一个问题就是资源的极大浪费。基于这个原因,本次设计了一种通过双CPU 控制 、可脱离计算机的、根据接收的指令显示波形的数字示波器。它主要由CRT显示卡和A/D变换板组成。以两片ATC52单片机为微控制器,A/D板中的ATC52单片机负责发送宏命令给CRT显卡中的单片机,其接收到命令后转至相应的程序执行,最终在屏幕上显示信号源的波形。在本次设计中最突出的是使用了目前较为先进的CPLD(复杂可编程逻辑器件)技术,从而大大简化了电路,提高了产品的稳定性和可靠性,提高了工作效率。
1.数字示波器的工作原理
示波器是最通用的电子测试仪器之一。它的主要功能是精确复现作为时间函数的电压波形。波形的图形可用来确定量的信息(如幅度和频率),也可用来获得其质量的信息(如波形);示波器还可用来比较两个不同的波形,并测量它们的时间和相位关系。
根据应用范围的不同,示波器分为模拟示波器和数字示波器两类。从概念上看,模拟示波器和数字示波器是同类仪器,它们均可完成同样的测量,都显示电压波形,只不过仪器内部使用的技术不同。模拟示波器运用传统的电路技术,在阴极射线管上显示波形。而数字示波器是把原来的模拟信号转换成数字形式(一串二进制数),才能进行显示或进行存储。这意味着数字示波器是存储式示波器,因为它的波形是用数字方式存储的,因此数字示波器通常也称为数字存储示波器(DSO)。
数字示波器的输入电路和模拟示波器的相似。前置放大器的输出信号由跟踪/存储或取样/存储电路进行取样,并有A/D转换器数字化,经过A/D转换后,信号变成了数字形式。取样始终驱动A/D转换器、取样器、A/D转换存储器,对实时取样进行控制。在取样之前,电路必须维持示波器的全部带宽,但在A/D转换后,需要的带宽则可大大的下降。因为波形被存在存储器中,显示器的带宽只需做到刷新荧光屏(从存储器)时足够快,没有可见的闪烁就够了。所以我们可以用较低的带宽显示器来显示波形(和模拟示波器相比较,模拟示波器整个系统,包括显示器必需都能维持仪器的全部带宽)。
2.硬件设计
本次硬件设计分为两部分,分别为CRT显示器、A/D模数变化板。
2.1 CRT显示器的工作原理
CRT显示器分为五大部分:CPLD控制、RAM、ROM、C52(作为CRT控制,取名为V51)和视频放大器。实现彩色CRT控制,目的是可受单片机和DSP器件的控制。基本方式为400X300、0X480、800X600,共七色。我们选用的分辨率是0X480(指可视分辨率)。CPLD在可视区里工作,51控制器在缓冲区(VC)里工作。两者不可同时进行,否则图像出乱。
彩色CRT控制用CPLD对RAM扫描,受V51控制。CPLD产生扫描地址(可三态),对八个数据线分成两组,每组三基色,由最高频率切换,这样每字节两点。
V51主要在VC期间对VRAM进行读写,也可在CNT为高时强制读写,V51无操作时均为高电平。采用P0为A0-A7、P1为A8-A15、P2为DB(P2.0为A16,P2.1为A17)、P3.3为VC、P3.6为WE负脉冲,P3.7为 CNT控制,(CNT 为负时,CPLD工作,V51必须置为高阻)CNT为正时,CPLD地址高阻,DB为0,VRAM的OE为正,V51可进行写操作。若在VC期间,由于CPLD自身置地址线为高阻,则可置CNT为负,使OE为负进行读操作。通过以上介绍,可大体了解CRT显示器的工作原理。而本次设计就是根据这样的工作原理来进行V51的软件编程。
2.2 A/D板的工作原理
A/D板主要有以下几个部分组成:TLC5510(A/D变换器)、CPLD、RAM32K、C52(起主要控制作用,因此简称为M51)和运放器。通过单片机M51对CPLD的控制,实现对模拟信号进行数字变化,并将采样的数字信号存入存储器32K,接着通过M51对RAM有规律的取数,并将所取得数存入M51的高端存储器(80H-FFH),最后对这些数进行处理,即通过串行通讯口向V51发送宏命令,其接收到命令,立即转向相应的程序执行,并显示在屏幕上。
3.软件设计
由于本次设计是在多CPU环境下工作的,即V51和M51。所以编程总体上分两大部分。V51主要执行图形操作,软件功能是执行画图或填图,M51主要是发送宏命令,一共有16条宏命令,本次设计只用到12条,宏命令表如图1所示,V51在接收到M51发出的命令后,转移到不同程序,按串行命令所给的参数执行填图或画图。
宏命令代码 宏命令意义
00 全清屏
01 画点
02 画单行垂直线
03 画单行水平线
04 画矩形框
05 画矩形块
06 填16X16字形
07 填32X32字形
08 填图形
09 填8X8字形
0A 准备接收数据串
0B 发送128个字节数据  图1
3.1 V51的程序设计
彩色CRT控制的基本方式为0*480的点阵,经计算共有307200个,在硬件设计中已经介绍1个字节代表2个点,因此共有153600B,即150KB,显示器分三个区域,即KB、KB、22KB,分别称为0区、1区、2区。用十六进制表示为即A17、A16分别取00H、01H、02H。在V51编程的过程中,借用寄存器51H-56H。V51执行的画图和填图的子程序设计在这里就不多说了。