51单片机AD模数转换(SPI通信)

2023-10-27

一、AD/DA介绍

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

二、硬件电路模型

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

 三、AD/DA原理待定学习

四、XPT2046

AD/DA性能指标

        指AD/DA数字 量的精细程度,通常用位数表示。例如,对于5V电源系统来说, 8位的AD可将5V等分为256份,即数字量变化最小-个单位时,模拟量变化5V/256=0.01953125V,所以,8位AD的电压分辨率为0.01953125V, AD/DA的位数越高, 分辨率 就越高。
        转换速度: 表示AD/DA的最大采样/建立频率,通常用转换频率或者转换时间来表示,对于采样/输出高速信号,应注意AD/DA的转换速度。
        可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换, 单片机的I0口可直接复用为AD/DA的通道 。

XPT2046时序,采用SPI方式通信

DIN——MISO——主设备输入、从设备输出

DOUT——MOSI——主设备输出,从设备输入

        起始位——第一位,即 S 位。控制字的首位必须是 1,即 S= 1。在 XPT2046 的 DIN 引脚检测到起始位前,所有的输入将被忽略。

        地址——接下来的 3 位( A2、 A1 和 A0)选择多路选择器的现行通道(见表 3、表 4 和图 6),触摸屏驱动和参考源输入。

       MODE——模式选择位,用于设置 ADC 的分辨率。 MODE= 0,下一次的转换将是 12 位模式;MODE= 1,下一次的转换将是 8 位模式。

      SER/ DFR位控制参考源模式,选择单端模式( SER/DFR = 1),或者差分模式( SER/DFR = 0)。在X坐标、 Y坐标和触摸压力测量中,为达到最佳性能,首选差分工作模式。参考电压来自开关驱动器的电压。在单端模式下,转换器的参考电压固定为VREF相对于GND引脚的电压(更详细的说明,见表 3 和表 4,图 5 和图 8)。采用单端模式时,X- Y-接地。

       PD0 和 PD1——表 5 展示了掉电和内部参考电压配置的关系。 ADC 的内部参考电压可以单独关闭或者打开,但是,在转换前,需要额外的时间让内部参考电压稳定到最终稳定值;如果内部参考源处于掉电状态,还要确保有足够的唤醒时间。 ADC 要求是即时使用,无唤醒时间的。另外还得注意,当 BUSY 是高电平的时候,内部参考源禁止进入掉电模式。 XPT2046 的通道改变后,如果要关闭参考源,则要重新对 XPT2046 写入命令。即PD1为1是内部参考电压2.5V,,PD1为0是外部参考电压VREF。

 五、代码

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;

/**
  * @brief  ZPT2046读取AD值
  * @param  Command 命令字,范围:头文件内定义的宏,结尾的数字表示转换的位数
  * @retval AD转换后的数字量,范围:8位为0~255,12位为0~4095
  */
unsigned int XTP2046_ReadAD(unsigned char Command)//指令包括选择的通道,分辨率8、12位,参考电压,单端模式
{
	unsigned int ADVAlue=0;
	unsigned char i;
	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++)//读取AD数据
	{
		XPT2046_DCLK=1;
		XPT2046_DCLK=0;		
		if(XPT2046_DOUT){ADVAlue|=(0x8000>>i);}//高位在前,一共读16位,但只有前12位有效,后四位用0填充	
	}
	XPT2046_CS=1;
	if(Command&0x08)//根据模式选择8位还是12位
	{
			return ADVAlue>>8;//当8位时,读取到的数据是高八位,因此要往后移8位才是真实数据
	}
  else
	{
		  return ADVAlue>>4;//当12位时,有效数据是12位,后四位都是无效数据,因此往后移4位是真实数据
	}
}

main.c 

#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "XPT2046.h"

unsigned int ADVAlue;

void main()
{
	LCD_Init();
	LCD_ShowString(1,1,"ADJ NTC RG");
	while(1)
	{
		ADVAlue=XTP2046_ReadAD(XTP2046_XP_8);//读取AIN0,可调电阻
		LCD_ShowNum(2,1,ADVAlue,4);           //显示AIN0
		ADVAlue=XTP2046_ReadAD(XTP2046_YP_8);//读取AIN1,热敏电阻
		LCD_ShowNum(2,6,ADVAlue,4);           //显示AIN1
		ADVAlue=XTP2046_ReadAD(XTP2046_VBAT_8);//读取AIN2,光敏电阻
		LCD_ShowNum(2,11,ADVAlue,4);            //显示AIN2
		Delay(10);
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机AD模数转换(SPI通信) 的相关文章

  • 【arduino】【hx7111】电压转换芯片(压力)

    arduino hx7111 电压转换芯片 压力 1 百度百科时间 HX711是一款专为高精度电子秤而设计的24位A D转换器芯片 与同类型其它芯片相比 该芯片集成了包括稳压电源 片内时钟振荡器等其它同类型芯片所需要的外围电路 具有集成度高
  • 去水印最新教程

    一 封装一个函数来识别要解析的类型 获取类型 get type if this url match http s v douyin com null console log 识别到 dy 链接 return dy else if this

随机推荐

  • Date、DateFormat、Calendar日期类

    目录 1 Date 2 DateFormat 3 Calendar 1 Date 1 所在位置 java util Date 2 两种创建对象的方法 如果调用空参构造创建对象那么对象为当前的时间 如果调用有参构造 参数是一个long类型代表
  • Java中的加号+

    在 Java 中 加号 有两个作用 进行加法运算 字符串拼接 那 如何区分代码中的 是起什么作用呢 当 左右两边操作数至少有一个为字符串时 起到字符串拼接的作用 此时若要进行数值型的运算需要加括号 当 左右两边操作数都是数值型时 使用 就进
  • html打印页面去掉页眉页脚

    去掉页脚或者页眉 核心代码
  • 深入浅出DDR系列(一)—— DDR原理

    版权声明 本文为CSDN博主 奇小葩 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net u012489236 article details 10773073
  • 【从零开始的Java开发】2-8-2 CSS入门:CSS选择器、样式

    文章目录 CSS简介 CSS基础 CSS选择器 背景设置 使用外部样式表 样式 文本类样式 字体类样式 列表样式 伪类样式 CSS其他选择器 CSS选择器的优先级 CSS简介 CSS 即Cascading Style Sheets 层叠 样
  • WebRTC视频码率控制(二)—— QP检测

    WebRTC在视频编码过程中会进行QP检测 目的是让视频质量维持在可接受范围的前提下 调节整体视频表现 如分辨率 帧率 这里要注意的是 QP检测机制只是利用QP分析结果对分辨率 帧率进行调节 并不对编码QP做直接调整 说句题外话 通常编码器
  • Hausdorff distance

    微分动力系统原理 这本书里有介绍 Hausdorff距离是描述两组点集之间相似程度的一种量度 它是两个点集之间距离的一种定义形式 假设有两组集合A a1 ap B b1 bq 则这两个点集合之间的Hausdorff距离定义为 H A B m
  • Netcat 了解

    工作项目中遇到有用Netcat来实现Windows gt Macos通信 传输文件与数据的 所以想了解一下 Netcat 简称nc 是一款简单的Unix工具 使用UDP和TCP协议 它是一个可靠的容易被其他程序所启用的后台操作工具 同时它也
  • 计算机虚拟技术有什么用途,CPU虚拟化有什么作用?CPU怎么开启虚拟化技术?

    目前Intel和AMD的主流CPU都支持虚拟化技术 而搭配的主板BIOS中都自带了开启虚拟化技术的功能 但是主板出厂时默认禁用虚拟化技术的 如果我们如果需要使用CPU虚拟化技术 那么需要在主板中开启 那么CPU怎么开启虚拟化技术 下面装机之
  • 7-20 打印九九口诀表 (格式输出)

    下面是一个完整的下三角九九口诀表 1 1 1 1 2 2 2 2 4 1 3 3 2 3 6 3 3 9 1 4 4 2 4 8 3 4 12 4 4 16 1 5 5 2 5 10 3 5 15 4 5 20 5 5 25 1 6 6 2
  • linux对磁盘的管理员权限设置,Linux系统磁盘及文件系统管理

    本节索引 一 磁盘基本概念 二 磁盘分区管理 三 文件系统管理 四 设备挂载管理 一 磁盘基本概念 设备文件 Linux中一切皆文件 open read write close 设备类型 块设备 block 存储单位 块 磁盘 字符设备 c
  • 智能学习

    智能学习 MATLAB实现基于HS和谐搜索的时间序列未来多步预测 目录 智能学习 MATLAB实现基于HS和谐搜索的时间序列未来多步预测 效果一览 基本介绍 模型描述 程序设计 参考资料 效果一览 基本介绍 使用 Harmony Searc
  • docker部署redis集群配置文件笔记

    密码 requirepass 123456 指明为主机一的从机 slaveof 192 168 0 1 6389 主从redis同步的认证密码 与连接密码同 若不需要可不用配置 masterauth 123456 最大内存 maxmemor
  • 30条值得你借鉴的好习惯

    我有幸一直能生活在比较好的圈子中 我的优秀的同学 舍友 乃至我现在创业后遇到的优秀创业者 从他们身上看到和学到一些好的习惯 我一直觉得 好的习惯 是成功和进步的重要一点 我随手总结一些给大家 零散未经排版 当然 每个人有每个人的判断 这里可
  • 学术诚信的重要性_坚守学术道德,弘扬学术诚信

    霍楷 徐晨 摘 要 学车无辕而不立 人无信则不立 诚信乃为人之根本 学术诚信是个人行为秉性和学术道德品质的展现 反映了个体真实水准与学术涵养 培养学术道德意识 弘扬学术诚信精神 坚守学术诚信理念 净化学术环境是艺术类高校义不容辞的责任 提升
  • 基础12:高阶函数

    高阶函数 高阶函数英文叫 Higher order function 它的定义很简单 就是至少满足下列一个条件的函数 接受一个或多个函数作为输入 输出一个函数 也就是说高阶函数是对其他函数进行操作的函数 可以将它们作为参数传递 或者是返回它
  • springboot项目启动成功后执行一段代码的两种方式

    转自 https www cnblogs com zuidongfeng p 9926471 html 1 实现ApplicationRunner接口 package com lnjecit lifecycle import org spr
  • netcat小工具使用

    接收端 nc l 1789 gt test1 txt 发送端 nc 1 1 1 1 1789 lt test1 txt 使用nc传文件要比scp快不少 当然 安全性低了 root 12 nc h usage nc 46DdhklnrStUu
  • 小米笔记本pro开机出现no bootable devices

    用了4个月的小米笔记本开机突然出现no bootable devices 无法正常启动 很烦 如下图 上网查了资料 说是无法正确识别硬盘 然后 小米论坛的朋友 也有反馈 说很他们的小米笔记本也都出现了类似的情况 至今没有找到解决的方法 这可
  • 51单片机AD模数转换(SPI通信)

    一 AD DA介绍 AD AnalogtoDigital 模拟 数字转换 将模拟信号转换为计算机可操作的数字信号 DA Digital to Analog 数字 模拟转换 将计算机输出的数字信号转换为模拟信号 AD DA转换打开了计算机与模