单片机关于 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);
{
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语言基础要加强啊
芯片资料上至少会告诉你输出二进制码和输入电压的关系
看看,学习一下
栏目分类
射频专业培训教程推荐