文档库 最新最全的文档下载
当前位置:文档库 › 综合实验二DA转换实验

综合实验二DA转换实验

综合实验二DA转换实验
综合实验二DA转换实验

实验二D/A转换实验

一、实验目的

1. 理解D/A转换芯片0832与单片机接口及编程方法。

2. 了解D/A转换的基本原理。

3. 了解单片机系统中扩展D/A转换的基本方法。

二、实验原理及内容

1.实验原理

DAC0832内部具有输入寄存器和DAC寄存器两级数据寄存器,它不需要外加其它电路便可以与单片机的数据总线相连。DAC0832引脚说明如下:

单片机对DAC0832控制过程:使能CS、XFER,向寄存器中写入需转换数据。

2.实验内容

1)将扩展板的电源J501与主板的电源接口J2或J14连接起来;将扩展板的信号接口J500与主板的信号接口J15或J13连接起来;将主板上的拨码开关5、6、7、8拨到ON ;

2)在keil 编程环境下编写程序,完成实验功能。本实验参考程序完成的实验功能是在主板数

码管上显示”2.7”V 电压,同时使DAC0832的输出为2.7V 电压。编程时,控制DAC0832的控制码为:

2555

7

.2 ,取其整数部分为138,16进制为0X8AH 。在数码管上显示“2.7”字样。

3)编译生成HEX 文件,将HEX 文件下载到实验系统中。观察数码管上显示的数据;用万用表测量J502(OUTPUT )的电压值。 三、实验例程

2.7V 直流电压输出实例:

#include #include

#define DAC0832 XBYTE[0X7FFF] //DAC0832使能P2.7 #define Vref 5 //参考电压Vref=5V

unsigned char LED_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码 unsigned char LED_seg1[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};//段码

unsigned char LED_bit[4]={0x01,0x02,0x04,0x08}; //位码 void delay(unsigned long n) //延时函数 { for(;n>0;n--);

}

unsigned LED_buf[4]={0,0,0,0,}; void convert(unsigned int n) //分解位函数 { unsigned char i=0; n=n/10; while(i<4) { LED_buf[i]=(unsigned char)(n%10); n=n/10;i++; }

}

void display(void) //显示函数 { unsigned char i; for(i=0;i<3;i++) { if(i==2)P0=LED_seg1[LED_buf[i]]; else P0=LED_seg[LED_buf[i]];

P1=LED_bit[i];

delay(100);

}

}

void change(unsigned int a) //输出函数

{

unsigned char i;

i=(unsigned char)(a/100*255/Vref/10);

DAC0832=i;

}

void main(void)

{

unsigned int a=2.7*1000; //输出2.7V电压

while(1)

{

convert(a);

display(); //显示

change(a); //输出

delay(100);

}

}

四、实验仪器和设备

Keil软件;A T89S52实验平台;ATMEL ISP在线编程软件;示波器,电压表。

五、实验结果和数据分析

问题:

1.修改程序为三角波和锯齿波,不需要显示。

相关文档