基于C8051F060单片机的数字示波器设计.doc

上传人:啊飒飒 文档编号:10550247 上传时间:2021-05-23 格式:DOC 页数:18 大小:359KB
返回 下载 相关 举报
基于C8051F060单片机的数字示波器设计.doc_第1页
第1页 / 共18页
基于C8051F060单片机的数字示波器设计.doc_第2页
第2页 / 共18页
基于C8051F060单片机的数字示波器设计.doc_第3页
第3页 / 共18页
基于C8051F060单片机的数字示波器设计.doc_第4页
第4页 / 共18页
基于C8051F060单片机的数字示波器设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于C8051F060单片机的数字示波器设计.doc》由会员分享,可在线阅读,更多相关《基于C8051F060单片机的数字示波器设计.doc(18页珍藏版)》请在三一文库上搜索。

1、数字示波器(C题)摘要:本示波器的设计,采用C8051F060单片机作为控制核心。根据题目要求,依据实时采样和等效采样的原理,选用AD603芯片前极信号衰减电路和数控放大电路进行信号调理,采用AD684采样保持和单片机片内的ADC量化编码完成模数转换,同时,使用74LS74构建触发电路对信号进行采集,通过DMA方式缓冲处理采样数据。最后,示波器的各种功能控制由软件实现,同时运用彩色LCD为示波器设计了良好的人机界面。 关键词:C8051F060 等效采样 ADC DMA1引言在数字示波器技术中,常用的采样方法有两种:实时采样和等效采样。实时采样通常是等时间间隔的,信号采样的最低采样频率是奈奎斯

2、特极限频率fsfm,这里fm为信号的最高频率。等效采样是指对多个信号周期连续采样来复现一个信号波形,采样系统能以扩展的方式复现频率大大超过奈奎斯特极限频率的信号波形。题目要求使用的ADC对的周期信号进行采集,所以在本设计中采用了以上两种采样方法,从而满足采样频率fs的要求,设定一个周期采集20个点,所以以为界,当要求fs50KHz时,采用实时采样;当要求fs50KHz时,采用等效采样。数字示波器对信号的采集就是A/D转换的一个过程,模拟信号(A)采样保持量化编码数字信号(D)。A/D转换后的,再通过显示部分显示出来。这一过程,都由控制电路控制进行,同时触发电路给控制电路提供采样频率。由此,我们

3、得到了数字示波器的系统框图,如图1所示。输入电路取样保持A/D转换与存储触发电路控制电路显示部分图1 数字示波器系统框图2 方案设计从图1所示的系统框图出发,依据数字示波器的功能和技术指标(见附录一),我们拟定了以下两个系统方案。方案一:如图2.1所示。系统控制部分由CPLD和单片机构成,单片机控制CPLD进行A/D转换,使用CPLD控制A/D转换的优点在于CPLD具有高速数据处理的能力,系统相对复杂。量化编码单片机信号调理人机界面存储器信号输入采样保持触发电路SRAMCPLD直 流 电 源基准电路图2.1 基于单片机和CPLD控制的系统框图方案二:如图2所示。与方案一相比,方案二采用独立单片

4、机控制,通过单片机的DMA方式取代了由CPLD对采样数据的存储处理。 量化编码单片机信号调理人机界面存储器信号输入采样保持触发电路SRAM直 流 电 源基准电路DMA图2.2 基于单片机控制的系统框图比较两个方案,采用方案一,CPLD因其具有处理速度快的特点,故它能够很好的实现对AD转化速率的控制,但是电路复杂;采用方案二,使用单片机的DMA方式,数据直接进入SRAM,对于的采样速率,DMA已经足够快,而且电路简单。所以,我们选择方案二。3 数字示波器设计及实现3.1硬件部分设计及实现1.单片机控制电路及方波校准电路系统的核心是单片机,从我们的方案选择出发,我们要选择一片至少具有DMA方式的单

5、片机,C8051F060单片机就具有这样的功能,而且,该单片机还在片内集成了采样频率的ADC,完全符合题目要求,所以我们以C8051F060单片机为控制核心,架构整个示波器电路。方波校准电路要求能提供频率为的方波校准信号,要求幅度值为0.3V5%(负载电阻1 MW时),频率误差5%。为了简化系统电路,并在满足题目要求的前提下,我们通过单片机产生的方波基准信号。单片机的输出电压为,再通过电阻分压后,达到0.3V5%的要求,频率误差5%。2.信号调理电路及触发电路信号调理电路的作用是将输入的信号调整为其后极各模块电路的匹配输入信号。主要有信号的衰减和信号放大这样一个过程。调理电路如图3.1所示。

6、图3.1 信号调理电路电路图题目要求示波器的输入阻抗要达到,对于示波器我们希望它具有高输入阻抗,这样更多的信号就可以被引入示波器,从而更为真实准确的反应检测信号的真实情况。为此我们在电路中采用带宽40M的宽带运放OP37设计了射极跟随电路以提升系统的输入阻抗,单片机通过内置DAC控制由AD603搭建程控增益放大电路实现垂直灵敏度1V/div、0.1V/div两档可调,加法电路在后极保证电压值在ADC输入的允许范围内。电路中74LS74组成了频率检测信号,通过单片机计数器检测计算信号频率。 触发电路的作用是将相同周期信号的采样点保证在同一电平,以达到波形显示时的稳定。触发源选择来自信号的自身,也

7、就是本题要求的内部触发方式。为了简化系统电路,我们依托单片机并通过软件方式来实现这一功能,而不同于以往的硬件触发电路。触发的工作原理如图1所示。图中可以看到显示采样前有一个随机的等待时间,因为是上升沿触发,当采集的电平值错过第一个上升沿后,在下一个上升沿到来后,开始显示采样波形,所以它的平均值为,为当前采样周期,为指令执行周期。设定触发电平值判断电平值显示采样波形等待设定值的到来图3.2 软件触发工作原理YN03.A/D转换电路A/D转换过程中ADC的处理速度无法达到实时采集,采样的大量数据需要一定的时间来处理,处理的这段时间就需要采样保持器将采集的信号状态保持一段时间。设计中我们选用了AD6

8、84集成采样保持芯片。采样保持的电路原理及输出波形如图3.2所示。(a) 取样保持电路原理图; (b) 输出波形图图3.3 取样保持电路及输出波形采样保持后,配合使用单片机C8051F060内部的采样频率为的ADC。模数转换过程完成了量化和编码,最终使模拟信号转换为单片机可识别处理的数字信号。由于ADC的采样频率达到了,经过模数转换后的数据量就达到了。单片机要直接处理这些数据,传输速率不足,定时器精度也达不到要求。为此我们选择 DMA方式,采样数据直接存入SRAM,再由单片机处理显示。3.2软件部分设计及实现软件设计主要是配合硬件将示波器的垂直灵敏度,扫描速度等测量指标的合成再现出波形。同时,

9、还有鼠标,SD卡,打印机,彩色液晶屏等设备的软件设计。系统主要软件流程图如图3.4所示。图3.4 数字示波器主要软件流程图系统初始化设置采样速率满足触发条件DMA方式采样送显示是否连续采样停止等待命令NYNY3.3人机界面我们为示波器设计了友好的人机界面。用软件设计了显示界面,通过操作鼠标,可以在彩色液晶屏上点击相应的功能按钮进行功能选择和参数调整;采集处理后的数据在波形窗口中显示,波形显示窗口采用(垂直)8格(水平)10格;在需要的时候还可以将采集的波形用热敏打印机打印出来,或者存储在SD卡中。(实物图见附录3)彩色液晶屏我们使用的是8位色800480TFT彩色液晶显示屏(安徽世龙电子WLT

10、I07DH),热敏打印机(沈阳新荣达RD-D),PS/2鼠标。4系统测试4.1 测试方法和过程采用先分别测试各单元模块,调试通过后再进行整机调试方法,很好的提高了调试效率,并对每个测试指标进行多次直接测量。4.2 测试仪器设备测试使用的仪器设备如表4.1所示表4.1 测试使用的仪器设备序号名称、型号、规格数量备注出厂编号1DSO TDS20121TektronixC0337462EE1642B型函数信号发生器1南京电讯仪器厂0013733数字万用表1VICTOR3070924.3测试结果及分析示波器频率范围、水平分辨率、垂直分辨率及其他相关的测试结果如下:表4.1 示波器频率范围 频率149.

11、88506.91.02-249.98505.81.01-349.89505.71.01-449.97506.91.02-549.96507.11.03-649.99506.81.02-误差0.1%1.3%0.2%-测试中,采用档,采用档,采用档,误差取平均值。表4.2 示波器水平分辨率误差误差误差1005100.70.09950.250.250.41.0041.0040150.9151.10.1100.5100.70.21.5471.5480.01200.2201.00.04200.92010.052.0012.0010302.3301.40.3501501.30.063.0073.00704

12、01.6400.10.15699699.80.124.1804.18005025030.2802803.90.34.9444.9550.05测试中,取自EE1642B型函数信号发生器。为示波器显示频率值。表4.3 示波器垂直分辨率误差误差误差202000.10.1010.910302930.150.1501.51.5040392.50.20.19521.95504760.250.2382.52.4460581.7030.286.732.9370681.40.350.3433.53.63100kHz频率下测试。表4.4 方波校准信号(负载电阻)次数12345678910测试频率99.9799.9

13、899.9799.9899.9699.9899.9899.9999.9799.99误差0.030.020.030.020.040.020.020.010.030.01表4.5 输入短路时输出噪声峰-峰值次数12345678910193248364940543644405 结论本次设计的数字示波器基本完成了题目要求的功能和技术指标。采用C8051F060单片机作为控制核心,结合实时采样和等效采样的方法设计制作了数字示波器。通过SD卡扩展了系统的存储深度,实现了数字示波器的存储功能,通过鼠标简化了操作,内置打印机可以将波形打印记录。但是,由于我们硬件模拟电路的制作工艺水平有限,和时间紧任务重等,系

14、统的指标如:在高频采集波形时还存在失真现象。参考文献:1孙焕根主编 电子测量与智能仪器 浙江大学出版社,1992.32魏立峰,王宝兴主编 单片机原理与应用技术 北京:北京大学出版 社,2006.83谭浩强著 C程序设计第二版 北京:清华大学出版社,19994黄志伟编著 全国大学生电子设计竞赛电路设计 北京: 北京航空航天大学出版社,2006.125张咏梅,陈凌霄编著 电子测量与电子电路实验 北京:北京邮电大学出版社,2000.96蒋焕文、孙续编著 电子测量第二版 北京:中国计量出版社,1997.5附录一通过对赛题任务、要求的分析,我们认为,这台数字示波器应达到以下一些功能和技术指标,如表1所示

15、。表1 功能和数据表采集采样方式实时采样、等效采样实时采样速率等效采样速率输入输入阻抗频率范围垂直ADC 示波器垂直刻度范围垂直灵敏度、电压测量误差水平取样速率范围扫描速度、波形周期测量误差触发触发方式内触发方式,上升沿触发触发电平范围显示屏(通用示波器/液晶显示器)刻度水平显示分辨率其他波形存储/调出,单次触发方式存储显示(),方波校准电路(负载电阻),频率误差,ADC和取样保持电路之间设置测试端子TP。 附录二 示波器实物图附录三 程序清单 / SFR declarations#include060init.h/-/ 16-bit SFR Definitions for F06x/-sfr

16、16 RCAP3 = 0xCA; / Timer3 reload valuesfr16 TMR3 = 0xCC; / Timer3 countersfr16 ADC0 = 0xBE; / ADC0 Datasfr16 ADC1 = 0xBE; / ADC1 Datasfr16 DMA0DS = 0xDB; / DMA0 XRAM Address Pointersfr16 DMA0CT = 0xF9; / DMA0 Repeat Counter Limitsfr16 DMA0DA = 0xD9; / DMA0 Address Beginningsfr16 DMA0CS = 0xFB; / DMA

17、0 Repeat Counter/-/ Global CONSTANTS/-#define SYSCLK 24000000 / SYSCLK frequency in Hz#define BAUDRATE 115200 / Baud Rate for UART0/ DMA INSTRUCTIONS#define DMA0_END_OF_OP 0x00 / End-of-Operation#define DMA0_END_OF_OP_C 0x80 / End-of-Operation + Continue#define DMA0_GET_ADC0 0x10 / Retrieve ADC0 Dat

18、a#define DMA0_GET_ADC1 0x20 / Retrieve ADC1 Data#define DMA0_GET_ADC01 0x30 / Retrieve ADC0 and ADC1 Data#define DMA0_GET_DIFF 0x40 / Retrieve Differential Data#define DMA0_GET_DIFF1 0x60 / Retrieve Differential and ADC1 Data#define NUM_SAMPLES 32768 / Number of ADC sample to acquire (each sample 2

19、bytes)#define XRAM_START_ADD 0x0000 / DMA0 sbit RAM_CS = P45; / chip select bit is P44externxdataunsignedcharOsc_Func;/void EMIF_Init (void);/-/ MAIN Routine/-void main (void)WDTCN = 0xde; / disable watchdog timer WDTCN = 0xad; SYSCLK_Init (); / initialize SYSCLK PORT_Init (); EMIF_Init (); ADC_Init

20、();DAC0_Init(); Oscilloscope_init();/BMP_File(0,0,%F005%SYSTEM%BMPS%LOGO1.BMP0,1,1,1,1);disp_clr(0xde,1); Desktop(); BUTTONS_init(); setfcolor(0xe0);for(;)if(!Stop)Osc_Func=0;if(Osc_Func!=0xff)Oscilloscope_Func(); / Done./-/ PORT_Init/-/ Configure the Crossbar and GPIO ports/void PORT_Init (void)cha

21、r old_SFRPAGE = SFRPAGE; SFRPAGE = CONFIG_PAGE; / Switch to configuration page XBR0 = 0x00; / Enable UART0 on crossbar XBR0 |= 0x08; XBR0 |=0x04; XBR3 |=0x01; / Enable crossbar and weak pull-ups P0MDOUT |= 0x44; / enable Port0 outputs as push-pull P1MDOUT |= 0x00; P3MDOUT |= 0xff; P2MDOUT |= 0xff; P

22、2MDIN |= 0xff; P1MDIN |= 0xff; SFRPAGE = old_SFRPAGE; / restore SFRPAGE/-/ SYSCLK_Init/-void SYSCLK_Init (void) char old_SFRPAGE = SFRPAGE; int i; SFRPAGE = CONFIG_PAGE; / Switch to Configuration Page OSCXCN = 0x67; / start external oscillator with for (i=0; i 1ms) / while (!(OSCXCN & 0x80) ; / Wait

23、 for crystal osc. to settle RSTSRC = 0x04; / enable missing clock detector reset CLKSEL = 0x01; / change to external crystal OSCICN = 0x00; / disable internal oscillator SFRPAGE = old_SFRPAGE; / restore SFRPAGE/-/ EMIF_Init/-/ Configure the external memory interface to use upper port pins in/ non-mu

24、ltiplexed mode to a mixed on-chip/off-chip configuration without/ Bank Select./void EMIF_Init (void) char SFRPAGE_SAVE = SFRPAGE; / Save Current SFR page SFRPAGE = EMI0_PAGE; / Save SFR_PAGE EMI0CF = 0x00; / upper ports; non-muxed mode;/ split mode w/o bank select EMI0TC = 0x00; / timing (7-cycle MO

25、VX) SFRPAGE = CONFIG_PAGE; P4MDOUT |= 0xFF; / all EMIF pins configured as P5MDOUT |= 0xff; / push-pull P6MDOUT |= 0xff; P7MDOUT |= 0xff; SFRPAGE = SFRPAGE_SAVE; / restore SFR_PAGE/EndvoidADC_Init(void)unsignedcharold_SFRPAGE=SFRPAGE;SFRPAGE=ADC0_PAGE;REF0CN=0x03;/AMX0CF=0;/AI0-AI7单独输入AMX0SL=0x00;/AD

26、C0口输入ADC0CF=0x00;/ADC内部增益为1ADC0CN=0x84;/ADCEN=1;ADCTM=0;ADCINT=0;ADCBUSY=0;ADSTM=00;ADWINT=0;ADLJST=0;SFRPAGE=TMR3_PAGE;TMR3CF=0x0e;CT3=0;SFRPAGE=TMR2_PAGE;TMR2CF=0x08;CT2=1;SFRPAGE=old_SFRPAGE;voidPCA0_Init(void)xdataunsignedcharold_SFRPAGE=SFRPAGE;SFRPAGE=PCA0_PAGE;PCA0MD=0x00;PCA0CPM0 = 0x46;PCA0CPH0 = 0x0A;CR=1;SFRPAGE=old_SFRPAGE;voiddelay(unsignedintt)while(t-);18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1