欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    多功能波形发生设计方案.docx

    • 资源ID:2196258       资源大小:209.21KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    多功能波形发生设计方案.docx

    1、多功能波形发生设计方案多功能波形发生器设计-电气论文多功能波形发生器设计 陈红,谢勤岚 (中南民族大学实验中心,湖北武汉430074) 摘要:设计一种多功能波形发生器,以C8051F040单片机为控制器,控制波形发生器MAX038和功放实现输出正弦波、方波、三角波。该多功能波形发生器使用键盘调整波形频率,通过液晶显示屏显示频率,使用键盘选择不同的功能模式,实现外测电压的信号采集、数据存储和波形再现;可以实现USB串口传输并将接收到的信号进行波形再现。采集和由串口接收到的数据可通过I2C总线方式存入数据存储器中,也可以在单片机内部存储器中存入波形数据,再将其显示。 关键词 :波形发生器;MAX0

    2、38;C8051F040单片机;I2C 中图分类号:TN911-34;TP937 文献标识码:A 文章编号:1004-373X(2015)12-0110-05 收稿日期:2014-12-15 基金工程:国家自然科学基金(61178087) 0 引言 在现代电子技术的研究及应用领域中,常常需要价格便宜、简单易用、高精度且频率可调的信号源。而信号源的核心是波形发生器,因此设计实用的波形发生器是很有必要的1。 波形发生器可以由晶体管、运算放大器等通用器件构成,但更多的则是用专门的函数信号发生器集成电路实现。早期的波形发生器集成芯片,如L8038、BA205、XR2207/2209等,它们的功能较少、

    3、精度不高,频率上限只有300 kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响2。目前市场上主要的波形发生芯片有美国Harris公司的ICL8038和美国MAXIM公司的MAX038。ICL8038只能产生300 kHz以下的频段波形,而且频率调节与占空比调节不能独立进行,无法满足信号源频率的高精度要求。相比而言MAX038 芯片有着ICL8038 芯片无法实现的优点。因此本设计使用高精度波形发生芯片MAX038,该芯片电路连接简单,只需很少的外部电路就可以产生频率在0.140 MHz的高精度、高稳定度的宽频带波形3。同时结合Silicon Labs公

    4、司的C8051F040单片机,使其可以满足多任务、实时性要求。 1 波形发生器总体设计 采用C8051F040单片机为核心,设计制作可以调节频率的多功能波形信号发生器4。芯片MAX038产生信号的频率可以通过调整电流和外接电容的大小来控制,因此本设计主要采用控制电流的方法来控制MAX038所产生的频率。该信号发生器能同时产生3路输出可调的正弦波、方波和三角波,并且占空比可以连续调节。 系统可以检测外部电路模拟信号,通过一个电压跟随器对检测的信号进行缓冲和隔离后,再经过单片机C8051F040 内集成的A/D 将信号转换为数字信号并存入AT24C02中。当需要输出时再通过D/A转换,转换成模拟信

    5、号,由D/A0 端口输出,经MAX038 芯片产生波形,并由液晶显示器1602 显示其频率。也可以通过USB 串口接受从电脑中下载的数据,并存入AT24C02中,同样可以再通过D/A 转换,转换成模拟信号,由D/A0端口输出,经MAX038产生波形,通过液晶显示器显示频率5。系统可以通过44键盘输入频率值,从而达到直接控制MAX038产生波形的目的,并能够用1602液晶显示器显示波形的频率。系统还可以在单片机中存入波形信号,然后通过功率放大器,直接产生波形。波形发生器框图如图1所示。 2 波形发生器硬件设计 2.1 波形发生模块 将C8051F040单片机的D/A0端口通过一个电阻直接与芯片M

    6、AX038的IN 管脚相连,通过控制D/A0端口的电压值的变化来控制IN 管脚的电流产生变化,从而达到控制波形频率的目的。本信号发生器通过3 路MAX038芯片能同时产生3路输出可调的正弦波、方波、三角波波形,输出的波形稳定性好、精度高,占空比可以连续调节。信号输出部分再采用低损耗电流反馈型宽带运放MAX477作电压放大,很好地解决了带宽和带负载能力的要求。 MAX038所产生的波形的频率是由COSC引脚的电容量和IN引脚的电流所决定的。假设C8051F040单片机的D/A0端口的输出电压为VIN,D/A0端口与IN管脚相连的电阻大小为RIN,COSC 引脚所接的电容的大小为CF,则MAX03

    7、8所产生的波形的频率(单位:MHz)为: 当在FADJ引脚施加一个2.4 V 范围的电压时,可使输出频率有70%的变化,此时可以实现对频率进行精确的调整4。 MAX038所产生的波形的占空比是由DADJ引脚的电压变化来控制的,当DADJ引脚的电压在2.4 V范围内变化时,输出波形的占空比将在15%85%之间变化。 MAX038 产生的正弦波、方波或三角波,具体的输出波形由地址A0和A1的输入数据进行设置,如表2所示(其中X表示无关)。波形发生器能同时3路输出3种波形,所以将3路MAX038的输出波形的选择地址分别设置成为表1所示的3种固定状态。 图2为MAX038的基本电路连接(此图中A0和A

    8、1 选择为输出矩形波)。 2.2 功放模块 波形发生器对输出波形具有一定的功率要求,因此要对MAX038 的输出信号进行功率放大。MAX477 是MAXIM 公司开发的一款低噪声、低微分增益和阶段误差、高转换速率、高精度、高输出电流的高频运算放大器,其-3 dB 带宽可达到300 MHz,最小输出电流为100 mA。因此选用MAX477 对输出信号进行功率放大。图3为功放模块的原理图,通过调节反馈电阻值可以改变输出电压的放大倍数,其中电压最大可放大10 倍左右,整个系统的输出功率可达到数瓦。 2.3 USB接口模块 采用CH372 芯片来接收由串口传来的数据。CH372 是一个USB 总线的通

    9、用设备接口芯片,遵守USB1.1 协议。在本地端,CH372 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机、DSP等控制器的系统总线上。 2.4 数据存储 数据存储主要用于存储外测电压的信号数据以及从USB 串口接收到的数据,采用的存储芯片为AT24C02。AT24C02的特点是支持I2C总线数据传送协议,相应的存储器电路如图4所示。采用由主器件控制传送数据的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。 2.5 键盘模块 为了减少I/O口的占用,波形发生器的键盘采用矩阵式键盘。图5为键盘原理图。 2.6 液晶显示模块

    10、波形发生器采用1602液晶显示屏。1602液晶显示屏具有外接电路简单,操作方便等特点,能够同时显示162,即32 个字符。1602 液晶显示器具体电路如图6所示。 3 软件设计 3.1 软件总设计与总流程图 系统采用C8051F040 单片机。C8051F040 单片机是完全集成的混合信号片上系统型MCU,具有64 个数字I/O 引脚,片内集成了一个CAN 2.0B 控制器,并集成有ADC 和DAC。其中ADC 为真正12 位、100 KSPS 的ADC,并带有PGA 和8 通道模拟多路开关;DAC 有两组,为12 位DAC,且具有可编程数据更新方式6。程序采用C 语言编写,操作C8051F0

    11、40 对外围器件进行控制7,总流程图如图7所示。 3.2 波形发生程序 产生波形时对MAX038的控制只需控制其IN脚所输入的电流。该电流应由C8051F040 提供,而电流是一个模拟量。因此,在这里需要用到C8051F040中的D/A转换器,将数字量转换成模拟量。 C8051F040中的D/A 转换器有两组,每组D/A 转换器的输出摆幅均为0 V到VREE-1LSB,对应的输入码范围是0x0000xFFF。由于三路MAX038 所输出的信号为同一频率,所以在此将只用到第一组D/A转换器。 输入给D/A转换器的数据来源有3种:第一种是从键盘获得的需要产生的波形的频率;第二种是单片机内部存储的波

    12、形数据;第三种是来自于外部信号存储于AT24C02存储器中的波形数据。本程序均可将其完好的转换成模拟信号。 3.3 外测电压采集程序 外测电压为模拟量,要将其进行存储与处理,应当对其进行数字化,在此就需要用到A/D 转化器。C8051F040中的12位A/D 转换器中需要转换的12 b数据存储于2 B 存储器中,2 B 存储器分别为高字节存储器ADC0H和低字节存储器ADC0L。 3.4 USB串口程序 串口程序是由写入命令与读出数据来组成的。在此将根据CH372 芯片的写入、读出时序图来编写具体程序。命令写入程序的步骤如下: (1)将A0置1,使芯片可以写命令; (2)将命令值写到P3端口,

    13、用空函数延时一次; (3)将WR拉到低电平0,用空函数延时一次; (4)将WR拉到高电平1,用空函数延时一次。 以下为命令写入程序的代码: void wr_cmd_ch372(uchar cmd) a0=1; /将A0置1 P3=cmd; /将命令值写到P3端口 nop(); /空函数 wr_ch372=0; /将WR拉到低电平0 nop(); wr_ch372=1; /将WR拉到高电平1 nop(); 数据读出程序的步骤如下: (1)将A0置0,使芯片可以读取数据,用空函数延时一次; (2)将RD拉为低电平0,用空函数延时一次; (3)读出P3端口的数据,用空函数延时一次; (4)将RD拉为

    14、高电平0,用空函数延时一次; (5)把接收到的数据返回给主程序。 以下为数据写入程序的代码: int rd_dat_ch372() int dat; a0=0; /将A0置0 nop(); rd_ch372=0; /将RD拉为低电平0 nop(); dat=P3; /读出P3端口的数据 nop(); rd_ch372=1; /将RD拉为高电平0 nop(); return dat; /把接收到的数据返回给主程序 当选择USB串口传输模式后,应先将中断打开,以获取CH372的中断请求。进入中断时应向CH372写入GET_STATUS 命令,命令代码为0x22,作用是获取CH372的中断状态并通知

    15、CH372取消中断请求,否则单片机会不停的响应CH372 的中断命令。然后再向CH372 中写入RD_USB_DATA 命令,命令代码是0x28,作用是从当前USB中断的端点缓冲区中读取数据块并释放当前缓冲区。 3.5 存储程序 从外测电压采集到的数据以及从USB串口接收的数据都必须存储到数据存储器当中。本多功能波形发生器的数据存储器采用AT24C02 芯片,存储方法采用I2C总线方式存储。I2C总线在传送数据过程中共有3种类型信号是:开始信号、结束信号和应答信号。 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。存储程序开始代码如下: void star(t ) s

    16、da=1; nop(); scl=1; nop(); sda=0; nop(); 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。存储程序结束伪代码如下: void stop() sda=0; nop(); scl=1; nop(); sda=1; nop(); 应答信号:接收数据的器件在接收到8 b 数据后,向发送数据的器件发出低电平脉冲,表示已收到数据。若未收到低电平脉冲,为保证程序的正常运行,将在一段时间后认定器件已经收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。应答信号的

    17、代码如下: void respons() uchar i; scl=1; nop(); while(sda=1)i250)i+; scl=0; nop(); 3.6 矩阵键盘 确定矩阵式键盘上何键被按下时采用“ 行扫描法”。在实际应用中,由于电压存在抖动现象,所以在程序设计时要设计一个消抖程序。由于抖动现象为小概率事件,所以检测两次便可消除抖动现象的影响。 在检测完后,还要有一个松手程序,用于检测是否已经松手,否则按下一次将会产生很多键盘信号。第一行键盘扫描的代码如下: uchar keyscan() P1=0x7f; temp=P1; i(f temp!=0x7f) delay(5); P1

    18、=0x7f; temp=P1; i(f temp!=0x7f) temp=temp0xf0; switch(temp) case 0x77:num=1;break; case 0x7b:num=2;break; case 0x7d:num=3;break; case 0x7e:num=4;break; P1=0x7f; temp=P1; while(temp!=0x7f) P1=0x7f; temp=P1; r eturn num; 3.7 液晶显示程序 由于波形发生器的显示部分只用于写,故只考虑写入部分的程序。在此主要依据1602的时序图来完成对液晶显示的程序编写。液晶显示程序分为写入数据与

    19、写入命令两部分,且写入方法大体相同。写入数据的程序步骤为: (1)将数据/命令选择端RS设置成为高电平,即为写入数据; (2)将数据写入输入P0端口,然后延时5 ms; (3)将使能信号置为高,再次延时5 ms; (4)将使能信号置为低。 液晶显示程序代码为: void write_data(uchar dat) rs=1; /令选择端RS设置成为高电平 P0=dat; /将数据写入输入P0端口 delay(5); en=1; /将使能信号置为高 delay(5); en=0; /将使能信号置为低 4 结语 本系统以C8051F040 为核心,使用键盘操作,通过控制MAX038可以实现正弦波、

    20、方波、三角波的输出,并通过液晶显示屏可以显示波形的频率,可以通过键盘调整频率,操作方便简单。通过键盘选择不同的模式,还可以使用A/D转换器实现外来信号的采集,应用CH372芯片接收USB 串口传输来的信号,并将这些数据通过I2C 总线方式存储到存储芯片之中,再通过D/A 转换器可以将其波形再现。另在单片机内部储存有波形信号,同样可以通过D/A转换器直接将其波形再现。 参考文献 1 张吉林,张晴.MAX038 及函数信号发生器J.南昌大学学报:理科版,2000,24(4):350-355. 2 金斗焕,王少军.采用MAX038制作的函数信号发生器J.电子元器件应用,2001(1):33-35. 3 MAXIN 公司.MAX038 技术资料EB/OL.2011-04-17.http:/. 4 潘琢金.C8051F040 混合信号ISP FLASH 微控制器数据手册M.深圳:新华龙电子有限公司,2004. 5 李朝青.单片机原理及串行外设接口技术M.北京:北京航空航天大学出版社,2008. 6 王为青,程国钢.单片机Keil Cx51 应用开发技术M.北京:人民邮电出版社,2007. 7 童长飞.C8051F系列单片机开发与C语言编程M.北京:北京航空航天大学出版社,2005.


    注意事项

    本文(多功能波形发生设计方案.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开