课程设计报告-基于DAC0832的波形发生器设计_第1页
课程设计报告-基于DAC0832的波形发生器设计_第2页
课程设计报告-基于DAC0832的波形发生器设计_第3页
课程设计报告-基于DAC0832的波形发生器设计_第4页
课程设计报告-基于DAC0832的波形发生器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、-PAGE . z. / / v .波形发生器设计目录TOC o 1-3 h z uHYPERLINK l _Toc392280820摘要 PAGEREF _Toc392280820 h 1HYPERLINK l _Toc392280821第一章绪论 PAGEREF _Toc392280821 h 2HYPERLINK l _Toc392280822第二章DAC0832及其特性 PAGEREF _Toc392280822 h 3HYPERLINK l _Toc3922808232.1 D/A转换器与单片机接口探究 PAGEREF _Toc392280823 h 3HYPERLINK l _To

2、c3922808242.1.1 数据线连接 PAGEREF _Toc392280824 h 3HYPERLINK l _Toc3922808252.1.2 地址线连接 PAGEREF _Toc392280825 h 3HYPERLINK l _Toc3922808262.1.3 控制线连接 PAGEREF _Toc392280826 h 3HYPERLINK l _Toc3922808272.2 DAC0832的认识 PAGEREF _Toc392280827 h 4HYPERLINK l _Toc3922808282.2.1 DAC0832的构造 PAGEREF _Toc392280828

3、h 4HYPERLINK l _Toc3922808292.2.2 DAC0832的引脚 PAGEREF _Toc392280829 h 4HYPERLINK l _Toc3922808302.2.3 DAC0832的启动控制方式 PAGEREF _Toc392280830 h 5HYPERLINK l _Toc392280831第三章硬件设计 PAGEREF _Toc392280831 h 7HYPERLINK l _Toc3922808323.1 启动方式选择 PAGEREF _Toc392280832 h 7HYPERLINK l _Toc3922808333.2 框图设计 PAGERE

4、F _Toc392280833 h 7HYPERLINK l _Toc3922808343.3 电路图设计 PAGEREF _Toc392280834 h 7HYPERLINK l _Toc392280835第四章程序设计 PAGEREF _Toc392280835 h 9HYPERLINK l _Toc3922808364.1 程序流程图 PAGEREF _Toc392280836 h 9HYPERLINK l _Toc3922808374.1.1 程序设计思路 PAGEREF _Toc392280837 h 9HYPERLINK l _Toc392280838流程图 PAGEREF _To

5、c392280838 h 9HYPERLINK l _Toc3922808394.2 用C语言实现 PAGEREF _Toc392280839 h 11HYPERLINK l _Toc3922808404.3 用汇编语言实现 PAGEREF _Toc392280840 h 14HYPERLINK l _Toc392280841第五章 Proteus仿真及结果 PAGEREF _Toc392280841 h 17HYPERLINK l _Toc3922808425.1方波: PAGEREF _Toc392280842 h 17HYPERLINK l _Toc3922808435.2正弦波: PA

6、GEREF _Toc392280843 h 17HYPERLINK l _Toc3922808445.3三角波: PAGEREF _Toc392280844 h 18HYPERLINK l _Toc3922808455.4梯形波: PAGEREF _Toc392280845 h 18HYPERLINK l _Toc3922808465.5锯齿波: PAGEREF _Toc392280846 h 19HYPERLINK l _Toc392280847设计心得: PAGEREF _Toc392280847 h 20HYPERLINK l _Toc392280848参考文献: PAGEREF _To

7、c392280848 h 21摘要本设计使用AT89C51单片机做控制,选择8位D/A转换器DAC0832作D/A转换。硬件方面,首先51熟悉单片机的构造和工作原理,连接单片机的最小系统。之后熟悉D/A转换器工作方式,经过分析后选择DAC0832的单缓冲启动控制方式,完成电路框图。进一步根据设计要求完成通过独立按键控制D/A输出,作出电路框图和电路原理图。软件方面:设计思路主要表达在两点上。一是控制,通过程序控制DAC转换与输出,按键消抖,选择相应的即将输出的波形。二是产生波形,根据波形的特点编写程序以产生相应波形的数字信号。分别通过C语言和汇编语言实现简易的波形发生器,输出方波、正弦波、三角

8、波、梯形波和锯齿波,通过独立按键控制分别输出不同的波形。以KILL与Proteus为设计平台,仿真测试设计结果的正确性。关键字: 51单片机,DAC0832,单缓冲启动控制方式,波形发生器,C语言设计,汇编语言设计绪论单片微型计算机简称单片机,是典型的嵌入式微控制器Microcontroller Unit, 常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成*一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机最小系统,和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的

9、体积小、质量轻、价格廉价、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与构造的最正确选择。它最早是被用在工业控制领域。51单片机是目前最流行的8位单片机。51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的开展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是根底入门的一个单片机,还是应用最广泛的一种。需要注意

10、的是52系列的单片机一般不具备自编程能力。DAC0832及其特性2.1 D/A转换器与单片机接口探究D/A转换器与单片机接口具有软硬相依性。在连接过程中要考虑到数据线、地址线、控制线的连接。2.1.1 数据线连接 D/A转换器与单片机接口要考虑到两个问题:一个是位数,当高于8位的D/A转换器与8位数据总线的51单片机接口时,51单片机的数据必须分时输出,这时就必须考虑数据分时传送的格式和输出电压毛刺问题;二是D/A转化器的内部构造,当D/A转换器的内部构造没有输入锁存器时,必须在单片机与D/A转换器之间增设锁存器或者I/O口。最常用的是8位带锁存端的D/A转换器与8位单片机的接口,这时只需要将

11、单片机的数据总线和D/A转换器的8位数据输入端一一对应即可。2.1.2 地址线连接 一般的D/A转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或者局部译码,经译码器输出控制片选信号,也可以用*一位I/O线来控制片选信号。也有少数D/A转换器有少量的地址线,用于选中片内独立的存放器或者选择输出通道,这时单片机执行的地址线与D/A转换器的地址线对应连接。2.1.3 控制线连接D/A转换器主要有片选信号、写信号、及启动转换信号等,一般由单片机的有关引脚或译码器提供。一般来说,写信号多由单片机的信号控制;启动信号常常由片选信号与写信号的组合形式LE1、LE2形成,当单片机执行一条输出指

12、令时,传送的地址使转换器的片选信号有效,由实现启动。具体实现原理见1.2节2.2DAC0832的认识图1.1 DAC0832的管脚构造2.2.1 DAC0832的构造DAC0832的构造如图1.1所示,主要由控制逻辑电路、输入存放器、DAC存放器和D/A转换器构成。由上图逻辑控制电路可知:LE1=(+ILELE2=+ 由LE1控制输入存放器读入数据,由LE2控制输入存放器向DAC存放器传输数据,同时开场D/A转换。2.2.2 DAC0832的引脚DAC0832的引脚如图1.1所示:DI0DI7:8位数据输入线,高电平有效。ILE:数据锁存允许控制输入线,高电平有效。:片选信号输入线,低电平有效

13、。:输入锁存器写选通输入线,负脉冲有效。输入锁存器的信号就是LE1。LE1负跳变有效。:数据传送控制信号输入线,低电平有效。:DAC存放器写选通信号输入线,负脉冲有效。DAC锁存信号就是LE2,LE2的负跳变有效。:模拟电流输出线。:模拟电流输出线,采用单极性输出时,通常接地。:反应信号输入线。反应电阻被制作在芯片里,用作外接运放的反应电阻,为D/A转换器提供电压输出。:参考电压输入端。要求外接一精细电压源,电压*围在-10V+10V之间选定。通过的符号来改变输出极性。:电源接口。AGND:模拟地。DGND:数字地。注:数字信号的高频噪声很大,如果模拟信地和数字地混合的话,就会把数字的噪声传到

14、模拟局部,造成干扰。如果分开的话,高频噪声可以在电源处通过滤波来消除掉。2.2.3 DAC0832的启动控制方式 DAC0832有三种启动控制方式: 1直通方式:将、信号都接地,ILE信号引脚接高电平,只要数据传送到数据线上,两级锁存器同时开场工作,并启动D/A转换,即转换器处于非受控状态。在这种工作方式下,转换器的数据线不能直接和单片机的数据线P0.0P0.7相连接。因为P0口分时复用为低8位的地址总线和数据总线,对输出无锁存能力,会使转换器的输出不确定。但是可以将ADC的数据线连接到*个I/O口上,执行端口输出指令MOV P* A即可启动一次D/A转换。这种方式很少采用。 2单缓冲方式:两

15、级锁存器承受同一种控制,例如将和直接接地,8位ADC锁存器处于非受控状态,只有8位输入锁存器处于受控状态,即此时仅有LE1控制ADC。这种方式在不要求多个模拟同步输出时采用。 3双缓冲方式: 俩个锁存器都处于受控状态,单片机要对转换器进展两步写操作:第一次执行指令使LE1有效,称作第一级缓冲,第二次执行指令使LE2有效,称作第二级缓冲。这种方式的优点是数据接收和启动转换可以异步进展,可在D/A转换的同时接收下一个转换数据,以提高转换速度,还可以实现多个转换器同时启动转换,同步输出。第三章 硬件设计3.1 启动方式选择 因为本设计要求设计一个波形发生器,要求能产生正弦波、方波、三角波、梯形波、锯

16、齿波,而且由按键控制输出的波形。故各个波形输出并非同步输出,而是由按键控制,单个输出,并且本例只需要一个DAC,如果选择双缓冲方式就会加大不必要的难度;直通方式不能有效的控制DAC转换,转换时可能会出现数据流失。应选择单缓冲启动控制方式来驱动DAC0832。3.2 框图设计根据2.1节的判断,选择AT89c51单片机作控制,实现电路框如下:图2.1 硬件设计框图3.3 电路图设计根据以上框图,选择+12V的基准电压,选择一级集成运放作放大电路,连接A/D转换电路图如下:图2.2 单片机与ADC的连接方式 此外加上单片机最小系统,用P1口控制输出的波形,电路连接如下:图2.3 电路原理图第四章

17、程序设计4.1 程序流程图4.1.1 程序设计思路 1因为要使用到按钮本例中选择独立按键,必须使用到键盘扫描,首先要进展键盘消抖,然后通过扫描确定是哪个按键被按下,通过I/O口本例中为P1口的数据判断选择五种波形中的哪一个; 2根据1中的结果,通过编程产生各个波形的数字信号; 3控制DAC转换数字信号为模拟信号。程序框图如下:图3.1 程序设计思路4.1.2流程图在本流程图中分别以k1、k2、k3、k4、k5代表单片机的I/O口P1.0、P1.1、P1.2、P1.3、P1.4;设置flag1、flag2、flag3、flag4、flag5为1时分别代表方波、正弦波、三角波、梯形波、锯齿波。当确

18、认按键按下时,令相对应的flag*=1,然后用连续的判断程序来选择将要输出的波形。程序实现了只需按一下按钮便可持续输出对应的波形。流程图如下: 图3.2 程序流程图4.2 用C语言实现 根据程序流程图用C语言编程,得C语言实现的代码为:#include #include #define DAC0832 *BYTE0*7fff sbit k1=P10; sbit k2=P11; sbit k3=P12; sbit k4=P13;sbit k5=P14;int flag1=0;int flag2=0;int flag3=0;int flag4=0;int flag5=0;unsigned char

19、 code zheng*ian256= 此处省略为正弦波数字信号 ;void delay() /延时程序 int i; for(i=0;i1000;i+); void panduan(void) /函数panduan用于扫描按键状态,判断输出波形 if(k1=1) /按键消抖 delay(); if(k1=1) /通过赋值flag选择波形 flag1=1;flag2=0;flag3=0;flag4=0;flag5=0; if(k2=1) delay(); if(k2=1) flag1=0; flag2=1;flag3=0;flag4=0;flag5=0; if(k3=1) delay(); i

20、f(k3=1) flag1=0;flag2=0;flag3=1;flag4=0;flag5=0; if(k4=1) delay(); if(k4=1) flag1=0;flag2=0;flag3=0;flag4=1;flag5=0; if(k5=1) delay(); if(k5=1) flag1=0;flag2=0;flag3=0;flag4=0;flag5=1; void bo*ing(void) /函数bo*ing用于产生选择好的波形 if(flag1=1) /产生方波 DAC0832=0*00; delay(); DAC0832=0*ff; delay(); else if(flag2

21、=1) /产生正弦波 int i; for(i=0;i256;i+) DAC0832=zheng*iani; else if(flag3=1) /三角波 int i; for(i=0;i0;i-) DAC0832=i; else if(flag4=1) /梯形波 int i; for(i=0;i255;i+) DAC0832=0; for(i=0;i0;i-) DAC0832=0*FF; for(i=255;i0;i-) DAC0832=i; else if(flag5=1) /锯齿波 int i; for(i=0;i255;i+) DAC0832=i; void main() /主函数 P1

22、=0*00; while(1) panduan(); bo*ing(); 4.3 用汇编语言实现在用C语言实现设计之后,我又尝试使用汇编语言完成任务,由于对汇编语言还不够熟悉,只做到了以开关控制的矩形波、三角波、梯形波和锯齿波。程序为:START: MOV DPTR ,#7FFFH MOV A,#00 LOOP: MOV R0 ,#00 MOV P1 ,R0 MOV R0 ,P1 P1.0 , K0 P1.1 , K1 P1.2 , K2 P1.3 , K3 K0: AJMP LOOP1 K1: AJMP LOOP2 K2: AJMP LOOP3 K3: AJMP LOOP4 LOOP1: M

23、OV A,#00 ;LOOP1:方波 MOV* DPTR ,A MOV R1, #255 MOV R4, #255 DEL1: DJNZ R1,$ DJNZ R4, DEL1 MOV A,#255 MOV* DPTR ,A MOV R1, #255 MOV R4, #255 DEL2: DJNZ R1,$ DJNZ R4, DEL2 LJMP LOOPLOOP2: ;LOOP3:三角波形 UP: MOV* DPTR,A INC A CJNE A,#0FFH,UPDOWN:MOV* DPTR,A DEC A CJNE A,#00H,DOWN LJMP LOOPLOOP3: ;LOOP4:梯形波 UP1: MOV* DPTR,A ;上升阶段 INC A CJNE A,#0FFH,UP1 MOV* DPTR ,A ;上底 MOV R1, #255 DJNZ R1,$ DOWN1:MOV* DPTR,A ;下降阶段 DEC A CJNE A,#00H,DOWN1 MOV* DPTR ,A ;下底 MOV R1, #255 DJNZ R1,$ LJMP LOOPLOOP4: MOV* DPTR ,A ;LOOP5:锯齿波 INC A MOV R1, #10 DJNZ

温馨提示

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

评论

0/150

提交评论