模数转换芯片选用ADC0808,将滑动变阻器滑动端的电压作为模数转换芯片的输入。单片机通过P0口将A/D转换后的数字量读入单片机,并通过P1口发送到数模转换芯片。数模转换芯片选用DAC0832,其转换完的信号,接运算放大器LM358N,最后的输出信号通过电压表和电压探针的仿真图表输出模式显示出来。
1、电路原理图
(1)单片机最小系统:
(2)A/D转换电路:
(3)D/A转换电路
(4)LED显示电路
2、程序源代码
/**************************************************
*AD/DA实验程序
**************************************************/
#include "reg51.h"
#define uchar unsigned char//数据类型宏定义
#define uint unsigned int
/*********************引脚定义********************/
#define DAin P1
#define ADout P0
sbit start=P2^1;
sbit oe=P2^7;
sbit eoc=P2^3;
sbit clock=P2^0;
sbit add_a=P2^4;
sbit add_b=P2^5;
sbit add_c=P2^6;
sbit dac_cs=P2^2;
sbit dac_wr=P2^7;
void delayms(uint j);
/*********************主函数**********************/
void main(void)
{
uchar temp;
add_a=0;add_b=0;add_c=0; //选择ADC0808的通道0
while(1)
{
start=0;
start=1;
start=0; //启动转换
while(1){clock=!clock;if(eoc==1)break;}//等待转换结束
oe=1; //允许输出
temp=ADout; //暂存转换结果
oe=0; //关闭输出
DAin=temp; //采样结果输出到DA
dac_cs=0;
dac_wr=0;
dac_cs=1;
dac_wr=1;
delayms(20);
}
}
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
3、实验结果
这里是使用激励源模式输入了一个正弦波,通过A/D采集数据并通过D/A原样输出。从输出的波形上可以看出采样的过程,改变采样频率,还可以验证采样定理。