课程设计(论文)-波形发生器设计.doc_第1页
课程设计(论文)-波形发生器设计.doc_第2页
课程设计(论文)-波形发生器设计.doc_第3页
课程设计(论文)-波形发生器设计.doc_第4页
课程设计(论文)-波形发生器设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编号: 958 2008年全区电子制作大赛梧州学院赛区比赛设计报告书设计题目: (d1)波形发生器 参赛者姓名: 所在学院: 梧州学院 所在班级: 05级电子信息工程本科3班 竞赛时间: 波形发生器设计与总结报告摘 要:本设计是基于信号发生芯片max038的多功能波形发生器。由max038、da转换,max414运算放大器、lcd12864显示、单片机以及外围电路构成的多波形发生器。利用max038产生正弦波、三角波、锯齿波、方波的波形,单片机通过da转换对max038的控制,从而实现频率和占空比的步进调控,在1hz2.4mhz内产生任意正弦波、三角波、锯齿波和方波。 采用max414和tlc549构成信号放大采样电路,用液晶模块lcd12864可实现实时显示波形的类型、频率、幅度和占空比等功能;。经多次测试,本设计整机具有波形清晰,频率、相位和幅度相对稳定,没有明显的失真,采用键盘输入,lcd显示,操作显示界面简单直观,实现按步进进行调整。 关键词:单片机 max038 da转换 占空比 lcd12864waveform generatorabstract : the design is based on the signals in the chip-wave generator max038。this multi-wave generator is make up of max038, d a conversion, max414 operational amplifiers, lcd12864, scm and the external circuit. max038 is used to generate sine wave, triangle wave, sawtooth and square waveform, scm through d a conversion of the control max038, thus realizing the frequency and duty cycle step-control, in the range of 1 hz 2.4mhz generate any sine wave, the triangular wave, sawtooth and square wave。max414 and tlc549 are make up of signal amplification and sampling, with lcd module lcd12864 can achieve real-time display of the waveform type, frequency, magnitude and the function of duty cycle etc。 it is proved to be well functioning ,the output of signal is clear , the frequency, phase and amplitude are comparative stability, there was no obviously distortion, using keyboard input and lcd output,makes it has a simple user interface , realize step-control.keyword: scm max038 d/a converter duty cycle lcd12864目 录1. 系统设计 61.1 设计要求 61.1.1 基本要求 61.1.2 发挥部分 61.2 总体设计方案 61.2.1 设计思路 61.2.2 方案论证与比较 61.2.3 系统组成 92.1 max038波形发生电路模块 92.2 cd4051模拟开关电路模块设计 102.3 d/a转换电路模块设计 112.4 输出信号采样电路模块设计 122.5 lcd12864显示电路设计 122.6 4*4矩阵键盘输入电路模块 132.7 电源模块的设计 133. 系统软件设计及分析 143.1 系统流程分析 143.2 主体程序流程图 173.3 部分程序 183.3.1 d/a转换原理程序 183.3.2 占空比调节程序 203.3.3 波形选择程序 223.3.4 频段选择程序 233.3.5键盘扫描程序 233.3.6 频率显示部分程序 273.3.7 lcd12864显示程序 323.3.8数据采样部分程序 374. 系统调试及数据处理 384.1 电路调试 384.2 软件调试 384.3 数据处理及误差分析 404.4 设计总结 425. 参考文献 431. 系统设计1.1 设计要求1.1.1基本要求(1)具有产生正弦波、方波、三角波三种周期性波形的功能。(2)输出波形的频率范围为100hz20khz,重复频率可调,频率步进间隔100hz。 (3) 输出波形的幅度范围05v(峰-峰值),可按步进0.1v(峰-峰值)调整。(4)输出显示波形的型类、周期和幅度的功能。1.1.2 发挥部分(1)键盘输入产生任意波形。(2)输出波形频率范围扩展至100hz200khz.(3)增加稳幅输出功能,当负载变化时,输出电压幅度变化3%。1.2 总体设计方案1.2.1 设计思路题目要求设计一个波形发生器,波形发生器的输出为正弦波、方波、三角波和锯齿波。设计中利用max038单片函数信号发生器的特性,产生各种波形。输入部分采用运算放大器对微弱信号进行放大使波形易于观察。控制部分用单片机和键盘组成的人机交互控制界面。采样部分采用运算放大器和a/d转换芯片。而显示部分则用带字库的液晶模块lcd12864,lcd12864可以直观显示波形的型类、频率、幅度和占空比等功能。1.2.2 方案论证与比较1. 波形发生电路的设计方案论证与选择 方案一:采用分立元件构成非稳态的多谐振振荡器,根据具体需要加入积分电路等构成波形发生器。但这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,输出的波形易受外界环境影响,不稳定,对电路硬件要求很高,不易实现。 方案二:利用单片集成芯片实现函数信号发生器。这种信号发生器能产生多种波形信号且达到较高频率,且易于调试,成本低。 方案三:利用专用直接数字合成dds芯片实现函数信号发生器。这种信号发生器能产生任意波形并达到很高频率,但成本较高。综合以上三种方案,从性能和制作成本考虑,本设计采用方案二,即采用单片机控制键盘输入通过d/a转换控制单片函数信号发生芯片max038产生可调频率、幅度和占空比的波形信号。2. 开关电路的设计方案论证与选择方案一:采用机械式开关,应用最为普遍,价格低廉,操作简单,只需让两段需要导通的导体接触就可以使电路导通,但开关控制过程必须要有机械力的参与才能才能完成控制工作,响应时间决定于拨动的速度。方案二:采用电子模拟开关,模拟开关是一种三稳态电路,它可以根据选通端的电平,决定输人端与输出端的状态。当选通端处在选通状态时,输出端的状态取决于输人端的状态;当选通端处于截止状态时,则不管输人端电平如何,输出端都呈高阻状态。模拟开关在电子设备中主要起接通信号或断开信号的作用。由于模拟开关具有功耗低、速度快、无机械触点、体积小和使用寿命长等特点。其内部电路组成和工作原理如图1图1 模拟开关的电路组成和工作原理综上所述,本设计技术要求波型选择开关响应速度快,所以采用方案二,使用8选1模拟开关cd4051。3. d/a转换器的设计方案与论证 方案一:按照输出类型的不同可以分为电压输出型和电流输出型器件。 电压输出型d/a转换器采用内置的输出放大器来实现低阻抗的输出,没有放大部分的延迟,可以做到很高的速度且一般用于高阻抗负载的情况下。电流输出型d/a转换器则用得较少。 方案二:按照接口类型的不同可以分为串行输出和并行输出器件。并行d/a转换器的转换速度快,但占用i/o多。串行d/a转换器输出建立时间相对于并行d/a转换器稍长,但芯片与cpu连接时使用引线少、电路简单,成本低。 方案三:按照数字量的位数可以分为8位、10位、12位、16位等d/a转换器,位数越大分辨率越大但相应的成本也越高。 综上所述,综合三个方案中选择性价比较好的d/a转换器,本设计采用maxim公司的8位串行电压输出型d/a转换器max517。4. 信号采样电路的设计方案 方案一:采用并行a/d转换芯片,并行方式一般在转换后可直接接收,转换时间快但使用芯片的引脚比较多。 方案二:采用串行a/d转换芯片,串行方式所用芯片引脚少,封装小,在pcb板上占用的空间也小,但需要软件处理才能得到所需的数据。 综上所述,结合本设计对数据采样的各项要求和单片机引脚的具体情况,采用ti公司的8位串行a/d转换芯片tlc549.通过单片机at89s52产生满足时序要求的输入/输出时钟,以及对a/d芯片的片选控制,完成对整个a/d转换过程的控制。tlc549具有8位分辨率模数转换,最大转换时间为17us,每秒访问和转换最多可达40000次,功耗低,可以满足本设计要求。5. 显示方式的设计方案论证与选择 方案一:采用led数码管显示。如果需要显示的内容较多,过多增加数码管的个数显然不可行,进行轮流显示则控制复杂,此外,数码管需要较多连线,使电路复杂,功耗比较大。 方案二:采用带字库的液晶模块lcd12864显示。可以显示字符、图片,利用单片机直接驱动液晶显示模块,设计简单,且显示界面宽大美观舒适,耗电小。 综上所述,本设计要显示的内容较多,所以选择方案二,采用lcd12864实时显示波形的型类、频率、占空比和幅度等功能。6. 电源模块的设计方案论证与选择方案一:采用升压型稳压电路。用两片mc34063芯片分别将3v的电池电压进行直流斩波调压,得到+5v的稳压输出。只需使用两节电池,既节省了电池又减小系统体积重量,但该电路供电电流小,供电时间短,无法保证系统长期稳定运作。 采用方案二:采用环形变压器,与普通变压器相比激磁能量和铁心损耗将减少25%,电效率高达95%以上,漏磁小,电磁辐射小,振动噪声小,无需另加屏蔽层来屏蔽电磁干扰,适合用在高灵敏度和易受高频影响的电子设备上。加上三端固定稳压器获得5v电源,+5v用lm7805输出,-5v用lm7905输出,先在变压器的输出段用一个用整流二极管组成的整流桥整流,再用电容滤掉高频成分,这样就可以获得一个纹波系数小、稳定的电压。综上所述,选择方案二,采用环形变压器三端稳压器电路。1.2.3 系统组成 经过以上方案的比较和论证,最终确定的系统组成框图如图1.1.6所示。单片机4*4键 盘电 路lcd12864显示电路频段 电容选择 电路波形发生电 路d/a转换电路输出信号放大电 路ad采样电路图1.1.6 系统组成框图2. 单元电路设计2.1 max038波形发生电路模块max038的外围电路如下图所示,引脚a0、a1接单片机i/o口,引脚cosc接电容选择电路的x引脚,引脚ref是输出正2.5v电压,用作控制占空比的d/a转换器的基准电压输入,in引脚是频率控制引脚,通过一个25k电阻与d/a转换器输出端相连。 图2.1 max038外围电路图若负载是容性较大的负载,则max038的输出端与一个50的电阻相连。由于max038的输出信号为恒定的2v(p-p),且输出电流不高,所以必须依靠输出级的放大电路来提供足够的输出电压和电流,由放大电路和a/d转换芯片组成数据采样系统则可以实现数据采样。所以设计应该满足以下要求:(1) 首先,要求放大电路具有很高的频宽。因为输出信号最大基频为20mhz,起三角波和矩形波的高次谐波成分很高,只有高频宽才能得到不失真的输出波形。(2) 其次,高频大信号放大要求放大电路有足够的输出电压转换速率。(3) 另外,要带动低阻负载,放大电路的电流输出能力也是个重要参数。要在100的负载上输出6v信号,则放大器至少要有60ma的连续电流输出能力。2.2 cd4051模拟开关电路 cd4051 开关电路见图2.2。cd4051相当于一个单刀八掷开关,开关接通哪一通道,由输入的3位地址码abc来决定。其真值表见表1。 “ en”是禁止端,当 “en”=1时,各通道均不接通。此外,cd4051还设有另外一个电源端vee,以作为电平位移时使用,从而使得通常在单组电源供电条件下工作的 cmos电路所提供的数字信号能直接控制这种多路开关,并使这种多路开关可传输峰峰值达15v的交流信号。图2.2 cd4051模拟开关电路表1 真值表输入状态接通通道encba0000“0”0001“1”0010“2”0011“3”0100“4”0101“5”0110“6”0111“7”1均不接通2.3 d/a转换电路模块d/a转换电路由2片max517及外围电路组成,分别与max038的in引脚和dadj引脚相连,如图2.2,其中与dadj相连的d/a转换器是双极性输出。为了保证d/a转换器总线在空余方式为高电平,所以接上拉电阻。另max517a为调节占空比输出,所以要用双极性接法,运算放大器采用的是max414是美信公司的4路输出精密运算放大器,。d/a模块转换选用2路用于双极性输出正负电压的转换。 图2.2 d/a转换电路模块图2.4 输出信号采样电路模块设计 输出信号采样电路模块设计由一片max414和tlc549构成,分别与单片机p3.5、p3.6和 p3.7脚连接,如图2.3,其中max414将输出模拟信号放大,模拟输入信号(analog in)经过tlc549内部采样/保持器至8-bit逐次比较式a/d转换器。片选控制端(cs_,低有效)和输入/输出时钟端(i/o clock)与独立的内部系统时钟通过内部逻辑控制电路,实现外部接口与内部的数据传输,通过单片机从而实现波形幅度的控制。如图2.3输出信号采样电路模块设计2.5 lcd12864显示电路设计采用带字库的点阵图形液晶模块lcd12864,可以显示汉字、字符和图形等。且功耗很低,显示效果美观。lcd12864的d0d7接单片机p0口,rs、rw和lcden分别接p2.0、p2.1和p2.2口。可调电阻rp21用来调节lcd显示屏的亮度。psb接高电平,表示这里采用的是并行数据控制方式。如图2.4 lcd12864显示电路设计2.6 4*4矩阵键盘输入电路模块 输入电路模块采用4*4矩阵键盘输入,如图2.5,行列分别与单片机的p1口连接。按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。对键盘的工作过程可分两步:第一步是cpu首先检测键盘上是否有键按下;第二步是消抖;第三步是识别是哪一个键按下。检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。 图2.5 4*4矩阵键盘输入电路2.7 电源模块的设计电源电路是用环形变压器三端固定稳压器获得5v电源,+5v用7805输出,-5v用7905输出,环形变压器的电压经过三端固定稳压器,再经整流桥整流,用电容滤掉高频成分。如图2.6: 图2.6 5v稳压电源电路3. 系统软件设计及分析3.1 系统流程分析4*4键盘输入全部用作功能键,键盘具体划分如下:第一行主要功能是占空比调节,有微调加1、粗调减5、粗调加5、占空比50%;第二行主要功能是频率的调节,有频段选择,微调加1,粗调加10,微调减1;第三行实现其他功能,有波形选择,幅度刷新。先输入功能键然后按照要求执行程序。其中d2是选择max038产生的波形,d1是计算和输出频率,d0是控制波形占空比,单片机通过cd4051控制频段范围,在选择的频段范围内通过设定的按键步进调节就可以得到需要的信号。频率数值设定在102.4mhz范围内直接送到lcd12864显示。表3.1 波形选择关系 波形选择逻辑关系表数值a0a1输出波形000方波,脉冲波1x1正弦波211三角波,锯齿波表3.2 键盘界面键盘操作界面微调+粗调-粗调+占空比50%频段微调+粗调+微调-波形幅度刷新 首先由=/,电流由0.5v5v通过电阻r12=25k,得到20200a的电流,抛开重叠的频段不计, 表3.3 max038频率范围及电容关系图 在d/a转换部分和波形发生部分则根据以下公式计算:控制频率d/a转换器公式: 控制占空比d/a转换器公式: 电路的振荡频率为:=(1-0.2915)=(1-0.2915)/波形占空比为: 由于电路原因以及程序问题,设计的波形发生器产生的波形的占空比、频率、振幅等不可能如理论那么准确。 3.2 主体程序流程图开 始初 始 化功能 lcd显示 键盘 扫描频率调制波形选择占空比调制显示数值范围是否在10%90%max038的a0、a1选择波形计算d/a所需要数据d0选择8个频段之一计算d/a所需要数据d1单片机输入d0串行数据单片机输入d1串行数据采集a/d所需要数据d2单片机输入d2串行数据3.3 部分程序3.3.1 d/a转换原理程序/*控制频率的串行max517的函数*/* 起始条件子函数 */void start0(void)sda0 = 1;scl0 = 1;_nop_();sda0 = 0;_nop_();/* 停止条件子函数 */void stop0(void)sda0 = 0;scl0 = 1;_nop_();sda0 = 1;_nop_();/* 应答子函数 */void ack0(void)sda0 = 0;_nop_();scl0 = 1;_nop_();scl0 = 0;/* 发送数据子程序,ch为要发送的数据 */void sendda0(uchar ch)uchar bitcounter = 8; /位数控制uchar tmp; /中间变量控制dotmp = ch;scl0 = 0;if (tmp&0x80)=0x80)/如果最高位是sda0 = 1;elsesda0 = 0;scl0 = 1;tmp = ch1;/左移ch = tmp;bitcounter-;while(bitcounter);scl0 = 0;/* 串行da转换子函数 */void dacout0(uchar ch)start0();/ 发送启动信号sendda0(0x58);/ 发送地址字节ack0();sendda0(0x00);/ 发送命令字节ack0();sendda0(ch);/ 发送数据字节ack0();stop0();/ 结束一次转换3.3.2 占空比调节程序/*控制占空比的串行max517的函数*/* 起始条件子函数 */void start1(void)sda1 = 1;scl1 = 1;_nop_();sda1 = 0;_nop_();/* 停止条件子函数 */void stop1(void)sda1 = 0;scl1 = 1;_nop_();sda1 = 1;_nop_();/* 应答子函数 */void ack1(void)sda1 = 0;_nop_();scl1 = 1;_nop_();scl1 = 0;/* 发送数据子程序,ch为要发送的数据 */void sendda1(uchar ch)uchar bitcounter = 8; /位数控制uchar tmp; /中间变量控制dotmp = ch;scl1 = 0;if (tmp&0x80)=0x80)/如果最高位是sda1 = 1;elsesda1 = 0;scl1 = 1;tmp = ch1;/左移ch = tmp;bitcounter-;while(bitcounter);scl1 = 0;/* 串行da转换子函数 */void dacout1(uchar ch)start1();/ 发送启动信号sendda1(0x58);/ 发送地址字节ack1();sendda1(0x00);/ 发送命令字节ack1();sendda1(ch);/ 发送数据字节ack1();stop1();/ 结束一次转换3.3.3 波形选择程序/*/void boxing(uchar boxing) /*波形选择*/ switch(boxing) case 0:a0=0;a1=1;send_str(0x93,name04,6);break; /正弦波 case 1:a0=0;a1=0;send_str(0x93,name05,6);break; /方波 case 2:a0=1;a1=0;send_str(0x93,name06,6);break; /三角波 case 3:a0=1;a1=0;send_str(0x93,name07,6);break; /矩齿波 case 4:a0=0;a1=0;send_str(0x93,name08,6);break; /脉冲 default:break; 3.3.4 频段选择程序/*/void pinduan(uchar pinduan) /*单位控制频段选择函数*/ switch(pinduan) case 0: y2 = 0;y1 = 0;y0 = 0;send_num(0x85,0,1); break; /*选择100uf电容*/ case 1: y2 = 0;y1 = 0;y0 = 1;send_num(0x85,1,1); break; /*选择10uf电容*/ case 2: y2 = 0;y1 = 1;y0 = 0;send_num(0x85,2,1); break; /*选择1uf电容*/ case 3: y2 = 0;y1 = 1;y0 = 1;send_num(0x85,3,1); break; /*选择0.1uf电容*/ case 4: y2 = 1;y1 = 0;y0 = 0;send_num(0x85,4,1); break; /*选择0.01uf电容*/case 5: y2 = 1;y1 = 0;y0 = 1;send_num(0x85,5,1); break; /*选择1000pf电容*/case 6: y2 = 1;y1 = 1;y0 = 0;send_num(0x85,6,1); break; /*选择100pf电容*/case 7: y2 = 1;y1 = 1;y0 = 1;send_num(0x85,7,1); break; /*选择20pf电容*/default:break;3.3.5 键盘扫描程序/*/键盘扫描uchar keyscan(void)uchar temp;p1=0xfe;temp=p1;/读p3temp=temp&0xf0;delay1ms(25);if(temp!=0xf0)delay1ms(100); /去抖if(temp!=0)switch(temp)case 0xe0:num=table0;flag=1;break;case 0xd0:num=table1;flag=1;break;case 0xb0:num=table2;flag=1;break;case 0x70:num=table3;flag=1;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xfd;temp=p1;/读p3temp=temp&0xf0;if(temp!=0xf0)delay1ms(50); /去抖if(temp!=0)switch(temp)case 0xe0:num=table4;flag=1;break;case 0xd0:num=table5;flag=1;break;case 0xb0:num=table6;flag=1;break;case 0x70:num=table7;flag=1;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xfb;temp=p1;/读p3temp=temp&0xf0;if(temp!=0xf0)delay1ms(50); /去抖if(temp!=0)switch(temp)case 0xe0:num=table8;flag=1;break;case 0xd0:num=table9;flag=1;break;case 0xb0:num=table10;flag=1;break;case 0x70:num=table11;flag=1;break;while(temp!=0xf0)temp=p1;temp=temp&0xf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论