标题: 想问下这段单片机程序的具体意思,adc0832的 [打印本页]
作者: 异星人 时间: 2019-5-24 14:41
标题: 想问下这段单片机程序的具体意思,adc0832的
前面那个是根据时序图来写的吧?但是从for循环开始那边是什么意思呢?
unsigned int A_D() //ADC0832 读值程序
{
unsigned char i;
unsigned char dat;
ADC0832_CS=1; //一个转换周期开始
ADC0832_CLK=0; //为第一个脉冲作准备
ADC0832_CS=0; //CS置0,片选有效
ADC0832_DIO=1; //DIO置1,规定的起始信号
ADC0832_CLK=1; //第一个脉冲
ADC0832_CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
ADC0832_DIO=1; //DIO置1, 通道选择信号
ADC0832_CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道RH0
ADC0832_CLK=0; //第二个脉冲下降沿
ADC0832_DIO=0; //DI置0,选择通道0
ADC0832_CLK=1; //第三个脉冲
ADC0832_CLK=0; //第三个脉冲下降沿
ADC0832_DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1
ADC0832_CLK=1; //第四个脉冲
for(i=0;i<8;i++) //高位在前
{
ADC0832_CLK=1; //第四个脉冲
ADC0832_CLK=0;
dat<<=1; //将下面储存的低位数据向右移
dat|=(unsigned char)ADC0832_DIO; //将输出数据DIO通过或运算储存在dat最低位
}
ADC0832_CS=1; //片选无效
return dat; //将读书的数据返回
}
作者: angmall 时间: 2019-5-24 23:32
注释 解释很清楚 就是读出数据
作者: netlmq 时间: 2019-5-25 07:39
从ADC0832的DIO端输出转换数据,先最高位DATA7,依次输出,直到DATA0。
先产生一个CLk脉冲下降沿,同时,(dat<<=1; ),dat左移一位,空出最低位准备接收ADC0832_DIO位。
DIO 端输出一位数据,并入dat低位,for循环,读取8次,接收完最低位数据DATA0,一个字节的数据输出完成。一次A/D 转换的结束。
最后将CS 置高电平禁用芯片,将转换后的数据dat返回。
作者: 异星人 时间: 2019-5-25 09:20
adc0832不是需要读两次吗?正的一次反的一次
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |