贵阳网站seo外包,wordpress 横向扩展,网站建设职员,面向服务的关系建设网站35. AD_DA
35.1. AD/DA介绍 •AD#xff08;Analog to Digital#xff09;#xff1a;模拟-数字转换#xff0c;将模拟信号转换为计算机可操作的数字信号 •DA#xff08;Digital to Analog#xff09;#xff1a;数字-模拟转换#xff0c;将计算机输出的数字信号转换…35. AD_DA
35.1. AD/DA介绍 •ADAnalog to Digital模拟-数字转换将模拟信号转换为计算机可操作的数字信号 •DADigital to Analog数字-模拟转换将计算机输出的数字信号转换为模拟信号 •AD/DA转换打开了计算机与模拟信号的大门极大的提高了计算机系统的应用范围也为模拟信号数字化处理提供了可能 下图光敏电阻热敏电阻NTC麦克风驻极体话筒扬声器DA 35.2. 硬件电路模型 •AD转换通常有多个输入通道用多路选择开关连接至AD转换器以实现AD多路复用的目的提高硬件利用率 AD一般转换电压一般正比关系05V等同数字量0255数值8位 •AD/DA与单片机数据传送可使用并口速度快、原理简单也可使用串口接线少、使用方便串口使用类似I2C传送 •可将AD/DA模块直接集成在单片机内这样直接写入/读出寄存器就可进行AD/DA转换单片机的IO口可直接复用为AD/DA的通道DA一般没有多路输出例如PWM实现类似DA的功能 35.3. 硬件电路 上图开发板上原理电路右图PWM 上图ADC0809芯片和DAC0832芯片图 ADC0809介绍START开始转换EOC结束转换CLOCK时钟信号OE输出使能ADDA~ADDC对应8路IN输入选择A/D转换内部核心转换电路 DAC0832介绍D0~D7是8位数字输入8位输入寄存器8位DAC寄存器构成多路输入 35.4. 运算放大器 •运算放大器简称“运放”是具有很高放大倍数的放大电路单元。内部集成了差分放大器、电压放大器、功率放大器三级放大电路是一个性能完备、功能强大的通用放大电路单元由于其应用十分广泛现已作为基本的电路元件出现在电路图中 一般三极管放大电路搭建麻烦工作点很难稳定没有什么驱动能力带负载后压降很厉害很复杂运放作为通用模块 运放的特点输入电阻很大输出端有输出能力内部放大倍数认为无穷大 •运算放大器可构成的电路有电压比较器、反相放大器、同相放大器、电压跟随器、加法器、积分器、微分器等 •运算放大器电路的分析方法虚短、虚断负反馈条件下
右侧LM358运放单元 35.5. 运放电路 电压比较器开环情况下使用ININ-则OUTVCC反之OUTGND因为放大的是输入的差值利用放大倍数无穷大作为电压比较器 反向放大器放大倍数用R2与R1调整例如输入V0.1V进入放大器负此时输出也为放大后的V-负值电压反馈到输入端将原先0.1V拉低到零以下此时放大器输出为放大后的V正直电压。。。反复上述过程进入稳态输出为0.(用虚短原理放大器输入正负都是接地反向输入电阻无穷大没有电流流入则VIN/R1VOUT/R20,在放大器负极入口位置电流为0由此得出VOUT-(R2/R1)XVIN,反向放大如果需要输出负的电压就需要接正负双电源如12V/-12V ) 35.6. 运放电路 同向放大器虚短的时候放大器的正极和负极短路续断的情况放大器负极电流输入为0则有放大器负极端对地的电流为VIN/R1此电流与流过R2电流相同则VOUTVINVIN(R2/R1)(1R2/R1)XVIN且为同向放大器无需双电源 电压跟随器放大倍数为1但有功率驱动的能力VOUTVIN是同向放大器R1无穷大的情况。 35.7. DA原理 •T型电阻网络DA转换器 DA转换具体电路右侧放大器正极接地根据虚短原理V负V正GND防止对放大器之前的电路产生影响上述原理图中最右侧两个2R的电阻为并联并联后的阻值为R再与I1流过的R串联再与I1向下流入的2R并联后再与I2向右流过的R串联。。。经过计算最终IVref/R但是I12xI0I22xI14I0。。。最终I2xI7256xI0实现对电流的类似2进制位权当2R下面的开关拨到0位置的时候I接地VO0相应2R下面开关置1的时候相应位置的电流流向放大器反向输入端结合Rfb构成反向放大电路流入的电路I01为上述电阻开关置1后的电流值的汇总累加实现类似256级电流值 上述公式需要加负号反向放大电路 35.8. DA原理 •PWM型DA转换器 PWM信号过R1与C1低通滤波器上图2阶低通滤波器低通滤波器去除电路中的交流信号就只有直流信号了 35.9. AD原理 AD基本原理是用一个已知的电压和未知的电压需要模拟的模拟量进行比较无限接近这个未知电压AD逐次逼近的原理每次取1/2,缩小范围例如对5V电压进行256位细分则2.5V电压对应128对应2进制1000 0000 再比较电压如果比2.5V小再对2.5V进行细分64对应2进制0100 0000如此反复从高到底确定输出的D判断8次就是逐次逼近的方法。 35.10. AD/DA性能指标 •分辨率指AD/DA数字量的精细程度通常用位数表示。例如对于5V电源系统来说8位的AD可将5V等分为256份即数字量变化最小一个单位时模拟量变化5V/2560.01953125V所以8位AD的电压分辨率为0.01953125VAD/DA的位数越高分辨率就越高 •转换速度表示AD/DA的最大采样/建立频率通常用转换频率或者转换时间来表示对于采样/输出高速信号应注意AD/DA的转换速度 35.11. XPT2046
35.12. XPT2046时序
SPI的通讯CS片选用于多设备通讯独立走线三根线CLK,DIN,DOUT过程先CS片选上升沿输入下降沿输出
36. AD模数转换DA数模转换 36.1. 需要制作一个程序在LCD1602显示屏上面显示如下信息LCD的第一行显示 ADJ, NTC, RG, 第二行显示对应的可调电阻 光敏电阻和热敏电阻的阻值并实时更新相当于将可调电阻光敏电阻和热敏电阻的模拟量值转换为数字量值实现AD转换因为Proteus中暂时没有针对国产AD芯片XPT2046的仿真芯片所以仅列出开发板测试程序 36.2. 设计思路是先写出XPT2046的模块程序返回芯片转换后的数值然后在主程序中直接通过LCD1602显示 XPT2046.c如下
#include REGX52.Hsbit XPT2046_CSP3^5;
sbit XPT2046_DCLKP3^6;
sbit XPT2046_DINP3^4;
sbit XPT2046_DOUTP3^7;unsigned int XPT2046_ReadAD(unsigned char Command)
{unsigned char i;unsigned int ADVAlue0;XPT2046_DCLK0;XPT2046_CS0;for(i0;i8;i){XPT2046_DINCommand(0x80i);XPT2046_DCLK1;XPT2046_DCLK0;}for(i0;i16;i) { XPT2046_DCLK1;XPT2046_DCLK0;if(XPT2046_DOUT){ADVAlue|(0x8000i);}}XPT2046_CS1;if(Command0x08) //判断是否是12位模式{return ADVAlue8; //右移8位否则右侧8位为0共16位}else{return ADVAlue4;}
}
XPT2046.h如下
#ifndef _XPT2046_H_
#define _XPT2046_H_ #define XPT2046_XP_8 0x9c //X路
#define XPT2046_YP_8 0xdc //Y路
#define XPT2046_VBAT_8 0xac //Y路
#define XPT2046_AUX_8 0xec //Y路#define XPT2046_XP_12 0x94 //X路
#define XPT2046_YP_12 0xd4 //Y路
#define XPT2046_VBAT_12 0xa4 //Y路
#define XPT2046_AUX_12 0xe4 //Y路unsigned int XPT2046_ReadAD(unsigned char Command);#endif
主程序为
#include REGX52.h
#include LCD1602.h
#include delay_xms.h
#include XPT2046.hunsigned int Advalue;void main()
{LCD_Init();LCD_ShowString(1,1,ADJ NTC RG);while(1){AdvalueXPT2046_ReadAD(XPT2046_XP_8);LCD_ShowNum(2,1,Advalue,3);AdvalueXPT2046_ReadAD(XPT2046_YP_8);LCD_ShowNum(2,5,Advalue,3);AdvalueXPT2046_ReadAD(XPT2046_VBAT_8);LCD_ShowNum(2,9,Advalue,3);delay_xms(10);}}