赞
踩
(1)什么是AD转换?A(A,analog,模拟的,D,digital,数字的)
现实世界是模拟的,连续分布的,无法被分成有限份;
计算机世界是数字的,离散分布的,是可以被分成有限份的;
AD转换就是把一个物理量从模拟的转换成数字的。
(2)AD转换的意义?
(3)什么情况下需要AD转换。
(1)比较器,所有的AD转换芯片内部都是用比较器来实现的。
(2)和10进制转2进制有点像。
(1)位数,AD转换后转出来的二进制数由几位二进制来表示。位数越多,越细腻。
(2)量程,AD转换器可以接受的模拟量的范围。
(3)精度,简单理解就是转出来到底有多准。
(4)分辨率,AD转换器转出来的二进制数,每一格表示多少。
(5)转换速率(转换时间)。
举个栗子:
输入电压范围0-5V,AD转换输出位数是10,精度是0.01V,则:量程为0-5V,
分辨率为:(5-0)/2exp(10)=0.00488V
譬如一次AD转换后得到的数据是1010101010,则对应的电压值为:3.328V,考虑精度后为3.33V
(1)CPU外部扩展专用AD芯片。
(2)CPU内部集成AD模块(内部外设)。
(1)SPI接口。
CLK接P1.0,CS接P1.1,DI接P1.2,DQ接P1.3.
(2)3种模拟电压变化原理:
AIN0靠滑动变阻器控制电压变化,AIN1靠热敏电阻NTC,AIN2靠光敏电阻GR。
ET2046的控制字:
bit7:1
bit6-4:决定采样的是哪一路(AIN0、AIN1、AIN2、AIN3)
AIN0:001/011 X+
AIN1:101 Y+
AIN2:010 VBAT
AIN3:110 AUX
bit3:设置采样位数。0表示12bit,1表示8bit,一般都用12bit
bit2:为1表示用单端模式,为0表示差分模式。此处用单端模式
bit1-0:power down模式使能,00表示使能。
读AIN0:0b10010100 = 0x94 (实验下0xb4行不行)
读AIN1:0b11010100 = 0xD4
读AIN2:0b10100100 = 0xA4
读AIN3:0b11100100 = 0xE4
(1)SPI变种。
(2)上升沿写入下降沿读出(之前DS1302的时候也是这样的)。
(3)读写都是高位在前(之前DS1302的时候是低位在前的)。
(4)注意写和读的交接点。
(1)写指令。
(2)读12位数字值。
(3)写+读形成一个完整采样周期。
#include"XPT2046.h"
/****************************************************************************
*函数名:SPI_Write
*输 入:dat:写入数据
*输 出:无
*功 能:使用SPI写入数据
****************************************************************************/
void SPI_Write(uchar dat)
{
uchar i;
CLK = 0;
for(i=0; i<8; i++)
{
DIN = dat >> 7; //放置最高位
dat <<= 1;
CLK = 0; //上升沿放置数据
CLK = 1;
}
}
/****************************************************************************
*函数名:SPI_Read
*输 入:无
*输 出:dat:读取 到的数据
*功 能:使用SPI读取数据
****************************************************************************/
uint SPI_Read(void)
{
uint i, dat=0;
CLK = 0;
for(i=
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。