1.AD/DA介绍
· AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号
· DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号
· AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能
2.硬件电路模型
· AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率
· AD/DA与单片机数据传送可使用并口(速度快、原理简单),也可使用串口(一位一位发送、接线少、使用方便)
· 可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换,单片机的IO口可直接复用为AD/DA的通道
PWM在一定程度上可以代替DA
3.硬件电路
4.XPT2046
XPT2046是一个A/D转换器,用的时候直接用时序将A/D的值读出即可
XPT2046时序
DCLK、DIN、DOUT三根线共用,而每个芯片有一个单独的CS片选,在同一时间只选中一片,然后三根线与芯片进行通信,不会产生冲突
CS:开始输入时拉低,结束时拉高
DCLK:上升沿输入,下降沿输出
5.AD模数转换
现象:LCD显示可调电阻、热敏电阻和光敏电阻的值
定义引脚
读AD值
命令码宏定义
S必须为1,A2-A0地址位,MODE为1(8位模式),SER/DFR为1(单端模式),PD1为0(外部电压),PD0为0(低功率模式)
测量X+,根据单端模式输入配置图,A2-A0可以为001,也可以为011,以001为例,故命令码为1001 1100即0x9C,011为0xBC
测量Y+,A2-A0为101,命令码为1101 1100即0xDC
测量VBAT,A2-A0为010,命令码为1010 1100即0xAC
测量AUX,A2-A0为110,命令码为1110 1100即0xEC
XPT2046.c
#include <REGX52.H>
#include <INTRINS.H>
//引脚定义
sbit XPY2046_DIN=P3^4;
sbit XPY2046_CS=P3^5;
sbit XPY2046_DCLK=P3^6;
sbit XPY2046_DOUT=P3^7;