(13)AD&DA

文章详细介绍了AD和DA转换的概念及其在计算机系统中的作用,提到了几种不同的转换器类型,如T型电阻网络和PWM型DA转换器,以及逐次逼近型AD转换器。同时,重点讨论了运算放大器在电路中的重要性,包括它能构成的各种电路和分析方法。文章还提及了AD/DA转换器的关键性能指标,如分辨率和转换速度,并且详细阐述了XPT2046芯片在AD转换中的应用及读取AD值的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号,ADC模拟-数字转换器

DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号,DAC数字-模拟转换器

AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能

请添加图片描述

运算放大器:

运算放大器(简称“运放”)是具有很高放大倍数的放大电路单元。内部集成了差分放大器、电压放大器、功率放大器三级放大电路,是一个性能完备、功能强大的通用放大电路单元,由于其应用十分广泛,现已作为基本的电路元件出现在电路图中

运算放大器可构成的电路有:电压比较器、反相放大器、同相放大器、电压跟随器、加法器、积分器、微分器等

运算放大器电路的分析方法:虚短、虚断(负反馈条件下)

请添加图片描述

运放电路:

请添加图片描述

虚断:

请添加图片描述

压降:电流流过负载以后相对于同一参考点的电势(电位)变化称为电压降,简称压降。

简单的说,负载两端的电势差(电位差)就可以认为是电压降。电压降是电流流动的推动力。如果没有电压降,也就不存在电流的流动。

请添加图片描述

DA原理:

T型电阻网络DA转换器:

请添加图片描述

请添加图片描述

PWM型DA转换器:

请添加图片描述

请添加图片描述

AD原理:

逐次逼近型AD转换器:

请添加图片描述

请添加图片描述

AD/DA性能指标

分辨率:指AD/DA数字量的精细程度,通常用位数表示。例如,对于5V电源系统来说,8位的AD可将5V等分为256份,即数字量变化最小一个单位时,模拟量变化5V/256=0.01953125V,所以,8位AD的电压分辨率为0.01953125V,AD/DA的位数越高,分辨率就越高

转换速度:表示AD/DA的最大采样/建立频率,通常用转换频率或者转换时间来表示,对于采样/输出高速信号,应注意AD/DA的转换速度

XPT2046:

请添加图片描述

XPT2046时序:

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

sbit XPT2046_CS = P3^5;
sbit XPT2046_DIN = P3^4;
sbit XPT2046_DOUT = P3^7;
sbit XPT2046_DCLK = P3^6;

/**
  * @brief  XPT2046读取AD值
  * @param  Command 命令字,范围:头文件内定义的宏,结尾的数字表示转换的位数
  * @retval AD转换后的数字量,范围:8位为0~255,12位为0~4095
  */
unsigned int XPT2046_ReadAD(unsigned char command){
	unsigned int ADvalue = 0;
	unsigned char i;
	
	XPT2046_DCLK = 0; // 初始化DCLK
	XPT2046_CS = 0; // 片选
	
	for(i = 0; i < 8; i++){
		XPT2046_DIN = command & (0x80 >> i); // 发送指令
		XPT2046_DCLK = 1; // 上升沿
		XPT2046_DCLK = 0;
	}
	for(i = 0; i < 16; i++){ // 读16位
		XPT2046_DCLK = 1; // 上升沿
		XPT2046_DCLK = 0;
		if(XPT2046_DOUT){ADvalue |= (0x8000 >> i);} // 16位,所以是0x8000
	
	}
	XPT2046_CS = 1;
	
	if(command & 0x08){ // 结果8位
		return ADvalue>>8;
	}else{ // 结果12位
		return ADvalue>>4;
	}	
}
#define XPT2046_VBAT_8	0xAC  //读取AIN2,光敏电阻
#define XPT2046_AUX_8		0xEC
#define XPT2046_XP_8		0x9C	// 读取AIN0,可调电阻
#define XPT2046_YP_8		0xDC //读取AIN1,热敏电阻

#define XPT2046_VBAT_12	0xA4
#define XPT2046_AUX_12	0xE4
#define XPT2046_XP_12		0x94	//0xBC
#define XPT2046_YP_12		0xD4


void main(){
	
	LCD_Init();
	LCD_ShowString(1,1,"ADJ  NTC  GR");
	while(1){
		ADvalue = XPT2046_ReadAD(XPT2046_XP_8);  // 读取AIN0,可调电阻
		LCD_ShowNum(2,1, ADvalue, 3);
		ADvalue = XPT2046_ReadAD(XPT2046_YP_8);		//读取AIN1,热敏电阻
		LCD_ShowNum(2,6,ADvalue,3);
		ADvalue = XPT2046_ReadAD(XPT2046_VBAT_8);	//读取AIN2,光敏电阻
		LCD_ShowNum(2,11,ADvalue,3);
		Delay(100);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值