89C51单片机ADC0809通过单片机控制IN6通道实现模数转换程序,并将转换后的数字存到变量VAr中
时间: 2024-04-09 19:28:05 浏览: 15
以下是使用89C51单片机通过ADC0809模数转换器控制IN6通道实现模数转换并将结果存储到变量VAr的程序:
```c
#include <reg51.h>
sbit ADC_CS = P2^0; // ADC0809的片选引脚
sbit ADC_RD = P2^1; // ADC0809的读取引脚
sbit ADC_WR = P2^2; // ADC0809的写入引脚
sbit ADC_INTR = P2^3; // ADC0809的中断引脚
sbit VAr = P1^0; // 存储转换结果的变量
void delay(unsigned int ms)
{
unsigned int i, j;
for (i = 0; i < ms; i++)
{
for (j = 0; j < 114; j++);
}
}
void adc_conversion()
{
ADC_CS = 0; // 选择ADC0809
ADC_RD = 1; // 置读取引脚为高电平
ADC_WR = 1; // 置写入引脚为高电平
delay(1); // 等待ADC0809稳定
ADC_CS = 1; // 取消片选信号
ADC_WR = 0; // 写入引脚拉低,开始转换
delay(1); // 等待转换完成
ADC_WR = 1; // 停止转换,写入引脚拉高
ADC_CS = 0; // 选择ADC0809
ADC_RD = 0; // 置读取引脚为低电平
delay(1); // 等待数据稳定
VAr = P0; // 读取模数转换结果
ADC_RD = 1; // 读取引脚拉高
ADC_CS = 1; // 取消片选信号
}
void main()
{
while (1)
{
adc_conversion(); // 进行模数转换并将结果存储到VAr变量
}
}
```
这段代码会控制89C51单片机通过ADC0809模数转换器进行模数转换,具体使用的是IN6通道。转换结果会存储到变量VAr中,你可以根据需要将其进一步处理或输出到其他设备。请注意,此代码仅包含模数转换部分,ADC0809的其他引脚连接和初始化需要根据实际电路进行设置。