微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机关于 A/D的 一个程序看不懂。。。谢谢

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

时间:10-02 整理:3721RD 点击:
单片机关于  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);

你的AD是串行输出,高位在前,那个if语句就是判断数据线上是1还是0,是1的话,就给变量data_ad的最低位置1。
为什么是500/255,也许因为你的AD是8位数据输出,参考电压是5V,把结果放大了100倍。
好好看看AD转换的资料,很简单的

来跟着学习中

lai xue xi

谢谢哈。我知道是高位在前的。但是为什么还需要判断一下  数据线上是1还是0?是1的话,就给变量data_ad的最低位置1。不是1的话 就不执行data_ad |= 0x01;  为什么要这样的?我查这个芯片资料了,上面没解释关于这个的。谢谢

因为data_ad的最低位在进行if判断之前是0,如果数据线上是1,就置1,再左移1位;如果是0,就直接左移1位。
你的C语言基础要加强啊

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

看看,学习一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top