ADC0832电压检测程序C51
时间: 2023-12-17 13:53:38 浏览: 49
以下是ADC0832电压检测程序C51的示例代码:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ADD_A = P3^2;
sbit ADD_B = P3^3;
sbit ADD_C = P3^4;
sbit OE = P3^5;
sbit EOC = P3^6;
sbit CLK = P3^7;
uchar code table[] = "0123456789";
void delay(uint xms) // 延时函数,单位为毫秒
{
uint i, j;
for(i = xms; i > 0; i--)
for(j = 112; j > 0; j--);
}
void write_com(uchar com) // 向LCD写命令
{
P1 = com;
P0 = 0;
_nop_();
_nop_();
_nop_();
_nop_();
P0 = 0x01;
delay(5);
P0 = 0;
}
void write_data(uchar dat) // 向LCD写数据
{
P1 = dat;
P0 = 1;
_nop_();
_nop_();
_nop_();
_nop_();
P0 = 0x01;
delay(5);
P0 = 0;
}
void init_adc0832() // 初始化ADC0832
{
ADD_A = 0;
ADD_B = 0;
ADD_C = 0;
OE = 1;
EOC = 1;
CLK = 0;
}
uchar read_adc0832() // 读取ADC0832的值
{
uchar i;
uchar dat = 0x00;
OE = 0;
EOC = 1;
CLK = 0;
for(i = 0; i < 8; i++)
{
CLK = 1;
_nop_();
dat <<= 1;
if(EOC)
dat |= 0x01;
CLK = 0;
_nop_();
}
OE = 1;
return dat;
}
void main()
{
uchar dat;
init_adc0832();
while(1)
{
dat = read_adc0832();
write_com(0x80);
write_data(table[dat / 100]);
write_data(table[dat % 100 / 10]);
write_data(table[dat % 10]);
delay(100);
}
}
```
该程序使用了51单片机,通过读取ADC0832的值来检测输入的电压,并将检测到的电压值显示在LCD上。程序中还包含了一些基本的延时和LCD控制函数。在使用时,需要根据硬件连接情况修改相应的引脚定义和初始化代码。