单片机关于 A/D的 一个程序看不懂。。。谢谢

2019-07-16 02:33发布

单片机关于  A/D的 一个程序看不懂。。。谢谢        for(i = 0;i < 8;i++)




    {       
                  sclk = 1;
                  if(data_temp) ???  这里为什么还要判断一下??
                data_ad |= 0x01;
                  sclk = 0;  
                  data_ad = data_ad << 1;  
        }        
          cs = 1;
        data_ad = data_ad * (500 / 255);???这里为什么是 (500 / 255)
          return(data_ad);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
popeye0451
1楼-- · 2019-07-16 03:29
你的AD是串行输出,高位在前,那个if语句就是判断数据线上是1还是0,是1的话,就给变量data_ad的最低位置1。

为什么是500/255,也许因为你的AD是8位数据输出,参考电压是5V,把结果放大了100倍。
好好看看AD转换的资料,很简单的
xcxcy
2楼-- · 2019-07-16 07:40
来跟着学习中
skai353535
3楼-- · 2019-07-16 09:27
lai xue xi
1315002000
4楼-- · 2019-07-16 14:38
 精彩回答 2  元偷偷看……
popeye0451
5楼-- · 2019-07-16 19:44
1315002000 发表于 2013-2-2 18:32
谢谢哈。。我知道是高位在前的。。但是为什么还需要判断一下  数据线上是1还是0???是1的话,就给[/bac ...

因为data_ad的最低位在进行if判断之前是0,如果数据线上是1,就置1,再左移1位;如果是0,就直接左移1位。

你的C语言基础要加强啊
popeye0451
6楼-- · 2019-07-16 23:55
1315002000 发表于 2013-2-2 18:32
谢谢哈。。我知道是高位在前的。。但是为什么还需要判断一下  数据线上是1还是0???是1的话,就给[/bac ...

芯片资料上至少会告诉你输出二进制码和输入电压的关系

一周热门 更多>