生成代码:用AT89C51设计一个监测系统。 设计要求: 利用AD0808循环监测通道6上电位器的电压,并将转换成的数字量通过外接8个LED灯显示。(ADC0808的基准电压+5V )
时间: 2024-05-06 22:17:23 浏览: 8
以下是AT89C51设计的监测系统的代码:
```c
#include <reg51.h>
sbit CS = P1^0;
sbit RD = P1^1;
sbit WR = P1^2;
sbit INTR = P1^3;
sbit D0 = P2^0;
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit D3 = P2^3;
sbit D4 = P2^4;
sbit D5 = P2^5;
sbit D6 = P2^6;
sbit D7 = P2^7;
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++) {
for (j = 0; j < 1275; j++);
}
}
void adc0808_init() {
CS = 1;
RD = 1;
WR = 1;
INTR = 1;
}
unsigned char adc0808_read(unsigned char channel) {
unsigned char result;
CS = 0;
WR = 0;
D0 = 1;
D1 = 1;
D2 = 1;
D3 = channel;
WR = 1;
delay(1);
RD = 0;
delay(1);
result = D7;
RD = 1;
CS = 1;
return result;
}
void main() {
unsigned char value;
adc0808_init();
while (1) {
value = adc0808_read(6);
D0 = value & 0x01;
D1 = value & 0x02;
D2 = value & 0x04;
D3 = value & 0x08;
D4 = value & 0x10;
D5 = value & 0x20;
D6 = value & 0x40;
D7 = value & 0x80;
delay(100);
}
}
```
该代码中使用了ADC0808芯片来实现对通道6上电位器的电压的循环监测,并将转换成的数字量通过外接的8个LED灯进行显示。在程序中,首先进行了ADC0808芯片的初始化,然后使用adc0808_read()函数读取通道6上的电压值,并将其转化为0-255的数字值。最后,使用D0-D7的位控制外接的LED灯进行显示,并通过delay函数设置了一个适当的延时时间,以便LED灯可以正常闪烁。
需要注意的是,ADC0808芯片的基准电压为+5V,因此在实际电路设计时需要将其连接到+5V电源上。同时还需要注意,代码中使用的是P1口的0-3号引脚来控制ADC0808芯片的CS、RD、WR和INTR信号,因此在电路设计时也需要将它们连接到相应的引脚上。