📄 ad0832驱动程序.c
字号:
sbit ADCS=P1^3;
sbit ADCLK=P1^5;
sbit ADDO =P1^6;
sbit ADDI =P1^7;
// 读取温度信号
unsigned char ReadADCH0(void) //把模拟电压值转换成8位二进制数并返回
{
unsigned char i, ch;
ch=0;
ADCS=0;
ADDO=0; //片选,DO为高阻态
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
ADDI=1;
ADCLK=1;
Nop();
Nop(); //第一个脉冲,起始位
ADCLK=0;
Nop();
Nop();
ADDI=1;
ADCLK=1;
Nop();
Nop();//第二个脉冲,DI=1表示双通道单极性输入
ADCLK=0;
Nop();
Nop();
ADDI=0;
ADCLK=1;
Nop();
Nop(); //第三个脉冲,DI=1表示选择通道1(CH2)
ADDI=0;
ADDO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备
ADCLK=1;
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
for (i=0; i<8; i++)
{
ADCLK=1;
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
ch = (ch<<1)&0xfe;
if (ADDO) ch |= 0x01;
else ch |= 0x00; //在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数
}
ADCS=1; //清除所有寄存器
return ch;
}
// 读取湿度信号
unsigned char ReadADCH1(void) //把模拟电压值转换成8位二进制数并返回
{
unsigned char i,ch;
ch=0;
ADCS=0;
ADDO=0;//片选,DO为高阻态
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
ADDI=1;
ADCLK=1;
Nop();
Nop(); //第一个脉冲,起始位
ADCLK=0;
Nop();
Nop();
ADDI=1;
ADCLK=1;
Nop();
Nop();//第二个脉冲,DI=1表示双通道单极性输入
ADCLK=0;
Nop();
Nop();
ADDI=1;
ADCLK=1;
Nop();
Nop();//第三个脉冲,DI=1表示选择通道1(CH2)
ADDI=0;
ADDO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备
ADCLK=1;
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
for (i=0; i<8; i++)
{
ADCLK=1;
Nop();
Nop();
ADCLK=0;
Nop();
Nop();
ch = (ch<<1)&0xfe;
if (ADDO) ch |= 0x01;
else ch |= 0x00; //在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数
}
ADCS=1; // 清除所有寄存器
return(ch);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -