蔡正科教学单元十四情景十_第1页
蔡正科教学单元十四情景十_第2页
蔡正科教学单元十四情景十_第3页
蔡正科教学单元十四情景十_第4页
蔡正科教学单元十四情景十_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、 学习情境十学习情境十教学单元十四教学单元十四简易波形发生器的设计简易波形发生器的设计2能力目标知识目标锻炼学生的自学能力;树立责任感和科学严谨的工作态度。素质目标教学 目标1. 1. 掌握单片机对掌握单片机对D/AD/A转换器的接口控制方法;转换器的接口控制方法;2. 2. 熟悉单片机用中断、等待、查询方法控制熟悉单片机用中断、等待、查询方法控制D/AD/A转转换器输出需要信的程序设计方法。换器输出需要信的程序设计方法。1. D/A1. D/A转换的基本知识;转换的基本知识;2. DAC08322. DAC0832的工作原理、转换性能;的工作原理、转换性能;3. 3. 单片机与单片机与D/A

2、D/A转换器转换器DAC0832DAC0832的接口的接口原理及控制。原理及控制。重点、难点、教法 重点: D/A转换的基本知识转换的基本知识 难点:单片机与单片机与D/A转换器转换器DAC0832的接口的接口原理及控制。原理及控制。 教法:“教、学、做”引探教学法、任务驱动法、课堂讨论、动画演示分析讨论:4项目:简易波形发生器的设计简易波形发生器的设计任务1:画电路原理图任务2:编程任务3:仿真调试任务4:引言引言 波形发生器是一种数据信号发生器,是一种常用的信号源波形发生器是一种数据信号发生器,是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领,广泛地应用于电子电路、自动

3、控制系统和教学实验等领域。目前使用的波形发生器大部分是利用分立元件组成的域。目前使用的波形发生器大部分是利用分立元件组成的,其体积大其体积大,可靠性差可靠性差,准确度低。准确度低。 本项目介绍一种用本项目介绍一种用AT89S51单片机控制实现的,可产生方单片机控制实现的,可产生方波、三角波、锯齿波、正弦波等多种波形的简易波形发生波、三角波、锯齿波、正弦波等多种波形的简易波形发生器。器。 项目项目10 10 简易波形发生器的设计简易波形发生器的设计一、知识储备一、知识储备1.1 D/A1.1 D/A转换基本知识转换基本知识 单片机系统处理的都是数字信号(数字量)。如果要单片机系统处理的都是数字信

4、号(数字量)。如果要求单片机输出模拟量,则需要一种特殊的电路将数字量变换求单片机输出模拟量,则需要一种特殊的电路将数字量变换为对应的模拟量;如果将模拟量转换为相应的数字量输入到为对应的模拟量;如果将模拟量转换为相应的数字量输入到单片机的端口上,则又需要将模拟信号转换为数字信号的电单片机的端口上,则又需要将模拟信号转换为数字信号的电路。例如:数字式转速表、语音信号的捕获与重放。在单片路。例如:数字式转速表、语音信号的捕获与重放。在单片机外围接口电路中,常采用机外围接口电路中,常采用D/AD/A转换电路来完成将数字量转转换电路来完成将数字量转换成模拟量。换成模拟量。 D/A转换器及其与单片机接口转

5、换器及其与单片机接口 型电阻网络型电阻网络D/AD/A转换器转换器 :1. 在线性DAC中,输出的模拟电压的公式为: 2. 式中, 为输出的模拟量,n为D/A转换器的位数, 为输入的数字量, 为基准电压,D/A转换芯片所需要的基准电压一般由芯片外的基准电源提供, 常取基准电压,n=8(D/A转换器常用芯片DAC0832是8位);3. 目前D/A转换器较多,本设计项目选用大规律集成电路DAC0832来实现D/A转换。1.1 D/A1.1 D/A转换基本知识转换基本知识 ninREFoutDVV2/outVinDREFVVVREF5项目项目10 10 简易波形发生器的设计简易波形发生器的设计 (1

6、)分辨率:其定义是当输入数字量发生单位数码变化(即1LSB)时,所对应的输出模拟量的变化量。(2)线性度:通常用非线性误差的大小表示D-A转换的线性度。(3)转换精度:转换精度以最大静态误差的形式给出。 2、D-A转换器的主要性能指标 10.1.1 D/A转换的初步认知2、D-A转换器的主要性能指标 (4)建立时间:指当D-A转换器的输入数据发生变化后,输出模拟量达到稳定数值(即进入规定的精度范围内)所需的时间。(5)温度系数:在满刻度输出的条件下,温度每升高一度,输出变化的百分数。 10.1.2 DAC0832及其接口电路分析 1、DAC0832主要性能指标 (3)电流输出型)电流输出型的芯

7、片,通过外接的芯片,通过外接一个运算放大器,一个运算放大器,可以很方便地提供可以很方便地提供电压输出电压输出(1)8位并行位并行D-A转换;转换;(2)片内二级数据)片内二级数据锁存,提供数据输入锁存,提供数据输入双缓冲、单缓冲、双缓冲、单缓冲、直通三种工作方式;直通三种工作方式;(5)uP兼容,兼容,可以很方便地可以很方便地与与MCS-51连接;连接;(6)建立)建立时间时间1微妙。微妙。(4)DIP20封装,封装,单电源(单电源(+5V15V,典型值为典型值为5V););10.1.2 DAC0832及其接口电路分析 2、DAC0832芯片内部原理结构 DAC0832由输入寄存器和DAC寄存

8、器构成两级数据输入锁存 10.1.2 DAC0832及其接口电路分析 3、DAC0832引脚功能 DAC0832外部引脚图 10.1.2 DAC0832及其接口电路分析 DAC0832是电流输出,为了取得电压输出,需在电流输出端连接运算放大器,Rfb即为运算放大器的反馈电阻端,运算放大器的接法如图所示 。 1. 引脚和逻辑结构引脚和逻辑结构 20个引脚、双列直插式个引脚、双列直插式8位位输入输入寄存器寄存器8位位DAC寄存器寄存器8位位D/A转换器转换器VREFIOUT2RFBAGNDVCCDGNDDI7DI0CSWR1WR2XFERILELELEIOUT1&RFBV cc 芯片电源电

9、压芯片电源电压, +5V+15VVREF 参考电压参考电压, -10V+10V RFB 反馈电阻引出端反馈电阻引出端, 此端可接运算放大器输出端此端可接运算放大器输出端AGND 模拟信号地模拟信号地DGND 数字信号地数字信号地8位位DAC寄存器寄存器8位位D/A转换器转换器VREFIOUT2RFBAGNDVCCDGNDDI7DI0LEIOUT1LECSWR1WR2XFERILE&8位位输入输入寄存器寄存器RFBDI7 DI0 数字量输入信号数字量输入信号 其中其中: DI0为最低位,为最低位,DI7为最高位为最高位8位位DAC寄存器寄存器8位位D/A转换器转换器VREFIOUT2RF

10、BAGNDVCCDGNDDI7DI0LEIOUT1LECSWR1WR2XFERILE&8位位输入输入寄存器寄存器RFB8位位DAC寄存器寄存器8位位D/A转换器转换器VREFIOUT2RFBAGNDVCCDGNDDI7DI0LEIOUT1LECSWR1WR2XFERILE&8位位输入输入寄存器寄存器RFB0011ILE 输入锁存允许信号输入锁存允许信号, 高电平有效高电平有效CS 片选信号片选信号, 低电平有效低电平有效WR1 写信号写信号1,低电平有效,低电平有效LE1当当 ILE、CS、WR1同时有效时同时有效时, LE=1,输入寄存器的输出随输入而变化输入寄存器的输出随输

11、入而变化WR1 , LE=0, 将输入数据锁存到输入寄存器将输入数据锁存到输入寄存器LE2XFER 转移控制信号,转移控制信号,低电平有效低电平有效WR2 写信号写信号2,低电平有效,低电平有效 当当XFER、WR2同时有效时同时有效时, LE2=1 DAC寄存器输出随输入而变化;寄存器输出随输入而变化; WR1 , LE=0, 将输入数据锁存到将输入数据锁存到DAC寄存器,寄存器, 数据进入数据进入D/A转换器,开始转换器,开始D/A转换转换VREF8位位DAC寄存器寄存器8位位D/A转换器转换器IOUT2RFBAGNDVCCDGNDDI7DI0LEIOUT1LECSWR1WR2XFERIL

12、E&8位位输入输入寄存器寄存器RFB0018位位DAC寄存器寄存器8位位D/A转换器转换器VREFIOUT2RFBAGNDVCCDGNDDI7DI0LEIOUT1LECSWR1WR2XFERILE&8位位输入输入寄存器寄存器IOUT1 模拟电流输出端模拟电流输出端1 当输入数字为全当输入数字为全”1”时时, 输出电流最大,约为:输出电流最大,约为: 全全”0”时时, 输出电流为输出电流为0IOUT2 模拟电流输出端模拟电流输出端2 IOUT1 + I OUT2 = 常数常数255VREF256RFBRFB4、DAC0832接口电路与工作方式 在DAC0832内部有2个可控寄存器

13、,输入信号要经过这两个寄存器才能进入D-A转换器进行D-A转换。控制这两个寄存器的控制信号有5个:输入寄存器由LE、 、 控制;DAC寄存器由 、 控制。根据单片机与DAC0832芯片接口电路的不同,对这两个可控寄存器的控制方式不同,DAC0832的工作方式可分为三种。 CS1WR2WRXFER(1)直通工作方式 直通工作方式是将这两个寄存器的5个控制信号预先均设置为有效,两个寄存器都开通,处于数据接收状态,只要数字信号送到数据输入端DI0DI7,就立即进入D-A转换器进行转换。(2)单缓冲工作方式 所谓单缓冲方式,就是使所谓单缓冲方式,就是使DAC0832的两个输入寄存的两个输入寄存器中有一

14、个处于直通方式,而另一个处于受控的锁存方式,器中有一个处于直通方式,而另一个处于受控的锁存方式,或者使两个输入寄存器同时处于受控的方式。在实际应用或者使两个输入寄存器同时处于受控的方式。在实际应用中,如果只有一路模拟量输出或虽有几路模拟量但并不要中,如果只有一路模拟量输出或虽有几路模拟量但并不要求同步输出的情况,就可采用单缓冲方式。求同步输出的情况,就可采用单缓冲方式。(2)单缓冲工作方式 单缓冲工作方式时的接口电路 (3)双缓冲工作方式 所谓双缓冲方式就是把DAC0832的2个锁存器都连接成受控锁存方式,同时为了实现寄存器的可控,应当给每个寄存器分配一个地址,以便能按地址进行操作。 在多路D

15、-A转换情况下,若要求模拟信号同步输出,则必须采用双缓冲工作方式。 (3)双缓冲工作方式 双缓冲工作方式时的接口电路 10.2.1 控制要求与功能展示实物运行视频10.2.1 控制要求与功能展示 简易波形发生器控制电路原理图 1、任务硬件系统分析 如电路原理图所示,该电路实际上是单片机采用单缓冲的工作方式驱动DAC0832数模转换芯片,实现数模转换输出。由于DAC0832是模拟电流输出,为了取得电压输出,在电流输出端连接有运算放大器uA741,将电流信号转换为电压信号。同时两个控制按键K1和K2分别连接于单片机的外部中断引脚P3.2与P3.3上,通过按键外部中断来实现波形变化的控制。 2、任务

16、控制流程分析 图10-8 简易波形发生器控制流程图 1、创建Proteus仿真电路图 (1)列出元器件表;(2)绘制仿真电路图2、OSCILLOSCOPE(示波器)的使用 虚拟示波器界面 2、OSCILLOSCOPE(示波器)的使用 虚拟示波器与真实示波器的使用方法类似。 依照电路的属性设置扫描速度,用户可看到所测量的信号波形。 如果被测信号有直流分量,则在相应的信号输入通道选择AC(交流)工作方式。 调整增益,以便在示波器中可以显示适当大小的波形。 调节垂直位移滑轮,以便在示波器中可以显示适当位置的波形。 波动相应的通道定位选择按钮,再调节水平定位和垂直定位,以便观测波形。 如果在大的直流电

17、压波形中含有小的交流信号,需要在连接的测试点和示波器之间加一个电容器。 安装插件vdmagdi.e(注意:应把插件安装在Keil3的安装目录下) 将Keil安装目录C51BIN中的VDM51.dll文件复制到Proteus软件的安装目录ProteusMODELS目录下 修改Keil安装目录下的Tools.ini文件,在C51字段中加入TDRV11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并保存。(1)(2)(3)2、Proteus与Keil联调打开“简易波形发生器控制.DSN ”文件,在Proteus的“Debug”菜单中选中“Use Remote Debug M

18、onitor(远程监控)”。右键选中STC89C51单片机,在弹出的对话框“Program File”项中,导入在Keil中生成的HEX文件。Keil打开“简易波形发生器控制.UV2”,打开窗口“Option for Target工程名”。在Debug选项中右栏上部的下拉菜单选中Proteus VSM Simulator。点击进入Settings窗口,设置IP为127.0.0.1,端口号为8000。 在Keil中点击,使用单步执行来调试程序,同时在Proteus中查看直观的仿真结果。(4)(5)(6)3、Proteus与Keil联调 程序初始化运行时状态界面 3、Proteus与Keil联调

19、程序开始输出波形界面 开始出现波形3、Proteus与Keil联调 按键中断切换波形状态 A=0 xFF3、Proteus与Keil联调 波形切换后开始输出界面 切换为锯齿波4、Proteus仿真运行 仿真运行视频硬件电路设计源程序编写源程序编写 uchar code sin_num= 0,0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2,2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9,9,10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21,2

20、2, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 49, 50, 51, 52, 54, 55, 56, 57, 59, 60, 61, 63, 64, 66, 67, 68, 70, 71, 73, 74, 75, 77, 78, 80, 81, 83, 84, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101,102, 104, 106, 107,109, 110, 112, 113, 115, 116,

21、118, 120, 121, 123, 124, 126,128,129, 131, 132, 134, 135, 137, 139, 140, 142, 143, 145, 146, 148,149,151,153, 154, 156, 157, 159, 160, 162, 163, 165, 166, 168, 169, 171, 172, 174, 175, 177, 178, 180, 181, 182, 184, 185, 187, 188, 189, 191, 192, 194, 195, 196, 198, 199, 200, 201, 203, 204, 205, 206,

22、208, 209, 210, 211, 213, 214, 215, 216, 217, 218,219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 230, 231, 232, 233, 234,235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 243, 243, 244, 245, 245,246,246, 247, 247, 248, 248, 249, 249, 250, 250, 251, 251, 251, 252, 252, 253,253, 253, 253, 254,

23、254,254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255,255; 源程序编写源程序编写 /*端口设置端口设置*/sbit cs=P36;sbit change=P32; /*延时函数:延时延时函数:延时1ms*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); 源程序编写源程序编写 / /* * * * * * * * * * * *初始化函数初始化函数* * * * * * * * * * * */ /void init() TMOD=0X01; /设定工作模

24、式设定工作模式 1 temp=ALL-Fosc/12.0/256/FREQ; /定时器初值计算定时器初值计算? TH_0=(uint)temp/256; TL_0=(uint)temp%256; EA=1; /开总中断开总中断 EX0=1; /开外部中断开外部中断 IT0=1; /设定下降沿有效工作方式设定下降沿有效工作方式 ET0=1; /设定定时器工作在定时方式设定定时器工作在定时方式 TR0=1; /开定时器中断开定时器中断 源程序编写源程序编写 / /* * * * * * * * * * * * *切换波形函数切换波形函数* * * * * * * * * * * * * * * *

25、 * * * * */ /void changefreq(void) if(change=0) flag+; if(flag=4) flag=0; num=0; TH_0=(uint)temp/256; TL_0=(uint)temp%256; 源程序编写源程序编写 / /* * * * * * * * * * * *三角波发生函数三角波发生函数* * * * * * * * * * * * * * * * * * * * * * */ /void sanjiaobo(void) for(num=0;num0;-num) cs=0;DAC0832=num;cs=1; 源程序编写源程序编写 /*

26、方波发生函数方波发生函数*/void fangbo(void) cs=0;DAC0832=0XFF;cs=1; for(num=0;num0;num-); /*锯齿波发生函数锯齿波发生函数*/void juchibo(void) cs=0;DAC0832=+num;cs=1; 源程序编写源程序编写 /*正弦波发生函数正弦波发生函数*/void zhengxianbo(void) for(num=0;num0;num-) cs=0;DAC0832=sin_numnum;cs=1; /*外部中断服务函数外部中断服务函数*/void ext0() interrupt 0 changefreq();

27、/引用频率改变函数引用频率改变函数 源程序编写源程序编写 / /* * * * * * * * * * * * * * *定时器中断函数定时器中断函数* * * * * * * * * * * * * * * * */ /void timer0() interrupt 1 TH0=TH_0;TL0=TL_0; /重新装初值重新装初值 TR0=0; switch(flag) case 0: sanjiaobo();TR0=1;break; case 1: fangbo();TR0=1;break; case 2: juchibo();TR0=1;break; case 3: zhengxianb

28、o();TR0=1;break; default: ; 源程序编写源程序编写 /*主函数主函数*/void main() init(); while(1); 1.4 1.4 仿真结果仿真结果 由于由于ProtuesProtues软件较低版本下不能直接仿真软件较低版本下不能直接仿真DAC0832DAC0832,因此,因此我们在我们在Protues7.0Protues7.0以上的版本对以上的版本对DAC0832DAC0832进行了仿真。当程序进行了仿真。当程序执行时,首先输出三角波,通过对按键的次数不同输出不同的执行时,首先输出三角波,通过对按键的次数不同输出不同的波形。按一次波形。按一次k k按键时输出方波,按两次时输出锯齿波,按第按键时输出方波,按两次时输出锯齿波,按第三次时输出正弦波,按第四次时又输出了三角波,不断循环下三次时输出正弦波,按第四次时又输出了三角波,不断循环下去。去。 1.4 1.4 仿真结果仿真结果 1.4 1.4 仿真结果仿真结果 思考与练习思考与练习 1.1. 若改变输出波形周期若改变输出波形周期0.2s0.2s和和0.1s0.1s,则波形发生器程序,则波形发生器程序lsd9-1lsd9-1应如何修改?应如何修改?2

温馨提示

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

评论

0/150

提交评论