实验七、DAC0832数模转换实验
一、 实验目的
1、 掌握DAC0832直通方式、单缓冲方式、双缓冲方式的编程
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
2、 掌握DA转换程序的编程方法和调试方法。
二、 实验说明
美国国家半导体公司产品,具有两个输入数据寄存器的8位DAC,能直接与MCS-51单片机相连。主要特性如下:
分辨率为8位;
* 电流输出,稳定时间为1s;
* 可双缓冲输入、单缓冲输入或直接数字输入;
* 单一电源供电(+5~+15V);
DAC0832的逻辑结构:
其引脚分布如图所示:
DAC0832各引脚说明:
DI0-DI7:转换数据输入端;
CS:片选信号输入端。
ILE:数据锁存允许信号输入端,高电平有效。
WR1:输入寄存器写选通控制端。当CS*=0、ILE=1、 WR1*=0时,数据信号被锁存在输入寄存器中。
Xfer:数据传送控制信号输入端,低电平有效。
WR2:DAC寄存器写选通控制端。当XFER*=0,WR2* =0 时,输入寄存器状态传入DAC寄存器中。
Iout1:电流输出1端,当数据全为1时,电流输出最大;当数据全为0时,输出电流最小。
Iout2:电流输出2端。DAC0802具有Iout1+Iout2=常数的特性。
Rfb:反馈电阻端。
Vref:基准电压输入端,是外加的高精度电压源,它与芯片内的电阻网络相连接,该电压范围为-10V~10V;
VCC和GND:芯片的电源和接地端。
DAC内部有两个寄存器,而这两个寄存器的控制信号有五个,输入寄存器有LIE、CS、WR1控制,DAC寄存器由WR2、Xref控制,用软件指令控制这五个控制端可以实现三种工作方式:直通方式,单缓冲方式,双缓冲方式。
直通方式是将两个寄存器的五个控制端预先置为有效信号,两个寄存器都开通,只要有数字信号输入就立即进入DA转换。
单缓冲方式是使DAC0832的两个输入寄存器中由一个处于直通方式,另一个处于受控方式,可以将WR2和Xref相连接到地上,并把WR1接到80C51的WR上,LIE接高电平,CS接高位地址或地址译码的输出端上。
双缓冲方式把DAC0832的输入寄存器和DAC寄存器都接成受控方式,这种方式可以用于多路模拟量要求同时输出的情况下。
三种工作方式的区别是:直通方式不需要选通,直接进行DA转换;单缓冲方式一次选通;双缓冲方式二次选通。
三、 实验步骤
1、 单片机最小应用系统1的P1口接DAC0832的DI0~DI7,单片机最小应用系统的P2.0、WR分别接DA转换的P2.0、WR,Vref接-5V,DA转换的out接示波器探头。
2、 用串行数据线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,主要仿真器的方向:缺口朝上。
3、 打开keil uvision2 仿真软件,首先建立本实验的项目文件,接着添加DA转换程序。
4、 进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400.
5、 打开模块电源和总电源,点击开始调试按钮,点击run按钮运行程序。观察示波器测量输出波形的周期和幅度。
四、 实验内容
1、在硬件不改动的情况下,请编程实现输出波形为锯齿波及三角波、正弦波。
参考程序:
1、矩形波参考程序:
#include "reg51.h"
#include "absacc.h"
#define DAC XBYTE[0xFEFF]
void deley(unsigned int k)
{
unsigned int i;
for(i=0;i
0;k--)
{
DAC=k;
}
}
}
3、锯齿波参考程序:
#include "reg51.h"
#include "absacc.h"
#define DAC XBYTE[0xFEFF]
void deley(unsigned int k)
{
unsigned int i;
for(i=0;i0;x--)
for(y=110;y>0;y--);
}
void ju()
{
P1=0x00;
deley(10);
P1=0xff;
deley(10);
}
//*三角波产生程序*//
void san()
{
unsigned int k;
for(k=0;k<0xff;k++)
{
P1=k;
}
for(k=0xff;k>0;k--)
{
P1=k;
}
}
//*锯齿波产生程序*//
void chi()
{
P1=P1+1;
if(P1==0xff)
P1=0x00;
}
//*正弦波产生程序*//
void sin()
{
unsigned int kk;
for(kk=0;kk<=127;kk++)
{
P1=sintab[kk];
}
}
//*键盘扫描程序*//
uchar num,temp;
uchar keyscan()
{
unsigned char ii;
for(ii=0;ii<4;ii++)
{
P2=_crol_(0xfe,ii);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
deley(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xee:num=1;break;
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0x7e:num=4;break;
case 0xed:num=5;break;
case 0xdd:num=6;break;
case 0xbd:num=7;break;
case 0x7d:num=8; break;
case 0xeb:num=9;break;
case 0xdb:num=10;break;
case 0xbb:num=11;break;
case 0x7b:num=12;break;
case 0xe7:num=13;break;
case 0xd7:num=14;break;
case 0xb7:num=15;break;
case 0x77:num=16;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
}
return num;
}
汇编语言:
矩形波:
ORG 0000H
AJMP START
ORG 0030H
START: MOV DPTR,#0FEFFH
LP: MOV A, #0FFH
MOVX @DPTR,A
LCALL DELAY
MOV A,#00H
MOVX @DPTR,A
LCALL DELAY
SJMP LP
DELAY:MOV R3,#11H
D1:NOP
NOP
NOP
DJNZ R3,D1
RET
END
三角波:
ORG 0000H
AJMP START
ORG 0030H
START: MOV DPTR,#0FEFFH
LP0:MOV A,#00H;
MOV R2,#0FFH;
LP1: MOVX @DPTR,A
INC A;
DJNZ R2,LP1
MOV A,#0FEH
MOV R2,#0FDH;
LP2: MOVX @DPTR,A
DEC A
DJNZ R2,LP2;
LJMP LP0
END
锯齿波:
ORG 0000H
AJMP START
ORG 0030H
START: MOV DPTR,#0FEFFH
LP0:MOV A,#00H;
MOV R2,#0FFH;
LP1: MOVX @DPTR,A
INC A;
DJNZ R2,LP1
LJMP LP0
END
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图:
六、电路图