用c51语言设计一个监测系统:利用AD0808循环监测通道6.上电位器的电压,并将电压值转换成的数字量,数字量通过外接8个LED灯显示。(ADC0808的基准 电压+5V )
时间: 2024-03-10 22:49:29 浏览: 25
以下是用C51语言设计的监测系统代码:
```
#include <reg52.h>
// 定义LED灯的IO口
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P1^4;
sbit LED5 = P1^5;
sbit LED6 = P1^6;
sbit LED7 = P1^7;
// 定义ADC0808的IO口
sbit CS = P3^2; // 片选信号
sbit RD = P3^5; // 读取信号
sbit INTR = P3^3; // 中断信号
sbit EOC = P3^4; // 转换完成信号
sbit ALE = P3^6; // 地址锁存信号
// 定义函数
unsigned char ADC0808_Convert()
{
unsigned char data = 0;
// 选择通道6
P2 = 0x05;
// 启动转换
ALE = 1;
ALE = 0;
// 等待转换完成
while(EOC == 1);
// 读取数据
RD = 1;
data = P0;
RD = 0;
return data;
}
// 主函数
void main()
{
unsigned char adc_data = 0;
while(1)
{
cs = 0;
adc_data = ADC0808_Convert();
cs = 1;
// 将模拟量转换成数字量
adc_data = adc_data / 32;
// 将数字量显示到LED灯上
LED0 = (adc_data & 0x01) ? 1 : 0;
LED1 = (adc_data & 0x02) ? 1 : 0;
LED2 = (adc_data & 0x04) ? 1 : 0;
LED3 = (adc_data & 0x08) ? 1 : 0;
LED4 = (adc_data & 0x10) ? 1 : 0;
LED5 = (adc_data & 0x20) ? 1 : 0;
LED6 = (adc_data & 0x40) ? 1 : 0;
LED7 = (adc_data & 0x80) ? 1 : 0;
}
}
```
需要注意的是,上电位器的电压需要在ADC0808的输入端引脚上接入,同时需要将ADC0808的VCC引脚连接到5V电源。在代码中,我们将ADC0808的通道6选择,并将模拟量转换成0-255的数字量,然后将数字量通过8个LED灯显示出来。