📄 text1
字号:
#include<reg52.h>
sbit ADC_CS =P3^3;
sbit ADC_CLK=P3^2;
sbit ADC_DO =P3^7;
sbit ADC_DI =P3^6;
/*******************************************************************/
void Delay(unsigned char x)
{
unsigned char i;
for(i=0;i<x;i++); //延时,脉冲一位持续的时间
}
unsigned char ReadADC(void) //把模拟电压值转换成8位二进制数并返回
{
unsigned char i,ch;
ch=0;
ADC_CS=0;
ADC_DO=0;//片选,DO为高阻态
for(i=0;i<10;i++)
{;}
ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;
Delay(2); //第一个脉冲,起始位
ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;
Delay(2); //第二个脉冲,DI=1表示双通道单极性输入
ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;
Delay(2); //第三个脉冲,DI=1表示选择通道1(CH2)
ADC_DI=0;
ADC_DO=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备
ADC_CLK=1;
Delay(2);
ADC_CLK=0;
Delay(2);//经实验,这里加一个脉冲AD便能正确读出数据,
//不加的话读出的数据少一位(最低位d0读不出)
for (i=0; i<8; i++)
{
ADC_CLK=1;
Delay(2);
ADC_CLK=0;
Delay(2);
ch=(ch<<1)|ADC_DO;//在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数
}
ADC_CS=1;//取消片选,一个转换周期结束
return(ch);//把转换结果返回
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -