课程设计(论文)-基于Atmega128的并行DA(DAC0832)设计.doc_第1页
课程设计(论文)-基于Atmega128的并行DA(DAC0832)设计.doc_第2页
课程设计(论文)-基于Atmega128的并行DA(DAC0832)设计.doc_第3页
课程设计(论文)-基于Atmega128的并行DA(DAC0832)设计.doc_第4页
课程设计(论文)-基于Atmega128的并行DA(DAC0832)设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

基于atmega128的并行da(dac0832)设计院系:武汉理工大学华夏学院信息系实验学生: 指导老师: 二零一一年七月目录1、设计任务42、芯片简介4 2.1 特点4 2.2 引脚说明4 2.3 工作原理5 2.4 时序分析63、系统方案设计9 3.1 da转换模块的论证与选择93.2电流转电压模块的论证与选择10 3.3 软件程序模块的论证与选择 104、系统理论分析与计算 11 4.1 电流转电压电路的分析与计算11 4.2 软件程序的分析与实现115、电路设计165.1 系统总体框图165.2 单极性电路原理图165.3 双极性电路原理图165.4 电源176、测试方案与测试结果176.1 测试方案176.2 测试条件与仪器176.3 测试结果与分析17 6.3.1 测试结果(数据)18 6.3.2 测试分析与结论.18附录1 参考文献 19附录2 系统原理图 19 1、设计任务 设计制作一个da转换电路,要求使用atmega128对测量数据进行处理及显示。da转换芯片要求使用单片直流输出型8位并行数/模转换器dac0832。2、芯片简介2.1 特点双缓冲,单缓冲,或直通数字数据输入 n 可容易地与12位1230系列d/a转换器进行互换且插脚兼容 n 可直接与所有流通的微型处理器相接 n 线性指定为零,且只能进行全面调整不是最佳直线拟合 n 在10v全参考4象限倍增中工作 n 可用于电压转换模式 n 逻辑输入满足ttl电压水平说明(1.4v逻辑门限值) n 需要时,可运行“stand alone”(没有p) 2.2 引脚说明* d0d7:8位数据输入线,ttl电平,有效时间应大于90ns(否则锁存器的数据会出错); * ile:数据锁存允许控制信号输入线,高电平有效; * cs:片选信号输入线(选通数据锁存器),低电平有效; * wr1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ile、cs、wr1的逻辑组合产生le1,当le1为高电平时,数据锁存器状态随输入数据线变换,le1的负跳变时将输入数据锁存; * xfer:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效; * wr2:dac寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由wr2、xfer的逻辑组合产生le2,当le2为高电平时,dac寄存器的输出随寄存器的输入而变化,le2的负跳变时将数据锁存器的内容打入dac寄存器并开始d/a转换。 * iout1:电流输出端1,其值随dac寄存器的内容线性变化; * iout2:电流输出端2,其值与iout1值之和为一常数; * rfb:反馈信号输入线,改变rfb端外接电阻值可调整转换满量程精度; * vcc:电源输入端,vcc的范围为+5v+15v; * vref:基准电压输入线,vref的范围为-10v+10v; * agnd:模拟信号地 * dgnd:数字信号地2.3 工作原理 dac0832是8分辨率的d/a转换集成芯片。与微处理器完全兼容。这个da芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。d/a转换器由8位输入锁存器、8位dac寄存器、8位d/a转换电路及转换控制电路构成。2.4 时序分析 单缓冲方式。单缓冲方式是控制输入寄存器和dac寄存器同时接收资料,或者只用输入寄存器而把dac寄存器接成直通方式。此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。在微处理器控制系统中,首先关心的是对 dac的最大数据流量,或在一次中,若干个 dac只有一个需要更新时,可以使用单缓冲配置。两个内部寄存器中的一个允许数据通过,另外一个将作为数据锁存器。如果输入寄存器被用作数据锁存器,数字信号馈通会被小型化。通过选通使wr1 降低,使cs,wr2,xfer 接地,以及使 ile 架高来更新dac,从而在“独立”系统中实现了单缓冲。 双缓冲方式。双缓冲方式是先使输入寄存器接收资料,再控制输入寄存器的输出资料到dac寄存器,即分两次锁存输入资料。此方式适用于多个d/a转换同步输出的情节。 以双缓冲的方式更新这些 dac的模拟输出基本上是一个两步或双输入操作。在微型处理器系统中两个不同的系统地址必须被解码,一个是由cs 引脚控制的输入锁存器,第二个是由 xfer 控制的 dac 锁存器。如果多于一个 dac被运行,那么每个 dac的cs 线将被单独解码,但是所有的转换器将共享一个相同的xfer 地址,以允许dac 任何数据的同步更新。值得注意的是那些将在同步转换后改变的模拟输出是来自于在xfer 命令之前的已经更进的输入寄存器的dac。ile引脚是一个活跃的高芯片选择,它可以从作为限定器的地址库中解码,这是在输入操作中正常的 cs 信号产生的。这能用于为特定的 dac 提供更高级别的解码独有控制信号,最终产生更为有效的寻址计划。直通方式。直通方式是资料不经两级锁存器锁存,即 cs*,xfer* ,wr1* ,wr2* 均接地,ile接高电平。此方式适用于连续反馈控制线路和不带微机的控制系统,不过在使用时,必须通过另加i/o接口与cpu连接,以匹配cpu与d/a转换。简单地接地cs,wr1,wr2 和xfer,以及高ile 允许两个内部寄存器都允许数字量输入(流通),并直接影响到dac 模拟输出。3、系统方案设计本系统方案通过选择的dac0832的工作方式连接数/模转换电路模块,通过电阻分压网络来调节输入基准电压模块,通过应用运算放大器的高输入阻抗的特点并连接片内反馈电阻来实现电流转换电压模块等模块组成。程序的设计是根据所选的芯片工作模式来编写芯片驱动程序,以及通过对输入数据量的改变来完成一定形式的波形输出,本次实验共可产生三种波形形式输出,分别为三角波、正弦波、方波,并且可以通过按键控制波形的输出。3.1 da转换模块的论证与选择 本次实验选择dac0832的直通模式进行实验,因为此模式编程简单,只需要不断的给dac输入不断变化的数据量来完成波形输出。输出波形的频率可调范围也相对较宽。3.2电流转电压模块的论证与选择通过通过应用运算放大器的高输入阻抗的特点来实现电流转电压。由图示,根据运放的“虚短虚断”得到输出电压与输入电流的关系。运放的选择 方案一:采用普通运放ne5532来完成,但是实际测量时会发现有一个频率大600khz的类正弦波的干扰存在,无法消去。所以放弃使用ne5532。 方案二:采用低噪声双极性运算放大器集成电路op07由于op07具有非常低的输入失调电压(对于op07最大为25v),所以op07在很多应用场合不需要额外的调零措施。op07同时具有输入偏置电流低(op07为2na)和开环增益高(对于op07为300v/mv)的特点。在实验过程中,输出波形没有干扰,很理想。所以选择使用op07。输出极性的选择 本设计采用单、双极性两种输出方式。3.3软件程序模块的论证与选择 由于选择的dac0832的直通工作方式,所以编程容易,只需要在单片机的一组i/o端口上输出不断变化的数据量就可以完成。键盘控制采用“while语句”循环判断实现输出波形的转换。4、系统理论分析与计算 4.1电流转电压电路的分析与计算单极性输出 模拟输出电压的极性总是与的极性相反,为单极性输出。双极性输出在某些微机控制系统中,要求d/a的输出电压是双极性的。例如要求输出(-5+5 )v 。如图有如下计算公式: 模拟输出电压的极性总是与的极性相反,为单极性输出。模拟输出电压可利用基尔霍夫节点电流定律列出方程: 将代入上式,且当时解得: 当时,模拟输出电压的极性与的极性相同;当时,模拟输出电压的极性与的极性相反。 4.2软件程序的分析与实现实验程序:/* dac0832.h */#include #include #define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define _1602c_p portf#define _1602c_d ddrf#define _1602d_p porte#define _1602d_d ddre#define cs 1#define wr 2#define ile 0#define control_p porta#define control_d ddra#define zhuangtai pina#define dat_p portc#define dat_d ddrc/* main.c */#include #include #include dac0832.h#define v 5.0uchar data_thr256= 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf, 0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7, 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8, 0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0, 0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8, 0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0, 0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98, 0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90, 0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88, 0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80, 0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78, 0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70, 0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68, 0x66,0x66,0x65,0x64,0x63,0x62,0x61,0x60, 0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58, 0x55,0x55,0x55,0x54,0x53,0x52,0x51,0x50, 0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48, 0x44,0x44,0x45,0x44,0x43,0x42,0x41,0x40, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47, 0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, 0x50,0x51,0x52,0x53,0x55,0x55,0x56,0x57, 0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, 0x60,0x61,0x62,0x63,0x66,0x65,0x66,0x67, 0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73,0x77,0x75,0x76,0x77, 0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f ; uchar data_sin256= 0x80,0x83,0x85,0x88,0x8a,0x8d,0x8f,0x92, 0x94,0x97,0x99,0x9b,0x9e,0xa0,0xa3,0xa5, 0xa7,0xaa,0xac,0xae,0xb1,0xb3,0xb5,0xb7, 0xb9,0xbb,0xbd,0xbf,0xc1,0xc3,0xc5,0xc7, 0xc9,0xcb,0xcc,0xce,0xd0,0xd1,0xd3,0xd4, 0xd6,0xd7,0xd8,0xda,0xdb,0xdc,0xdd,0xde, 0xdf,0xe0,0xe1,0xe2,0xe3,0xe3,0xe4,0xe4, 0xe5,0xe5,0xe6,0xe6,0xe7,0xe7,0xe7,0xe7, 0xe7,0xe7,0xe7,0xe7,0xe6,0xe6,0xe5,0xe5, 0xe4,0xe4,0xe3,0xe3,0xe2,0xe1,0xe0,0xdf, 0xde,0xdd,0xdc,0xdb,0xda,0xd8,0xd7,0xd6, 0xd4,0xd3,0xd1,0xd0,0xce,0xcc,0xcb,0xc9, 0xc7,0xc5,0xc3,0xc1,0xbf,0xbd,0xbb,0xb9, 0xb7,0xb5,0xb3,0xb1,0xae,0xac,0xaa,0xa7, 0xa5,0xa3,0xa0,0x9e,0x9b,0x99,0x97,0x94, 0x92,0x8f,0x8d,0x8a,0x88,0x85,0x83,0x80, 0x7d,0x7b,0x78,0x76,0x73,0x71,0x6e,0x6c, 0x69,0x67,0x65,0x62,0x60,0x5d,0x5b,0x59, 0x56,0x54,0x52,0x4f,0x4d,0x4b,0x49,0x47, 0x45,0x43,0x41,0x3f,0x3d,0x3b,0x39,0x37, 0x35,0x34,0x32,0x30,0x2f,0x2d,0x2c,0x2a, 0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21, 0x20,0x1f,0x1e,0x1d,0x1d,0x1c,0x1c,0x1b, 0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19, 0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a,0x1b, 0x1b,0x1c,0x1c,0x1d,0x1d,0x1e,0x1f,0x20, 0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29, 0x2a,0x2c,0x2d,0x2f,0x30,0x32,0x34,0x35, 0x37,0x39,0x3b,0x3d,0x3f,0x41,0x43,0x45, 0x47,0x49,0x4b,0x4d,0x4f,0x52,0x54,0x56, 0x59,0x5b,0x5d,0x60,0x62,0x65,0x67,0x69, 0x6c,0x6e,0x71,0x73,0x76,0x78,0x7b,0x7d; uchar data_fangbo256= 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;void init()/端口初始化函数 control_p=0x0f; control_d=0xf0; dat_p=0xff; dat_d=0xff; _1602c_d=0xff; _1602d_d=0xff;void delay(uint ms) uint i,j;for(i=0;ims;i+) for(j=0;j10;j+); void main() uchar q; uint dat,m,i; init(); while(1) if(q=0x0f) show_sin(); while(q=0x0f) for(i=0;i255;i+) portc=data_sini; if(q!=0x0f) break; if(q=0x0e) show_thr(); while(q=0x0e) for(i=0;i255;i+) portc=data_thri; if(q!=0x0e) break; if(q=0x0d) show_fangbo(); while(q=0x0d) for(i=0;i255;i+) portc=data_fangboi; if(q!=0x0d) break; /* 1602.c*/#include #include #include dac0832.hconst uchar thr=sanjiaobo;const uchar sin=sin;const uchar fangbo=fangbo;void show_thr() uchar i,j; _1602c_p&=bit(2); write_com(0x38); delay(5); write_com(0x0c); delay(5); write_com(0x06); delay(5); write_com(0x80+0x01); delay(5); for(i=0;i9;i+) write_dat(thri); delay(2); void show_sin() uchar i,j; _1602c_p&=bit(2); write_com(0x38); delay(5); write_com(0x0c); delay(5); write_com(0x06); delay(5); write_com(0x80+0x01); delay(5); for(i=0;i3;i+) write_dat(sini); delay(2); /*/void show_fangbo() uchar i,j; _1602c_p&=bit(2); write_co

温馨提示

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

评论

0/150

提交评论