C51单片机——(A/D转换)使用ADC0809将模拟信号转换为数字信号
实现效果如图:
当电压为1V时,转换的数字信号为0011 0011
代码如下:
#include<reg52.h>
sbit ADDA=P3^0;
sbit ADDB=P3^1;
sbit ADDC=P3^2;
sbit START=P3^3;
sbit EOC=P3^4;
sbit OE=P3^5;
void Delay(unsigned char i)
{
while(i--);
}
void Adc0809Convert()
{
unsigned char temp;
ADDA=0,ADDB=0,ADDC=0;//IN0
START=1;//清空ADC0809内部寄存器
Delay(10);
START=0;//引出下降沿,启动A/D转换
while(EOC==0);//判断是否转换结束
OE=1;//转换得到的数据送上数据总线.
temp=P1;//接收数据
}
int main(void)
{
while(1)
{
Adc0809Convert();
}
}
> 实现过程
1.IN0~IN7(模拟通道输入端)
引脚——ADDA,ADDB,ADDC选择(模拟通道选择地址信号).
2、START(A/D转换启动信号)
a.置1——上升沿清空ADC0809内部寄存器,下降沿开始A/D转换
b.置0——引出下降沿,启动A/D转换
3.EOC(转换结束信号)——高电平有效-结束
通过 while(EOC==0);判断是否转换结束
4.OE(输入允许信号)
OE=1时,输出转换得到的数据.
5.D0~D7(A/D转换后的数据输出端)
定义一个temp接收数据.
还没有评论,来说两句吧...