51单片机入门_江协科技_35~36_OB记录的自学笔记_AD与DA转换(XPT2046)

35. AD_DA

  • 35.1. AD/DA介绍
    •AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号
    •DA(Digital 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. 运放电路
    在这里插入图片描述

  • 电压比较器:开环情况下使用,IN+>IN-则OUT=VCC,反之OUT=GND;因为放大的是输入的差值,利用放大倍数无穷大作为电压比较器;

  • 反向放大器:放大倍数用R2与R1调整,例如输入V=0.1V进入放大器负,此时输出也为放大后的V-负值电压,反馈到输入端将原先0.1V拉低到零以下,此时放大器输出为放大后的V+正直电压。。。反复上述过程进入稳态输出为0.(用虚短原理,放大器输入正负都是接地,反向输入电阻无穷大没有电流流入,则VIN/R1+VOUT/R2=0,在放大器负极入口位置电流为0,由此得出VOUT=-(R2/R1)XVIN,反向放大,如果需要输出负的电压,就需要接正负双电源,如+12V/-12V, )

  • 35.6. 运放电路
    在这里插入图片描述

  • 同向放大器:虚短的时候放大器的正极和负极短路,续断的情况放大器负极电流输入为0,则有放大器负极端对地的电流为VIN/R1,此电流与流过R2电流相同,则VOUT=VIN+VIN(R2/R1)=(1+R2/R1)XVIN,且为同向放大器,无需双电源;

  • 电压跟随器:放大倍数为1,但有功率驱动的能力,VOUT=VIN,是同向放大器R1=无穷大的情况。

  • 35.7. DA原理
    •T型电阻网络DA转换器:
    在这里插入图片描述

    • DA转换具体电路
    • 右侧放大器正极接地,根据虚短原理,V负=V正=GND,防止对放大器之前的电路产生影响;
    • 上述原理图中最右侧两个2R的电阻为并联,并联后的阻值为R,再与I1流过的R串联,再与I1向下流入的2R并联后再与I2向右流过的R串联。。。经过计算最终I=Vref/R,但是I1=2xI0,I2=2xI1=4I0。。。最终I=2xI7=256xI0,实现对电流的类似2进制位权;
    • 当2R下面的开关拨到0位置的时候,I接地,VO=0,相应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/256=0.01953125V,所以,8位AD的电压分辨率为0.01953125V,AD/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.H>sbit XPT2046_CS=P3^5;
sbit XPT2046_DCLK=P3^6;
sbit XPT2046_DIN=P3^4;
sbit XPT2046_DOUT=P3^7;unsigned int XPT2046_ReadAD(unsigned char Command)
{unsigned char i;unsigned int ADVAlue=0;XPT2046_DCLK=0;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++)		{	XPT2046_DCLK=1;XPT2046_DCLK=0;if(XPT2046_DOUT){ADVAlue|=(0x8000>>i);}}XPT2046_CS=1;if(Command&0x08)		//判断是否是12位模式{return ADVAlue>>8;	//右移8位,否则右侧8位为0,共16位}else{return ADVAlue>>4;}		
}
  • 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.h"unsigned int Advalue;void main()
{LCD_Init();LCD_ShowString(1,1,"ADJ NTC RG");while(1){Advalue=XPT2046_ReadAD(XPT2046_XP_8);LCD_ShowNum(2,1,Advalue,3);Advalue=XPT2046_ReadAD(XPT2046_YP_8);LCD_ShowNum(2,5,Advalue,3);Advalue=XPT2046_ReadAD(XPT2046_VBAT_8);LCD_ShowNum(2,9,Advalue,3);delay_xms(10);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统设计 --- E2E Test System

系统设计 --- E2E Test System 什么是E2EE2E Architecture Example 什么是E2E E2E&#xff08;端到端&#xff09;测试是一种软件测试方法&#xff0c;旨在模拟真实的用户场景&#xff0c;测试整个应用程序或系统的端到端功能和交互流程。E2E 测试涵盖了从用户界面到后端系统的…

已解决java.util.concurrent.CancellationException: 取消异常的正确解决方法,亲测有效!!!

已解决java.util.concurrent.CancellationException: 取消异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 检查任务状态 使用适当的异常处理 提供取消的反馈 管理并发任务的生命周期 总结 博…

【Flutter 面试题】 为什么Flutter中的Widget使用const注解?

【Flutter 面试题】 为什么Flutter中的Widget使用const注解? 文章目录 写在前面口述回答补充说明示例代码说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同…

智能合约语言(eDSL)—— 测试

1、准备合约 如何写合约&#xff0c;与编译之前的文章已经写过了&#xff0c;准备好.wasm文件。 2、测试程序 xwasm/wasm/tests at main XuHugo/xwasm GitHub 2.1 读取合约 let modules fs::read("./tests/wasmfile/contract.wasm").unwrap(); 2.2预编译合约…

Java23种设计模式-结构型模式之外观模式

外观模式&#xff08;Facade Pattern&#xff09;&#xff1a;为复杂的系统提供了一个简单的统一接口&#xff0c;使得系统更易于使用和理解&#xff08;对外提供一个统一的方法&#xff0c;来访问子系统中的一群接口&#xff09; 外观模式三个核心角色&#xff1a; 角色1.外观…

信息系统项目管理师论文考察范围预测

在2023年下半年实施机考之前&#xff0c;论文的范围还是比较好预测的&#xff0c;因为从历年考题来看&#xff0c;可以说十大管理领域考察的概率接近100%&#xff0c;而且有一定规律&#xff0c;比如说某个管理领域很久没考了&#xff0c;那么考察的概率就相对大一点&#xff0…

力扣爆刷第126天之动态规划五连刷(斐波那契、爬楼梯、不同路径)

力扣爆刷第126天之动态规划五连刷&#xff08;斐波那契、爬楼梯、不同路径&#xff09; 文章目录 力扣爆刷第126天之动态规划五连刷&#xff08;斐波那契、爬楼梯、不同路径&#xff09;一、509. 斐波那契数二、70. 爬楼梯三、746. 使用最小花费爬楼梯四、62. 不同路径五、63. …

前端算法

4大算法&#xff1a; 贪心算法&#xff1a;局部最优解分治算法&#xff1a;将一个问题分成多个小模块动态规划&#xff1a;每一个状态都是过去历史的总结回溯算法&#xff1a;不是最优选择的时候退回重新选 一、排序算法 1. 冒泡排序&#xff1a;数字越大越往上 第一次循环 比…

Docker创建enrollment token错误异常

问题 部署完kibana&#xff0c;需要通过enrollment token方式来连接elasticsearch&#xff0c;此时需要在elasticsearch中创建enrollment token。 执行创建命令时&#xff0c;报如下错误&#xff1a; elasticsearch-create-enrollment-token --scope kibanaERROR: [xpack.se…

IDEA 全局查找 ctrl + shift + F 快捷键失效

全局查找&#xff1a;ctrl shift F 需要关闭微软输入法简体/繁体切换&#xff0c;不然被占用了无效 (装了搜狗输入法的同理,找一下是不是这个快捷键冲突了 ) 另外还有 IDEA 中 重构变量名 &#xff1a;shift F6 需要关闭微软输入法最新版本 ( 使用以前版本的微软输入法就没…

CSS渐变色理论与分类、文字渐变色方案、炸裂渐变色方案以及主流专业渐变色工具网站推荐

渐变色彩可以增加视觉层次感和动态效果&#xff0c;使网页界面更加生动有趣&#xff0c;吸引用户注意力。另外&#xff0c;相较于静态背景图片&#xff0c;CSS渐变无需额外的HTTP请求&#xff0c;减轻服务器负载&#xff0c;加快页面加载速度&#xff1b;同时CSS渐变能够根据容…

Qt——QGridLayout

1. 设置单元格比例 在Qt中&#xff0c;如果你想设置网格布局&#xff08;QGridLayout&#xff09;中单元格的比例&#xff0c;你需要使用QGridLayout的拉伸系数&#xff08;stretch factors&#xff09;来控制行和列的相对大小。你可以通过调用setRowStretch和setColumnStretch…

windows下git提交修改文件名大小写提交无效问题

windows系统不区分大小写&#xff0c;以及git提交忽略大小写&#xff0c;git仓库已存在文件A.js&#xff0c;本地修改a.js一般是没有提交记录的&#xff0c;需要手动copy一份出来A.js&#xff0c;再删除A.js文件提交仓库删除后&#xff0c;再提交修改后的a.js文件。 windows决…

【八股】synchronized

synchronized关键字的底层原理&#xff1f; synchronized是Java中用于实现同步的关键字&#xff0c;每个对象内部都有一个锁&#xff08;也称为监视器锁或互斥锁&#xff09;&#xff0c; 而synchronized就是一种用来获取或释放这个锁的机制。 他的底层是由monitor实现的&…

C/C++程序设计实验报告4 | 函数实验

本文整理自博主本科大一《C/C程序设计》专业课的课内实验报告&#xff0c;适合C语言初学者们学习、练习。 编译器&#xff1a;gcc 10.3.0 ---- 注&#xff1a; 1.虽然课程名为C程序设计&#xff0c;但实际上当时校内该课的内容大部分其实都是C语言&#xff0c;C的元素最多可能只…

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

tailwindcss在使用cdn引入静态html的时候,vscode默认不会提示问题

1.首先确保vscode下载tailwind插件&#xff1a;Tailwind CSS IntelliSense 2.需要在根目录文件夹创建一个tailwind.config.js文件 export default {theme: {extend: {// 可根据需要自行配置&#xff0c;空配置项可以正常使用},}, }3.在html文件的标签中引入配置文件&#xf…

【JavaScript】axios

基础使用 <script src"https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script> <script>axios.get(https://study.duyiedu.com/api/herolist).then(res> {console.log(res.data)}) </script>get - params <script s…

数据仓库与数据挖掘(实验一2024.4.24)

实验准备&#xff1a; 1.下载conda 2.配置环境C:\ProgramData\miniconda3\Scripts 3.创建文件夹panda进入虚拟环境qq 激活虚拟环境&#xff1a;activate qq 启动jupyter lab&#xff08;python语言环境编译&#xff09;&#xff1a;jupyter lab 4.panda下载 &#xff08;…

Docker容器通俗讲解

Docker容器通俗讲解 摘要&#xff1a; 本文旨在以通俗易懂的语言介绍Docker容器技术&#xff0c;包括其定义、原理、优势以及在实际应用中的案例。通过阅读本文&#xff0c;读者将能够理解Docker容器的基本概念和工作机制&#xff0c;并认识到其在现代软件开发和运维中的重要性…