简易数字存储示波器06204526 程杰图片预览一、任务分析制作一个简易数字存储示波器,其结构框图如下图所示二、方案论证与比较1.波形采集模块波形采集模块采用AD 转换芯片将模拟波形信号转换为数字信号发送给单片机,有如下几种方案:方案1 采用片外并行AD 芯片,如ADC0809。
优点:使用广泛,参考资料很多。
缺点:并行接口占用单片机口线较多,接线复杂。
方案2 采用单片机内置AD 转换功能,如A VR 、C8051等单片机内置的ADC 优点:集成在单片机内部,不需要额外连线,方便易行。
缺点:片内集成的ADC 速度较低,无法采集频率高的信号,没有独立多路AD , 多通道AD 会降低采样速度。
方案3 采用片外串行高速ADC 芯片如maxim 公司的高速ADC 串行芯片,外加 FPGA 控制采样。
优点:速度块,占用单片机口线少,可以很容易实现MHz 级别的波形采样 缺点:价格昂贵,资料较少。
综合考虑价格和易行性,本系统采用方案2,采用A VR mega64芯片中的内置ADC。
2.微处理控制模块微处理控制模块采用单片机来完整,经济可行:方案1 采用经典80C51系列单片机优点:使用广泛,资料丰富缺点:功能较少,性能较弱方案2 采用atmel公司的高档8位单片机A VRmega64优点:高性能,价格相对较低,内置ADC缺点:上市时间较短,资料少方案3 采用atmel公司的高档8位单片机A VRmega64控制显示部分,外加一片FPGA控制采样优点:FPGA采样速度快,单片机控制显示方便,取长补短缺点:系统较为复杂由于本人对A VR单片机使用较为熟悉,所以本系统采用方案2,即A VRmega64来完成,其基本性能指标如下:·先进RISC结构,性能达到1MHz有1MIPS·64KB Flash程序存储空间·4KB SRAM 、4KB EEPROM·内置I2C、SPI、PWM、ADC等功能·支持在线编程ISP功能3.存储模块存储模块采用SRAM来存储波形采集模块所采集到的波形,有如下三种方案:方案1 采用外置一片62256和74HC573作为锁存器,扩展单片机的存储空间优点:外扩空间容量很大缺点:接线复杂,出现错误不容易排查方案2 采用A VR 单片机内置4KB RAM,划分出约2KB空姐供存储波形数据,也可以存储数十页的数据。
优点:无须接线,体现了高档单片机RAM大的优势缺点:空间较少,需要大量存储时仍然不够方案3 利用FPGA内部的SRAM优点:充分利用FPGA中的SRAM资源缺点:占用FPGA资源太多,有可能导致综合困难由于时间有限,本系统采用方案24.波形显示模块波形显示模块将存储器里的数据读出并显示出来,有如下三种方案:方案1 采用单片机片外DAC,将采集到的数据作为模拟量输出,用真正的示波器观察波形。
此方案供熟悉DAC而提出,本文不在此论证优缺性。
方案2 采用单片机的UART串口功能将采集到的数据发送至PC机,PC机用VC++编程,最终形成虚拟示波器软件。
优点:PC机处理数据灵活,同时也可以提供数据存储功能缺点:VC编程较困难,串口传送速度有限,必须依赖PC机方案3 采用单片机外扩展一片液晶显示器,将波形显示出来优点:与真正示波器最接近的方案,具有便携性缺点:条件有限,没有高分辨率的液晶,刷新率低,显示效果一般本系统初期采用方案2,中途遇到了VC++编程不熟练,串口发送速度慢等问题,最终改成方案3,使用了一片ST7920控制芯片的12864液晶显示屏,关于这块屏的具体描述请参阅附录。
三、系统设计经过分析后设计的系统框图如下图所示1.Mega64内置ADC 采样模块单片机内置ADC 其性能指标如下: ·10位精度·±2LSB 绝对精度·最大精度每秒15kSps 采样速率 ·65-260us 转换时间 ·参考电压范围0-Vcc·8通路可选单端输入通道由于单片机工作速度在MHz 级别,ADC 转换需要数十个时钟周期,所以内置ADC 速度不够快,仅能检测KHZ 级别的信号。
在采样时,原先使用读到AD 数据后立刻在液晶屏幕上显示出来的算法,发现最高仅能采样到200Hz 的信号。
分析原因,由于将数据在液晶上显示这个过程需要较长的时间,故影响了AD 的采样效果。
后改进算法,采用将读到AD 采样数据先存储在数组中,当存满整屏数据后全部显示的算法,采样速度大幅提高,基本到达单片机内置ADC 采样上限,测试最高可分辨的采样信号频率为2.5KHz 。
信号的输入幅度大小为0-VCC 。
10位AD 采样,参考电压为5V ,采样精度为0.09765625%。
2.示波器采样周期控制实际使用的示波器可以控制采样频率,以观察不同频率的信号。
本系统采用4x2键盘,利用5-8四个按键提供改变ADC采样的频率,其中5、6号键为粗调,7、8号键为细调。
具体实现方法为在ADC采样并赋值数组的间隔中增加空采样,粗调每次增加5个空采样周期,细调每次增加1个空采样周期。
通过实验,增加10个空采样周期约和最初取到值就液晶显示出的效果接近,可见当初的ADC采样方法不完善,要浪费近10个采样周期。
3.最大、最小和平均值的计算通过比较存储下的一定周期的数据,得出其中的最大值、最小值和平均值,并在液晶上面显示出来。
4.数据存储功能采用声明为unsigned char sram[10][128]的二维数组保存ADC采样数据,当按下存储按钮时(按钮2),自动保存采样的数据。
当保存结束时,通过LED灯亮显示数据保存完毕,并进入存储波形观察状态。
通过按键7和按键8来上下翻页,查看存储的波形数据。
目前可以保存10屏数据,通过修改二维数组的大小可以存储更多屏的数据,但是最多不可以超出Mega64单片机4KBsram的上限。
5.掉电保存功能利用A VRmega64L内置的4KB EEPROM可以擦写10万次以上,适合用来实现掉电保存功能。
利用按键控制,在需要的时候可以将存在SRAM中的数据保存到EEPROM中,实现掉电保存功能。
6.幅值可调通过软件修正,可以用按键控制显示在液晶屏上波形的幅值。
7.触发捕捉当开启触发捕捉功能时,当采样的信号跳变高于阈值时刻开始记录数据波形,并保存前半页的数据,实现简单的触发捕捉功能。
最终硬件电路设计图如下:四、软件设计整个系统采用状态机来完成,采用状态机可以将程序循环过程表示的很清楚,程序运行框图如下所示:五、结论六、不足和改进由于时间有限,本系统性能有限,有很多地方可以加以改进和提高。
1.内置ADC性能限制考虑替换高速片外AD,并搭建外围模拟电路,采用FPGA控制将采集到的数据存储在SRAM中,单片机读取处理并显示的方式。
好处如下:A.可以采样正负电平B.可以外接更大的参考电压,实现采集>100V的信号C.可以大幅提高采样信号频率,达到MHz级别D.采用带独立通道的片外AD,实现双通道功能2.内置SRAM容量过小,存储深度不够。
A.并行外扩RAM占用口线多,考虑使用具有双通道的串行片外RAM,即可以大幅提高存储深度,也方便与FPGA进行数据交换。
B.采用FPGA内置RAM,在能够综合的情况下,不失为一个好办法。
3.功能不够完善可以增加测量频率、检测波型、检测方波占空比、FFT等等,下面介绍测量频率的方法。
对于高频和低频信号,要采用两种不同的方法来测量其频率。
对高频信号,应采用测频法,比较被测信号于阈值信号而产生脉冲,对单位时间的产生的脉冲进行计数。
对低频信号,应采用测周期法,即在被测信号的周期时间内对某一基准脉冲进行计数。
附录:基于ST7920控制芯片的12864汉字液晶屏图形模式研究本系统采用的显示液晶为12864,横向上有128个点,纵向上有64个点。
我所购买的这块液晶的控制芯片为st7920,内置字库为曰汉字屏。
汉字屏并非点阵屏,其画图能力不强大。
由于本次要做的系统需要显示点阵,经过几天的研究,我成功实现定点函数Point(x,y)的编写。
1.切入点这块液晶是可以显示图片的,需要准备一张128x64的bmp图片,利用转换软件将其转换为数组,数组的存放格式为0xXX(X代表一个16进制数)。
分析其画图函数可以得出,每次写入的数据恰为0xXX,即每次写入8个点。
2.XY坐标研究先分清两个概念,内部地址和物理观察地址不一样!设内部地址变量为LCD_X和LCD_Y,设直观物理观察,左上角物理坐标地址为(x,y)为(0,0)。
12864屏并非真正的128x64,而是由256x32人为走线成4行,并且横向X一次移动16个物理点(分两次写入),即内部横向LCD_X坐标范围0-15,内部纵向LCD_Y坐标范围0-31。
其实际初始内部坐标并非为0,而是(LCD_X,LCD_Y)=(80,80)。
举例来说,LCD_X=80+8,LCD_Y=80所代表的点的位置为物理位置为从(0,32)开始的纵向16个点。
.3.解决问题的关键我购买这块液晶有几个月了,因为一次最少写入8个点,所以点阵画图一直没有进展。
前日研究其数据手册,发现定内部地址(LCD_X,LCD_Y)后,可以通过指令把其代表的16个点从液晶的RAM中读出来的!这样,写入新的数据而不影响旧数据的问题就可以得到解决:在写入前把RAM中的数据读出,通过新数据和旧数据的取或or取与可以实现更新数据的作用。
然后通过编写物理坐标和内部地址坐标转换函数可以实现画任意点的函数。
4.缺点和改进汉字液晶毕竟不是点阵液晶,通过读取数据的方式再写入数据,势必将增大液晶显示的响应时间,特别对本次示波器的高速系统影响较大。
如果单片机内存空间足够,可以在其SRAM中开1KB的存储空间用来映射液晶的RAM,可惜本次系统对单片机内部空间要求比较高,若外扩SRAM,必可以提高液晶的响应速度。
当然最好的办法是换一块专用的点阵液晶,此文写于条件有限的情况下。