DAC0832数模转换实验报告131219x
DAC0832实验

实验4 ADC0832并行数模转换实验【实验目的】熟悉D/A转换的工作原理,学习使用并行数模转换芯片DAC0832进行数字信号到模拟信号的转换过程。
【实验设备及器件】IBM PC 机一台DP-51PROC单片机综合仿真实验仪一台示波器一台【实验内容】通过片外总线方式访问并行数模转换器芯片DAC0832,掌握数字信号到模拟电压的转换方法。
【实验要求】理解掌握DAC0832的D/A转换原理和并行D/A转换器接口的编程方法,学会使用DAC0832并行模数转换器实现电压信号采集的方案设计。
【实验步骤】1.使用2×10的排线连接C9区的J4接到A7区的J84;2.将模块上的JP1跳线帽跳至右侧的VCC处;3.将A7区的P2_CS连接到A2区的A15;4.将A7区的P2_IO2、P2_IO5和P2_INT分别接入C4区的A-、A+和AOUT;5.将C4区的V+和V-分别接至C1区的+12V和-12V;6.将C4区的A+接到C1区的GND;7.运行编写好的软件程序,使用示波器观察C4区AOUT处的波形是否为锯齿波。
【实验预习要求】认真预习本节实验内容,按照实验要求提前做好实验准备工作,认真阅读DAC0832的数据手册。
图1.1DAC0832引脚接线图【实验参考程序】汇编语言程序清单ORG 8000HLJMP MAINORG 8100HMAIN: MOV SP,#70HMOV DPTR,#7FFFHMOV A,#0FFHLOOP: MOVX @DPTR,ADEC ALJMP LOOPENDC51程序清单#include <reg52.h>#include <absacc.h>#define PA XBYTE[0x7fff]typedef unsigned char byte;void main(void){byte a;while(1){for(a=255;a>0;a--){PA=a;}}}【实验思考题】1.请改变上面的程序,使之输出三角波,并通过示波器观察。
并行数模转换设计报告(DAC0832芯片)DA设计报告

并行数模转换设计报告(DAC0832芯片)学校:院系:专业:学生:指导老师:目录:1. 设计任务 (1)2.设计方案 (2)2.1 DAC0832工作模式选择……………2.2 输出级放大器确定参数确定………3.电路测试及结果分析 (19)4.参考文献 (20)5.附录 (21)1. 设计任务:用ATmega128单片机及DA0832芯片设计一个能产生正弦波的电路。
2. 设计方案2.1 DAC0832工作模式选择2.1.1 DAC0832芯片引脚介绍DAC0832主要性能参数:①分辨率8位;②转换时间1μs;③参考电压±10V;④单电源+5V+15v;⑤功耗20mW。
D/A转换器品种繁多,有权电阻DAC、变形权电阻DAC、T型电阻DAC、电容型DAC和权电流DAC等。
其中DAC0832是双列直插式8位D/A转换器。
能完成数字量输入到模拟量(电流)输出的转换。
逻辑电平输入与TTL兼容,共20引脚。
如下图所示:D0~D7:数字信号输入端。
ILE:输入寄存器允许,高电平有效。
CS:片选信号,低电平有效。
WR1:写信号1,低电平有效。
XFER:传送控制信号,低电平有效。
WR2:写信号2,低电平有效。
IOUT1、IOUT2:DAC电流输出端。
Rfb:是集成在片内的外接运放的反馈电阻。
Vref:基准电压(-10~10V)。
Vcc:是源电压(+5~+15V)。
AGND:模拟地NGND:数字地,可与AGND接在一起使用。
DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。
2.1.2 DAC0832的结构DAC0832的内部结构如图10.9所示。
DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的锁存信号为ILE;第二级锁存器称为DAC寄存器,它的锁存信号为传输控制信号XFER。
因为有两级锁存器,DAC0832可以工作在双缓冲器方式,即在输出模拟信号的同时采集下一个数字量,这样能有效地提高转换速度。
单片机数模转换器DAC0832设计实验报告(附程序)

实验名称:数模转换器DAC0832设计实验学生姓名:xx 学号:xx 班级:测控xx班时间:课程名称:微机机原理及应用教师:成绩:一、实验目的1)了解DAC0832芯片引脚、内部结构及工作原理;2)掌握应用单片机I/O端口控制DAC0832实现数模转换的方法;二、实验内容1. 通过单片机I/O端口控制DAC0832实现数模转换,控制方式采用单缓冲方式,通过按键TRI/SIN选择输出,分别产生锯齿波、方波、正弦波。
1)绘制DAC0832与单片机接口电路原理图;2)参考PPT课件内容,设计程序,实现信号选择输出功能;2. 扩展功能:增加按键,通过按键控制调节输出信号的频率变化。
接口电路图设计参考下图所示:三、设计参考:正弦信号数据表:uchar code sine_tab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6 f,0x72,0x76,0x79,0x7c,0x80};四.实验报告①实现调频功能的中断程序:void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++; //外部中断0触发一次,延时程序调用次数加1}②延时程序:void delay(){int i;for(i=0;i<10;i++){}} //延时子程序③锯齿波程序:#include<reg51.h>sbit MR=P2^7;void main (void){int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=num;for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:④正弦波程序#include<reg51.h>sbit MR=P2^7;void main (void){unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29 ,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0 x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x0 6,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c, 0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x 43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};int num;int j;MR=0;while(1){for(num =0; num <=255; num++){ P1=sine_tab[num];for(j=0;j<counter;j++)delay(); //调用延时子程序}}}运行截图:调频前:调频后:⑤方波程序:#include<reg51.h>sbit MR=P2^7;void main (void){ int num;int j;MR=0;while(1){int b;for(num=0;num<=255;b++){if(num<128){ P1=0x00;for(j=0;j<counter;j++)//当counter小于128时,P1输出0x00对应低电平delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应高电平for(j=0;j<counter;j++)delay();}}}调频前:调频后:主程序#include<reg51.h>sbit MR=P2^7;sbit P2_0=P2^0;sbit P2_1=P2^1;int counter=0;//设置延时程序次数变量counter,调节频率unsigned char code sine_tab[256]= //正弦波字表{0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6, 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4, 0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5, 0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8, 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xa e,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0 x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x5 1,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29, 0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x 0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06, 0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x 1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43 ,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0 x72,0x76,0x79,0x7c,0x80}; //正弦转换字符void delay(){int i;for(i=0;i<10;i++){}}//延时子程序void int0() interrupt 0//外部中断0,用以控制调节延时程序次数,达到调节频率的作用{counter++;//外部中断0触发一次,延时程序调用次数加1}void main(){int num;int j;EA=1;//中断总允许使能EX0=1;//外部中断0使能IT0=1;//外部中断0下降沿触发MR=0;//P2^7输出低电平,芯片正常工作while(1){if(P2_0==0&&P2_1==1) //P2_1为高电平,P2_0为低电平输出锯齿波{for(num=0;num<256;num++){P1=num; //P1直接输出numfor(j=0;j<counter;j++)delay(); //调用延时子程序}}if(P2_0==1&&P2_1==0)//P2_1为低电平,P2_0为高电平输出正弦波{P1=sine_tab[num];//P1端口输出正弦波字符数组for(j=0;j<counter;j++)delay(); //调用延时子程序}}if((P2_0==0&&P2_1==0)||(P2_0==1&&P2_1==1))//P2_1为低电平P2_0为低电平以及P2_1为高电平P2_0为高电平时输出矩形波for(num=0;num<256;num++){if(num<128)//当num小于128时,P1输出0x00对应低电平{P1=0x00;for(j=0;j<counter;j++)delay();}else{P1=0xFF;//当num大于或等于128时,P1输出0xFF对应低电平for(j=0;j<counter;j++)delay();}}}}五.总结在该实验的设计过程中,首先单独写出锯齿波、正弦波以及方波的程序,并写出延时程序以及外部中断0程序。
实验二 DA0832转换

实验二D/A0832转换实验
1、实验目的:
了解D/A转换与单片机的接口方法;了解D/A转换芯片DA0832的性能及编程方法。
2、实验内容:
根据单片机P1口的输入信号,控制DAC0832输出相应模拟电压值。
3、实验电路图
图1实验原理图
4、实验步骤:
(1)用PROTEUS仿真软件画出该原理图
(2)用keil编程软件编写程序、编译程序并且生成*.HEX文件。
(3)把生成的*.HEX文件加载到PROTEUS软件中,运行程序,电压表应能测出不同的电压值。
5、完成实验报告,实验报告要求如下:
1)实验题目
2)实验目的
3)实验内容
Байду номын сангаас4)实验电路图
5)实验流程图
6)实验程序
南昌大学计算机控制实验报告数/模转换实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:实验成绩:实验一数/模转换实验一.实验要求掌握DAC0832芯片的性能、使用方法及对应的硬件电路。
编写程序控制D/A输出的波形,使其输出周期性的三角波。
二.实验说明电路实现见主板模块B1,具体说明请见用户手册。
DAC0832的片选CS0832接00H,观察输出端OUTl(B1部分)产生三角波由数字量的增减来控制,同时要注意三角波要分两段来产生。
三.实验步骤1、接线:此处无需接线。
2、示例程序:见Cpl源文件,程序流程如下图所示。
3、运行虚拟示波器方法:打开LCAACT软件中“设置”一>“实验机”,将其中的程序段地址设为8100,偏移地址0000。
然后选择“设置”一>“环境参数”一>“普通示波”,选择“工具”一>“加载目标文件”,本实验加载C:\AEDK\LCAACT\试验软件\CPI.EXE,然后选择在“工具”栏中“软件示波器”中“普通示波”,点击开始示波器即程序运行。
以后每个实验中的虚拟示波器运行方法同上。
只是加载的程序要根据实验的不同而不同。
如果以后用到该方法,不再赘述。
4、现象:程序执行,用虚拟示波器(CHl)观察输出点OUT(B1开始设置初始电平为0VD/A输出并增<=0FFH?YN数模转换中),可以测量到连续的周期性三角波。
通过实验结果的图片,我们可以知道得出来的三角波的幅值为U=(3.01V+1.95V)=4.96V。
T=1.3s模拟输出来的幅值和我们输入的5V有一定的偏差。
相对误差为(5-4.96)/5=0.8%,因为0832是8为的,所以分辨率为1/256即0.004。
相比较一下本次实验的误差只有0.8%,相当于掉了两个单位的分辨率。
在允许的误差范围之内。
所以本次实验的结果还算是比较成功的。
四、实验小结通过本次实验,我对数模转换的知识理解得更加透彻,以及如何使用DAC0832进行数模转换把数字量转换为模拟量并以三角波形式输出。
单片机实验DA转换器DAC0832的应用的报告

单片机应用技术课程报告实验名称D/A转换器DAC0832的应用实验时间2020年6月30 日学生姓名实验地点钉钉群线上同组人员专业班级1、实验目的(1)了解D/A转换与单片机的接口方法;(2)了解D/A转换芯片DAC0832的性能及编程方法(3)掌握D/A转换的程序设计方法。
2、任务设计要求(1)掌握实验原理,读懂实验线路图,了解所用到的元器件特性。
(2)会绘制电路原理图,会连接电路原理图。
(3)将编制的锯齿波、方波程序运行,用示波器观察波形。
使用STC89C51单片机、DAC0832芯片,设计一个波形发生器,能产生正弦波、方波、三角波、锯齿波,梯形波,要求通过编程实现不同波型的产生,通过按键实现不同波形输出的切换。
3、总体设计方案4、硬件电路设计5、软件程序设计#include<absacc.h>#include<reg51.h>#define DAC0832 XBYTE[0x7fff]sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;int flag1=0;int flag2=0;int flag3=0;int flag4=0;int flag5=0;unsigned char code zhengxian[256]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5, 0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9, 0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6, 0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9, 0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9, 0xf8,0xf7,0xf6,0xf4,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9, 0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5, 0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d, 0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55, 0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31, 0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15, 0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,0x09,0x08,0x07,0x06,0x05,0x04, 0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x0a,0x0c,0x0d,0x0e,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c, 0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b, 0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60, 0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};void delay()//延时程序{int i;for(i=0;i<1000;i++);}void panduan (void)//函数panduan用于扫描按键状态判断输出波形{if (k1==0){//按键消抖delay();if (k1==0)//通过赋值flag选择波形flag1=1;flag2=0;flag3=0;flag4=0;flag5=0;}if(k2==0){delay();if (k2==0)flag1=0;flag2=1;flag3=0;flag4=0;flag5=0;}if (k3==0){//补充程序flag1=0;flag2=0;flag3=1;flag4=0;flag5=0;。
DAC0832数模转换实验

DAC0832数模转换实验一、实验目的1、掌握DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法2、掌握D/A转换程序的编程方法和调试方法二、实验说明DAC0832是8位D/A转换器,它采用CMOS工艺制作,具有双缓冲器输入结构,其引脚排列如图所示,DAC0832各引脚功能说明:DI0~DI7:转换数据输入端。
CS:片选信号输入端,低电平有效。
ILE:数据锁存允许信号输入端,高电平有效。
WR1:第一写信号输入端,低电平有效,Xfer:数据传送控制信号输入端,低电平有效。
WR2:第二写信号输入端,低电平有效。
Iout1:电流输出1端,当数据全为1时,输出电流最大;当数据全为0时,输出电流最小。
Iout2:电流输出2端。
DAC0832具有:Iout1+Iout2=常数的特性。
Rfb:反馈电阻端。
Vref:基准电压端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为:-10V~+10V。
VCC和GND:芯片的电源端和地端。
DAC0832内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器由ILE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可实现三种工作方式:直通方式、单缓冲方式、双缓冲方式。
直通方式是将两个寄存器的五个控制端预先置为有效,两个寄存器都开通只要有数字信号输入就立即进入D/A转换。
单缓冲方式使DAC0832的两个输入寄存器中有一个处于直通方式,另一个处于受控方式,可以将WR2和Xfer相连在接到地上,并把WR1接到80C51的WR上,ILE接高电平,CS 接高位地址或地址译码的输出端上。
双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可用于多路模拟量要求同时输出的情况下。
三种工作方式区别是:直通方式不需要选通,直接D/A转换;单缓冲方式一次选通;双缓冲方式二次选通。
三、实验步骤1、用8P数据线连接单片机最小应用系统1模块的 P0口到D/A转换模块的DI0~DI7口,用二号导线分别连接单片机最小应用系统1模块的P2.0、WR到D/A转换模块的P2.0、WR,连接D/A转换模块的Vref口到-5V口,D/A转换模块的OUT接示波器探头。
51单片机数模转换实验报告

51单片机数模转换三角波实验报告
一、实验目的
1.熟悉DAC0832的结构和用法
2.掌握DAC0832与80C51连接方法并输出锯齿波
二、实验器材
安装有驱动程序的电脑、51单片机开发板、烧录器
三、实验原理
内部结构图如下:
有三种工作方式,这里只用直通方式,所谓直通方式就是使DAC8032内部的两个寄存器(输入寄存器和DAC寄存器)处于不锁存状态,数据一旦到达输入端di7—di0,就直接送入D/A转换器,被转换成模拟量。
输入数据变化,D/A转换器的输出模拟量跟着变化。
为实现直通方式,必须使ILE为高电平,
、和端都须数字接地,这时锁存信号LE1、LE2均为高电CS、12
WR WR XFER
平,输入寄存器和DAC寄存器便均处于不锁存状态。
程序流程图:
根据流程图编程:
MOV DPTR,#7FFFH
MOV A,#00H
LOOP:MOVX @DPTR,A
DEC A
AJMP LOOP
END
使用Proteus对电路进行绘制如下图所示:
四、实验结果及总结
总结:通过本次试验我完全掌握了DAC0832的基本结构,并能熟练地使用它做出基本的模拟信号,对我以后的工作有很大的帮助。
在实验的过程中程序很好编写也很好理解,但是在连接线路时老出错,尽管把程序写进去了但是出不来结果很郁闷,最后经过不断检查,查找资料才找到少连了一根从VREF到电源的线路,通过本次试验我再次注意到简单的问题,出现错误的时候不好找到问题所在,所以以后实验再不能粗心大意了,不能看轻每个
实验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告基于DAC0832的数模转换一、实验目的1.学习单片机控制技术----用单片机控制外部数模转换设备,实现D/A 转换;2.熟悉DAC0832芯片的内部结构、引脚功能、各种工作方式下的工作时序;3.熟悉并掌握51单片机系统硬件电路的基本工作原理,并学习硬件电路设计;4.学习C51单片机编程、调试方法。
二、实验任务利用51单片机控制DAC0832生成正弦波电压输出。
三、实验器材C51单片机 一块DAC0832 一块 LM324 一块 单孔板 一块 导线 若干 直流稳压电源 一台 示波器 一台四、实验原理1. 系统方案确立 1)硬件电路工作原理图4-1 信号发生器的硬件框图MCU 作为单片机微处理系统,通过Keyboard 输入可以产生正弦波数字信号的程序,使MCU 输出正弦波数字信号,通过DAC0832数模转换,变成正弦波的模拟信号,用示波器显示出来。
如图4-1所示。
DisplayMCU KeyboardDAC08322)程序工作流程图4-2 信号发生器的程序流程图2. 硬件电路设计1)单片机最小系统的组成单片机最小系统是指用最小元件组成的单片机工作系统。
对MCS-51系列单片机来说,其内部已经包含了一定数量的程序存储器和数据存储器,在外部只要增加时钟电路和复位电路即可构成单片机最小系统。
下图所示便是MCS-51系列单片机最小系统电路,由单片机芯片和典型的时钟电路和复位电路构成。
图4-3典型的时钟电路大多采用内部时钟方式,晶振一般在1.2~12MHz 之间,甚至可达到24MHz 或更高,频率越高,单片机处理速度越快,但功耗也就越大,一般采用11.0592MHz 的石英晶振。
与晶振相位复0D/A 芯片初始化Y相位>=2π?Ni++相幅转换 YN幅度D/A 转换输出定时器初始化 time 0=0 置定时到标志T0重赋值返回并联的两个电容1C 、2C 通常为30pF 左右,对频率有微调作用。
需要注意的是,在设计单片机系统的印刷电路板(PCB )时,晶振和电容应尽可能与单片机芯片靠近,以减少引线的寄生电容,保证振荡器可靠工作。
典型的复位电路大多采用上电自动复位和按键手动复位组合电路,电容3C 的大小直接影响单片机的复位时间,电容值越大,复位时间越短,一般3C 为10~30uF 。
2)数模转换工作电路的设计我们选中DAC0832进行DA 变换。
但DAC0832输出的是电流,我们要输出电压信号。
因此我们选用如图4-4 工作电路。
图4-4两级运用放大解决输出双极性电压的问题。
输出电流1out I 经放大,输出电压:32113211•)-•(=•)+(-=R R V R R I R R V R U U REF fb out REFo OUTV ref :DAC0832的参考电压(通常为+5V)R 2与R 3的比值确定输出电压的偏移范围;R 1与R 3的比值确定输出电压的大小。
DAC0832与MCS-51单片机的电路连接如图4-5 所示。
我们选择单片机的P2口为数字量的输出口,同时DAC0832采取直通转换模式,即输入寄存器和DAC 寄存器为直通模式,数字量从单片机P2口直接接到DA 转换器进行转换。
图4-53. 软件设计1)定时器的设定本系统输出正弦波周期为20mS 。
用查表法实现正弦波的相幅转换,再将幅度值经DA 转换、低通滤波,生成连续变化的正弦波电压。
正弦波相位等分为1/250,因此步进时间为80μS 。
我们选T0定时产生该步进时钟,设计如下。
我们用的MCS-51单片机是的频率是11.0592MHz 的,并且是用16位的计数器,用定时器T0进行计数。
所以根据实验原理里写的初值计算公式可得我们需要的初值X 为:272.65462=10×801210×0592.112=122=6616---T f X osc N转换为16进制为 FFB6H 。
所以对定时器进行赋值TH0=0xff,TL0=0xb6。
因为选用时T0的计时器,并且是16位,所以TMOD 控制寄存器中的低4位:GATE=0,T C /=0,M1 M0=01,所以TMOD=0000 0001,转换为16进制为0x01。
与此同时,TCON 控制寄存器中的TR0=1。
定时步进由T0中断控制。
所以中断允许寄存器IE 中的总中断控制EA=1,同时也要开启T0中断,即ET0=1。
以上设置在系统初始化中完成。
2)相幅转换由于在程序中,我们是用查表法来输出正弦波数字信号,250个数字量为一个正弦波周期2π,这就说明表中的每个数字量有其与之对应的正弦波周期中的某个相位。
所以,每两个数字量之间的相位为2π/250,只要每经过一个80μS 定时中断,其相位值便增加2π/250;与此同时,其中相位对应的数字量电压值也在发生变化,这就实现了正弦波中相位和幅度的转换。
然后经过250个中断后,相位便从0开始,按每次2π/250继续累加到2π,进行重复循环。
最后通过DA 转换输出模拟量的电压值,变可在示波器上显示出完整的正弦波模拟信号。
五、试验步骤1、按照实验内容中的电路原理图进行单片机最小系统的建立和DAC0832和运放电路在单孔版上的焊接。
对于电路图中的参数,我们选择:单片机晶振电路:pF C C 6021==, Y1=12MHz单片机复位电路:Ω=Ω==k 2.8200,10213R R uF C , LM324运放电路:Ω=Ω==k R k R R 1,2453 2、对于DAC0832各引脚的电平高低情况应定为:ALE 、cc V 、ref V 接高电平 +5VDGND AGND XFER WR WR CS 、、、、、21 接低电平3、对于LM324,我们需要在运放器的两端接高低电平,所以我们选择V 5±的直流电源。
4、把上面写的软件程序导入Keil 中,生成 .hex 文件,传输到MCS-51的单片机中。
5、然后LM324的输出端连接到示波器上,准备显示。
6、按照电路图中的线路,用导线连接C51单片机、DAC0832之间的数据线。
准备上电实验。
7、对各芯片供电,打开示波器,观察输出波形。
六、实验数据与分析按照实验步骤进行实验,我们可以看到在示波器上显示出正弦波信号,如图4-6所示。
可以看见示波器上显示的周期为ms 3.18=实T ,而理论上的周期为ms 20250us 80=×=理T 。
只所以产生这种原因,是因为单片机的频率为11.0592MHz 。
所以这个实验大致上是正确的,有理有据的。
图4-6七、实验感受通过这次实验,我们对于MCS-51系列单片机有了初步的认识和理解,并且通过和DAC0832在一起,使我们对于I/O接口方面的知识也有了很好的应用。
同时对DAC0832芯片的结构、性能、工作原理我们是完全的掌握了,这样我们可以通过DAC0832进行其他的一系列实验。
再者,运放的基本原理及公式也可以让我们能更加灵活的对复杂电路进行转化。
与此同时,我们的动手能力也有了很大的提高,对于电路的排版、搭配也有了很清晰的认识。
总之,这次实验使我们的收获很大,理论和实际相结合,对知识也有了更深刻的理解和知新。
附录1.程序#include<reg52.h>#include<absacc.h>#define uint unsigned int#define uchar unsigned charbit time;unsigned char sin(unsigned char x){unsigned char code sin_tab[]={128,131,134,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,182,185,188,191,193,196, 198,201,203,206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235,237,238,239,241,242, 243,244,245,246,247,248,249,250,251,252,253,254,254,255,255,254,254,253,252,251,250,249,248,247, 246,245,244,243,242,241,239,238,237,235,234,232,231,229,227,225,223,221,219,217,215,213,211,208, 206,203,201,198,196,193,191,188,185,182,180,177,174,171,168,165,162,159,156,153,150,147,144,141, 138,134,131,128,125,122,119,116,112,109,106,103,100, 97, 94, 91, 88, 85, 82, 79, 76, 73, 70, 68,65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37,35, 33, 31, 29, 27, 25, 27, 29, 27, 25, 23, 21,19, 18, 16, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 1, 1 ,2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 19, 21, 23, 25, 27, 29, 31, 33,35, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 68, 70, 73, 76, 79, 82, 85, 88, 91, 97,100,103,106,109,112,116,119,122,125,128,131};return sin_tab[x];}void DAC0832(unsigned char x){P2=x;}void main(){unsigned char i;TMOD = 0x01;//设置T0为工作方式1TH0 =0xff;// (65536-1000)/256; //设定初值TL0 = 0xb6;//(65536-1000)%256; //设定初值TR0 = 1;//启动定时器0EA=1;ET0=1;i=0;time=0;while(1){if(time==1){time=0;if(i>248) i=0;else i++;DAC0832(sin(i));}}}void T0_time() interrupt 1{TH0 = 0xff;//(65536-1000)/256; //设定初值TL0 = 0xb6;//(65536-1000)%256; //设定初值time=1;}2. 主要器件简介DAC0832工作原理1)DAC0832的内部结构DAC0832的内部结构如下图所示。