普中51单片机学习(AD转换)
AD转换
分辨率
ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。
一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/(2^12 )=2.4mV。
量化误差
ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。
偏移误差
偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。
满刻度误差
满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
线性度
线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
绝对精度
在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。
转换速率
ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

逐次逼近式ADC的转换原理

逐次逼近式AD转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对分搜索法”产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量Vi的大小,若Vn>Vi,清除最高位,若Vn<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位) 试探模拟量Vi的大小。在bit6确定后,SAR以对分搜索法确定bit5位,即以低6位的一半yy100000B(y为已确定位) 试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束。




- 如果要检测转换电位器模拟信号,控制字命令寄存器值为0X94或者0XB4.
- 如果要检测转换热敏电阻模拟信号,控制字命令寄存器值为0XD4.
- 如果要检测转换光敏电阻模拟信号,控制字命令寄存器值为0XA4.
- 如果要检测转换AIN3通道上模拟信号,控制字命令寄存器值为0XE4.

实验代码
XPT2046.h
#ifndef _XPT2046_H
#define _XPT2046_H#include "reg52.h"
#include "intrins.h"#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endifsbit DOUT=P3^7;
sbit CLK=P3^6;
sbit DIN=P3^4;
sbit CS=P3^5;uint Read_AD_Data(uchar cmd);
uint SPI_Read(void);
void SPI_Write(uchar dat);#endif
XPT2046.c
#include "XPT2046.h"void SPI_Write(uchar dat)
{uchar i;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;dat<<=1;CLK=0;CLK=1;}
}uint SPI_Read(void)
{uint i,dat=0;CLK=0;for(i=0;i<12;i++){dat<<=1;CLK=1;CLK=0;dat|=DOUT;}return dat;
}uint Read_AD_Data(uchar cmd)
{uchar i;uint AD_Value;CLK=0;CS=0;SPI_Write(cmd);for(i=0;i<6;i++){ }CLK=1;_nop_();_nop_();CLK=0;_nop_();_nop_();AD_Value=SPI_Read();CS=1;return AD_Value;
}
main.c
#include "reg52.h"
#include "XPT2046.h"typedef unsigned int u16;
typedef unsigned char u8;sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;u8 disp[4];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(u16 i)
{while(i--);
}void datapros()
{u16 temp;static u8 i;if(i==50){i=0;temp=Read_AD_Data(0x94);}i++;disp[0]=smgduan[temp/1000];disp[1]=smgduan[temp%1000/100];disp[2]=smgduan[temp%100/10];disp[3]=smgduan[temp%10];
}void DigDisplay()
{u8 i;for(i=0;i<4;i++){switch(i) //位选,选择点亮的数码管,{case(0):LSA=0;LSB=0;LSC=0; break;//显示第0位case(1):LSA=1;LSB=0;LSC=0; break;//显示第1位case(2):LSA=0;LSB=1;LSC=0; break;//显示第2位case(3):LSA=1;LSB=1;LSC=0; break;//显示第3位 }P0=disp[3-i];//发送数据delay(100); //间隔一段时间扫描 P0=0x00;//消隐}
}void main()
{while(1){datapros();DigDisplay();}
}
相关文章:
普中51单片机学习(AD转换)
AD转换 分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V1/(2^12 )2.4mV。 量化误差 …...
YoloV8改进策略:主干网络改进|MogaNet——高效的多阶门控聚合网络
文章目录 摘要1、简介2、相关工作2.1、视觉Transformers2.2、ViT时代的卷积网络3、从多阶博弈论交互的角度看表示瓶颈4、方法论4.1、MogaNet概述4.2、多阶门控聚合4.3、通过通道聚合进行多阶特征重新分配4.4、实现细节5、实验5.1、ImageNet分类5.2、密集预测任务5.3、消融实验和…...
Sora:OpenAI引领创新浪潮的AI视频模型
Sora:OpenAI引领创新浪潮的AI视频模型 OpenAI作为人工智能领域的佼佼者,接下来,让我们一起深入了解Sora的技术特点、应用场景以及它对未来创作方式的潜在影响。 首先,让我们来探讨Sora的技术特点。Sora是一种基于深度学习的视频生…...
torch报错:[winerror 126] 找不到指定的模块torch_python.dll“ or one of its dependencies.
[winerror 126] 找不到指定的模块。 error loading "d:\miniconda\envs\action_env\lib\site-packages\torch\lib\torch_python.dll" or one of its dependencies. 在使用这个yolov5模块的时候发现了这个错误,错误原因是因为python版本和torch版本冲突。…...
Linux日志轮替
文章目录 1. 基本介绍2. 日志轮替文件命名3. logrotate 配置文件4. 把自己的日志加入日志轮替5. 日志轮替机制原理6. 查看内存日志 1. 基本介绍 日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后ÿ…...
Docker Container(容器)
"在哪里走散,你都会找到我~" Docker 容器 什么是容器? 通俗来讲,容器是镜像运行的实体。我们对于镜像的认知是,“存储在磁盘上的只读文件”。当我们启动一个容器的本质,就是启动一个进程,即容器…...
week04day03(爬虫 beautifulsoup4、)
一. 使用bs4解析网页 下载bs4 - pip install beautifulsoup4 使用的时候 import bs4专门用于解析网页的第三方库 在使用bs4的时候往往会依赖另一个库lxml pip install lxml 网页代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><…...
04 动力云客之登录后获取用户信息+JWT存进Redis+Filter验证Token + token续期
1. 登录后获取用户信息 非常好实现. 只要新建一个controller, 并调用SS提供的Authentication对象即可 package com.sunsplanter.controller;RestController public class UserController {GetMapping(value "api/login/info")public R loginInfo(Authentication a…...
RISC-V知识总结 —— 指令集
资源1: RISC-V China – RISC-V International 资源2: RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture 资源3: RV32I, RV64I Instructions — riscv-isa-pages documentation 1. 指令集架构的类型 在讨论RISC-V或任何处理器架构时&…...
基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现
基于Java jspmysqlSpring的汽车出租平台租赁网站平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留…...
[AutoSar]BSW_Com 01 Can通信入门
目录 关键词平台说明一、车身CAN简介二、相关模块三、Can报文分类及信号流路径3.1 应用报文3.2 应用报文(多路复用multiplexer)3.3 诊断报文3.4 网络管理报文3.5 XCP报文(标定报文) 关键词 嵌入式、C语言、autosar、OS、BSW 平台…...
离散数学 第七单元 tree
目录 树的定义 树的特点 Spanning Tree 生成树(重要!) 生成树算法 DFS 深度优先 BFS 广度优先 Minimun Spanning Tree 最小生成树 Kruscal算法 Prim算法 根树 根数的遍历 前序遍历 中序遍历 后序遍历 表达式的二叉树 中缀…...
基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于MPPT最大功率跟踪算法的涡轮机控制系统simulink建模与仿真.mppt采用爬山法实现,仿真输出MPPT控制效果,功率,转速等。 2.系统仿真结果 …...
Hbase和Clickhouse对比简单总结
Hbase和Clickhouse是两种不同的数据库系统,它们各自适用于不同的场景。以下是两者之间的对比: 数据模型: HBase 是一种基于列的存储系统,它适合处理大规模的数据集,特别是那些需要快速随机访问的场景。ClickHouse 则是…...
Spring基础之AOP和代理模式
文章目录 理解AOPAOP的实现原理 AOP代理模式静态代理动态代理1-JDK动态代理2-CGLIB动态代理 总结 理解AOP OOP - - Object Oriented Programming 面向对象编程 AOP - - Aspect Oriented Programming 面向切面编程 AOP是Spring提供的关键特性之一。AOP即面向切面编程࿰…...
二层交换机和三层交换机区别
01、二层交换机 二层交换机,也被称为数据链路层交换机,是在OSI模型的数据链路层(第二层)进行数据交换的设备。它基于MAC(Media Access Control)地址来转发数据包,实现局域网内部的数据传输 1、…...
【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)
基于Springboot的在线考试系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统;本系统主要分为管理员、教师和学生三种角色; 管理员登录系统后,可以对首页&#x…...
【LeetCode】416. 分割等和子集(中等)——代码随想录算法训练营Day41
题目链接:416. 分割等和子集 题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释&#x…...
51单片机学习(4)-----独立按键进一步控制LED灯
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一:单个独立按键控制多个…...
Redis 学习笔记 3:黑马点评
Redis 学习笔记 3:黑马点评 准备工作 需要先导入项目相关资源: 数据库文件 hmdp.sql后端代码 hm-dianping.zip包括前端代码的 Nginx 启动后端代码和 Nginx。 短信登录 发送验证码 PostMapping("code") public Result sendCode(RequestP…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
