简易示波器课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计报告课程名称综合电子设计题目简易数字示波器指导教师起止日期系别自动化专业自动控制学生姓名班级/学号成绩摘要本系统由CPLD,单片机控制模块,键盘,LED,幅度控制模块,低通滤波模块组成,采用当前主流DDS技术完成,能产生从1HZ-260KHZ正弦波,方波,三角波以及这三种同频率波的线性组合,失真度限制在6%之内。一、功能介绍1.具有产生正弦波、方波、三角波三种周期性波形的性能。2.用键盘输入编辑生成上述三种波形(同周期)的线性组合波形。3.输出波形频率范围为1Hz~200kHz(非正弦波频率按10次谐波计算;重复频率可调,频率步进间隔1Hz。)4.输出波形幅度范围0~5V(峰-峰值),可按步进为0.1V(峰-峰值)。5.具有显示输出波形种类、重复频率(周期)和幅度的功能。6.增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载变化范围:100Ω~∞)。二、方案论证与比较常见信号源的制作方法有:方案一:采用锁相式频率合成。将一个高稳定度和高精确度的标准频率经过加减乘除的运算产生同样稳定度的大量离散频率技术,它在一定程度上既要频率稳定精确,又要频率在很大范围内可变的矛盾。但频率受VCO可变频率范围的影响,高低频率比不可能做的很高,而且只能产生方波和正弦波。方案二:采用模拟奋力元件或单片压控函数发生器MAX0832,可产生正弦波,方波,三角波,通过调整外部元件可改变输出频率,但采用模拟器件由于元件分散性太大,即使使用单片函数发生器,参数也与外部元件有关,外接的电阻电容对参数影响很大,不能实现波形运算输出等智能化的功能。方案三:采用DDFS,即直接数字频率合成技术,以Nyquist时域采样原理为基础,在时域中进行频率合成,它可以快速转换频率,频率,相位,幅度都可以实现程控,便于单片机控制,所以,本系统采用此方案。三、系统设计系统总体设计方框图:系统设计方案:1、实现A/D芯片的模数转换功能,通过keil的watch窗口观察ADC0读取的数据的变化。2、设置合适的采样频率和采样时间,对输入信号进行连续采样,对规定时间内的采样结果进行存储。3、对已有数据进行D/A转换,实现数字量到模拟量的变化,并在示波器上显示结果。4、添加单次按键触发等功能,实现在满足触发条件后,对一个采样周期内的输入进行存储和连续显示。5、增加1通道输入,实现双踪示波。6、综合上述情况实现完整的数字双踪示波器。四、单元电路设计及其初始化1.ADC0电路的设计初始化程序为:voidADC0_Init(void){ADC0CN=0x05;//ADC0T3定时采样,左对齐REF0CN=0x03;//启用内部基准源AMX0CF=0x00;//选择采样输入源ADC0CF=((SYSCLK/2500000)-1)3;//ADCconversionclock=2.5MHzADC0CF&=0xf8;ADC0GTH=0Xff;ADC0GTL=0Xff;ADC0LTH=0X00;ADC0LTL=0X00;//PGAgain=2EIE2|=0x02;//启用ADC中断}采用数据左对齐存储方式。由0端口输入。T3定时器启动,当T3溢出时启动ADC0。转换结束时产生15号中断。执行中断程序。2.DAC电路的设计初始化程序:voidDAC0_Init(void){DAC0CN=0x82;}voidDA0_Out(unsignedintcon_volt){con_volt=con_volt2;DAC0L=con_volt%256;DAC0H=con_volt/256;}其中控制字DAC0CN说明如下:采用更新于写入DAC0H时,数据格式为高八位的低六位和低八为的高六位。五、软件设计1.软件流程图:开始系统初始化定时器3是否溢出15号中断扫描键盘启动ADC0ADC数据采集DAC数据输出否是输出结束循环扫描3.相关程序及其功能ADDA转换#includec8051f020.hsfr16ADC0=0xbe;sfr16ADC0GT=0xc4;sfr16ADC0LT=0xc6;sfr16TMR3RL=0x92;//Timer3reloadvaluesfr16TMR3=0x94;#defineSYSCLK22118400//18432000#defineSAMPLE_RATE2500000//SamplefrequencyinHz采样频率#defineINT_DEC1//integrateanddecimateratio#defineucharunsignedchar#defineuintunsignedintvoidSYSCLK_Init(void);voidADC0_Init(void);voidTimer3_Init(intcounts);voidADC0_ISR(void);voidDA0_Out(unsignedintcon_volt);voidDAC0_Init();ucharint_dec=INT_DEC;uchartt=0;voidmain(void){WDTCN=0xde;WDTCN=0xad;SYSCLK_Init();Timer3_Init(SYSCLK/SAMPLE_RATE);ADC0_Init();AD0EN=1;DAC0_Init();EA=1;while(1){}}voidSYSCLK_Init(void)//配置系统时钟使用外部晶振22.1184MHz{inti;OSCXCN=0x67;//晶体振荡器未用,晶体振荡器方式for(i=0;i256;i++);//XTLVLDblankinginterval(1ms)while(!(OSCXCN&0x80));//Waitforcrystalosc.tosettleOSCICN=0x88;//选择外部振荡器作为系统时钟,内部振荡器禁止}voidADC0_Init(void){ADC0CN=0x06;//ADC0T3定时采样,左对齐REF0CN=0x03;//启用内部基准源AMX0SL=0x00;//选择采样输入源0ADC0CF=(SYSCLK/2500000)3;//ADCconversionclock=2.5MHzADC0CF|=0x00;ADC0LTH=0x00;ADC0LTL=0x00;ADC0GTH=0xFF;ADC0GTL=0xFF;EIE2|=0x02;//启用ADC中断}voidDAC0_Init(void){DAC0CN=0x80;}voidDA0_Out(unsignedintcon_volt){unsignedcharhbyte,lbyte;hbyte=con_volt/256;lbyte=con_volt%256;DAC0L=lbyte;DAC0H=hbyte;}voidTimer3_Init(intcounts){TMR3CN=0x02;TMR3RL=-counts;TMR3=0xffff;EIE2&=~0x01;TMR3CN|=0x04;}voidADC0_ISR(void)interrupt15{AD0INT=0;int_dec--;if(int_dec==0){int_dec=INT_DEC;DA0_Out(ADC0);}}六、设计结果1.对原温度采集程序进行修改完成对信号的采集,以下分别为对于方波、三角波及正弦波的信号采集。2.加入单次触发程序后,可进行按键触发:(以正弦波为例)按下采样键K5前按下采样键K5后3.加入回放功能键K5,可实现在采样之后,进行波形回放(以正弦波为例)首先按下K5键得到正弦采样信号如图:然后按下K2键得到回放波形如图:(由于采样频度与周期等问题,回放波形有失真显现)经程序调整后得到:更接近采样波形4.完成双踪示波的采集,见图。5将双踪示波与触发脉冲结合起来,完成对于双踪信号的采集、存储及回放,原始信号为三角波和方波。按键k5对信号进行采样存储按键k2对三角信号进行回放按键k3恢复信号采集初始状态(等待采集信号)七、心得体会通过本次设计我进一步了解数字示波器的基本控制原理,掌握了怎样利用C8051F020开发板实现一个简易数字示波器的设计与制作以及处理器C8051F020芯片的应用,多通道ADC采集功能等应用技术。本次课程设计所设计的是基于C8051F020芯片,通过软硬件结合实现普通示波器显示被测波形的简易数字示波器。能完成对ADC0的0通道和1通道的信号的分时或同时采集(高电平约2V、低电平接近0V)并且对采集的信号通过DAC0和DAC1两个输出口同时输出实现双踪示波器功能。另增加单次触发存储显示方式,即每按动一次“单次触发”键,仪器在满足触发条件时,能对被测周期信号或单次非周期信号进行一次采集与存储,然后通过其他触发键触发信号的回放,观测波形无明显失真。由于时间和硬件条件关系没有把做出LCD液晶显示示波器有点遗憾,不过我从网络上搜索了有关资料,对其也有了一定的了解。八、参考文献[1]潘琢金【译】.《C8051F020/1/2/3混合信号ISPFLASH微控制器数据手册》九、附录1、元器件清单(1)MCU为美国Silabs公司C8051F020,64KBFLASH、(4096+256)BRAM、最高25MIPS执行速度;(2)4路12位AD输入,AIN1到AIN4输入信号量程0~+2.4V;(3)2路12位DA输出,输出信号量程0~+2.4V;(4)1路标准RS232通讯接口;(5)1个16X2LCD接口;(6)1个128X64LCD接口;(7)1个复位键,4个按键;(8)JTAG调试接口;(9)外扩总线接口;(10)C8051F020上的资源对用户开放。2、程序清单/***************************************************************功能:实现ADC信号采样和DAC信号输出用外部基准:J7NC12内部VREF外部VREF34内部DAC工作基准输入外部VREF5---6内部ADC0工作基准输入外部VREF78内部ADC1工作基准输入或用内部基准:J7NC12-内部VREF外部VREF34|内部DAC工作基准输入外部VREF56-内部ADC0工作基准输入外部VREF78内部ADC1工作基准输入***************************************************************/#includec8051f020.h//调用头文件#includestdio.h#includeINTRINS.H//-----------------------------------------------------------------------------//16-bitSFRDefinitionsfor'F02x//-----------------------------------------------------------------------------sfr16DP=0x82;//datapointersfr16TMR3RL=0x92;//Timer3reloadvaluesfr16TMR3=0x94;//Timer3countersfr16ADC0=0xbe;//ADC0datasfr16ADC0GT=0xc4;//ADC0greaterthanwindowsfr16ADC0LT=0xc6;//ADC0lessthanwindowsfr16RCAP2=0xca;//Timer2capture/reloadsfr16T2=0xcc;//Timer2sfr16RCAP4=0xe4;//Timer4capture/reloadsfr16T4=0xf4;//Timer4sfr16DAC0=0xd2;//DAC0datasfr16DAC1=0xd5;//DAC1datasbitP31=P3^1;//按键K5端口定义sbitP32=P3^2;//按键K4端口定义sbitP34=P3^4;//按键K3端口定

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功