MCU-51:单片机之AD模数转换与DA数模转换

news2024/11/24 5:47:05

目录

  • 一、AD/DA介绍
  • 二、硬件电路模型
    • 2.1 模型
    • 2.2 硬件电路
  • 三、运算放大器
    • 3.1 运算放大器介绍
    • 3.2 运放电路
  • 四、DA原理
    • 4.1 T型电阻网络DA转换器:
    • 4.2 PWM型DA转换器:
  • 五、AD原理
  • 六、AD/DA性能指标
  • 七、XPT2046介绍
    • 7.1 功能说明
    • 7.2 XPT2046时序
  • 八、代码演示
    • 8.1 AD模数转换
    • 8.2 DA数模转换
  • 注意:一定要看

一、AD/DA介绍

AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号
DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号
AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能
在这里插入图片描述

二、硬件电路模型

2.1 模型

在这里插入图片描述
AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率
AD/DA与单片机数据传送可使用并口(速度快、原理简单),也可使用串口(接线少、使用方便)
可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换,单片机的IO口可直接复用为AD/DA的通道

2.2 硬件电路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、运算放大器

3.1 运算放大器介绍

运算放大器(简称“运放”)是具有很高放大倍数的放大电路单元。内部集成了差分放大器、电压放大器、功率放大器三级放大电路,是一个性能完备、功能强大的通用放大电路单元,由于其应用十分广泛,现已作为基本的电路元件出现在电路图中
运算放大器可构成的电路有:电压比较器、反相放大器、同相放大器、电压跟随器、加法器、积分器、微分器等
运算放大器电路的分析方法:虚短、虚断(负反馈条件下)

在这里插入图片描述

3.2 运放电路

在这里插入图片描述
在这里插入图片描述

四、DA原理

4.1 T型电阻网络DA转换器:

在这里插入图片描述
在这里插入图片描述

4.2 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介绍

7.1 功能说明

在这里插入图片描述

7.2 XPT2046时序

在这里插入图片描述

八、代码演示

8.1 AD模数转换

main.c

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.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,6,ADValue,3);
		ADValue=XPT2046_ReadAD(XPT2046_VBAT_8);
		LCD_ShowNum(2,11,ADValue,3);
		Delay(10);
	}
}

XPT2406.c

#include <REGX52.H>

sbit XPT2046_CS=P3^5;
sbit XPT2046_DIN=P3^4;
sbit XPT2046_DCLK=P3^6;
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)
	{
		return ADValue>>8;
	}
	else
	{
		return ADValue>>4;
	}
	
	
}

XPT2406.h

#ifndef __XPT2046_H__
#define __XPT2046_H__

#define XPT2046_XP_8  0x9C
#define XPT2046_YP_8  0xDC
#define XPT2046_VBAT_8  0xAC
#define XPT2046_AUX_8  0xEC

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

unsigned int XPT2046_ReadAD(unsigned char Command); 

#endif

8.2 DA数模转换

main.c

#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Nixie.h"
#include "Timer0.h"

sbit DA=P2^1;

unsigned char Counter,Compare;
unsigned char i;

void main()
{
	Timer0_Init();

	while(1)
	{
		for(i=0;i<100;i++)
		{
			Compare=i;
			Delay(10);
		}
		for(i=100;i>0;i--)
		{
			Compare=i;
			Delay(10);
		}
	}
}

注意:一定要看

千万不要直接复制代码,因为是模块化编写,模块的代码没有往上复制(模块的代码在以往的文章中可以找到),大家一定要自己动手,跟着视频学!!!!!

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

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

相关文章

JAVA17连接sqlserver:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

JAVA17连接sqlserver报错 : com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 Clien…

【Java寒假打卡】Java基础-字节输入流和字节输出流

【Java寒假打卡】Java基础-字节输入流和字节输出流&#xff09;概述字节输出流快速入门字节输出流的注意事项输出字节流-一次性写多个数据字节输出流的两个问题try-catch-finally捕获异常字节输入流写数据字节流读数据 一次性读取多个数据案例、文件复制使用字节数组进行拷贝文…

基于Springboot+vue+uni-app的校园失物招领平台源码+数据库,含主体PC端、微信小程序和web后台数据管理平台

校园失物招领网站 | lijinghai 项目介绍 &#x1f4d6; &#x1f449;基于Springbootvueuni-app的校园失物招领平台. 含平台主体PC端、微信小程序和web后台数据管理平台. 完整代码下载地址&#xff1a;基于Springbootvueuni-app的校园失物招领平台源码数据库 失物招领信息一…

枚举算法实例应用(二)

枚举算法实例应用&#xff08;二&#xff09; Extended Lights Out Description In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each (the actual puzzle has 5 rows of 5 buttons each). Each button has a light. When a button …

什么是云原生(非常详细)

云原生计算加速了应用与基础设施资源之间的解耦&#xff0c;通过定义开放标准&#xff0c;向下封装资源&#xff0c;将复杂性下沉到基础设施层&#xff1b;向上支撑应用&#xff0c;让开发者更关注业务价值。此外&#xff0c;云原生计算提供统一的技术栈&#xff0c;动态、混合…

LabVIEW创建Web服务

LabVIEW创建Web服务在LabVIEW项目中开发Web服务&#xff0c;组合并配置构成Web服务的VI和其他文件。按照下列步骤创建一个Web服务项目和两个HTTP方法VI。创建一个组织Web服务文件的LabVIEW项目。将项目保存为Tutorial.lvproj。右键单击我的电脑并选择新建Web服务。LabVIEW在该终…

C语言基本数据类型

一、float、double和 long double 1.1 声明浮点型变量 1.2浮点型常量 1.3 打印浮点值 二、复数和虚数类型 三、其他类型 一、float、double和 long double 对于金融和数学的程序经常使用浮点数&#xff0c;而C语言中的浮点类型有float、double和 long double类型。常见的…

CentOS Stream 9下RabbitMQ安装教程(最新RabbitMQ安装教程)

CentOS Stream 9 RabbitMQ安装教程前言Erlang下载安装RabbitMQ下载安装启动RabbitMQ配置RabbitMQManagement Plugin访问和权限日志文件和管理总结和收获如果博主的文章对您有所帮助&#xff0c;可以评论、点赞、收藏&#xff0c;支持一下博主!!!前言 操作系统&#xff1a;Cent…

RocketMQ消息短暂而又精彩的一生

核心概念 NameServer&#xff1a;可以理解为是一个注册中心&#xff0c;主要是用来保存topic路由信息&#xff0c;管理Broker。在NameServer的集群中&#xff0c;NameServer与NameServer之间是没有任何通信的。Broker&#xff1a;核心的一个角色&#xff0c;主要是用来保存消息…

刚录制德云社相声春晚,又带领徒弟排练京剧,郭德纲成功不是偶然

不知道大家有没有发现一种现象&#xff0c;很多人在底层的时候&#xff0c;都是削尖了脑袋往前钻&#xff0c;可是一旦有一天功成名就&#xff0c;就会刀兵入库马放南山。这种做法通俗地讲&#xff0c;就是功成名就激流勇退&#xff0c;比如马云、刘强东、黄征等互联网企业大佬…

【RabbitMQ】MQ的基本概念、RabbitMQ简介及安装

文章目录MQ的基本概念MQ概述MQ 的优势和劣势常见的MQ产品RabbitMQ简介RabbitMQ的安装1. 安装依赖环境2. 安装Erlang3. 安装RabbitMQ4. 开启管理界面及配置5. 启动6. 配置虚拟主机及用户用户角色Virtual Hosts配置创建Virtual Hosts设置Virtual Hosts权限MQ的基本概念 MQ概述 …

Python3,我把新年祝福写在“雨“中,你看,雨一直下,气氛还算融洽,在同个屋檐下....

新年愿望写在"雨"中1、引言2、代码实战2.1 模块介绍2.1.1 Pygame 介绍2.1.2 Pygame的display介绍2.1.3 Pygame的event介绍2.1.4 Pygame的font介绍2.2 代码示例3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c;2023年了&#xff0c; 你有啥愿望啊&#xff1f; 小鱼…

同消费互联网时代的轰轰烈烈相比,产业互联网似乎低调了许多

毫无疑问的是&#xff0c;一场衍生于产业的深度变革正在上演。在这样一场深度变革之中&#xff0c;曾经看似无法改变的存在&#xff0c;有了进化的可能性&#xff1b;曾经让玩家们望而却步的领域&#xff0c;有了进军的可能性。如果对这样一场深度变革进行一次总结的话&#xf…

测试分类那么多,哪些是你最需要掌握的内容?

目录 一、按照测试对象分类 1.1、可靠性测试 1.2、容错性测试 1.3、安装卸载测试 1.4、内存泄漏测试 1.5、弱网测试 二、按照是否查看代码分类 2.1、黑盒测试&#xff08;系统测试&#xff09; 2.2、白盒测试&#xff08;单元测试&#xff09; 2.3、灰盒测试&#xff0…

[数据结构1-1] 线性表

P3156 【深基15.例1】询问学号 题目描述 有 n ( n≤210^6) 名同学陆陆续续进入教室。我们知道每名同学的学号&#xff08;在 1 到 10^9之间&#xff09;&#xff0c;按进教室的顺序给出。上课了&#xff0c;老师想知道第 i个进入教室的同学的学号是什么&#xff08;最先进入…

浅谈IT自动化运维体系

大家好&#xff0c;今天我们来简单介绍一下 IT自动化运维的体系。 随着IT运维体系的不断发展&#xff0c;IT自动化运维已经成为IT运维体系的重要组成部分&#xff0c;并将随着信息化的发展发挥着越来越重要的作用。面对复杂的业务和多样化的用户需求&#xff0c;IT架构体系需要…

防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18

奉行长期主义的开发者都有一个共识&#xff1a;对于服务器来说&#xff0c;数据备份非常重要&#xff0c;因为服务器上的数据通常是无价的&#xff0c;如果丢失了这些数据&#xff0c;可能会导致严重的后果&#xff0c;伴随云时代的发展&#xff0c;备份技术也让千行百业看到了…

LINUX提权之信息收集篇

前言 准备开一个新坑&#xff0c;最近在学linux提权&#xff0c;于是打算用几篇文章来记录一下linux提权的重要知识点。首先第一篇文章介绍一下linux权限的基础信息以及如何进行信息收集。 LINUX权限简介 因为我们要学习权限提升&#xff0c;所以在学习提权之前我们先了解一…

ThinkPHP多语言文件包含RCE(QVD-2022-46174)

漏洞范围 v6.0.0<ThinkPHP<v6.0.13v5.0.0<ThinkPHP<5.0.12v5.1.0<ThinkPHP<5.1.8 需开启多语言选项&#xff0c;以thinkPHP6版本为例 在自定义中间件定义文件app/middleware.php中添加\think\middleware\LoadLangPack::class php需安装pearcmd拓展,并且开…

文档控件Aspose.words for.java 授权须知

支持的平台 Aspose.Words 可作为 .NET、Java、C 和 Python 的四种不同产品使用&#xff0c; .NET Framework.NET Standard 2.0Xamarin.AndroidXamarin.iOSXamarin.MacCOMMonoWindows Azure 系统要求 任何可以运行 Java Runtime Environment (JRE) 的操作系统都可以运行 Aspo…