51单片机ADDA数模转换

概述

模拟量

  • 模拟量是相对于数字量而言的。模拟量是对实际量的模拟,是连续变化的(比如用线圈的偏转来测电流或电压),测到的就是模拟量,指针可以指在两个数字中间的任何地方
  • 从时间上来说,它是随时间连续变化的
  • 从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通称为模拟量

数字量

计算机中处理的是不连续变化的量,离散性的数字量
- 在自然界中,有一类物理量的变化在时间上和数量上都是离散的。也就是说,它们的变化在时间上是不连续的,总是发生在一系列离散的瞬间。同时,它们数值大小和每次的增减变化都是某一个最小数量单位的整数倍。我们把这一类的物理量叫做数字量。

当计算机用于数据采集和过程控制时,采集的对象往往是连续变化的物理量如微怒、压力等,但计算机处理的时离散的数字量,因此需要对连续变化的物理量进行A/D转换为不连续的数字量交给计算机处理、保存等。计算机输出的数字量有时需要D/A转换为模拟量去控制某些执行元件。A/D转换器完成模拟量至数字量的转换,D/A转换器完成数字量对模拟量的转换。

A/D转换器的主要技术指标

  • 分辨率
    ADC的分辨率是指输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位。
  • 量化误差
    ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。

  • 偏移误差
    偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。

  • 满刻度误差
    满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。

  • 线性度
    它时指转换器实际的转换特性与理想直线的最大偏差。

  • 绝对精度
    在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。

  • 转换速率
    ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

逐次逼近式ADC的转换原理


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

PCF9581的介绍

PCF8591 是单电源,低功耗8位CMOS数据采集器件,具有4个模拟输入,一个输出和一个串行IIC总线接口。3个地址引脚A0、A1、A2用于编程硬件地址,允许将最多8个器件连接至IIC总线而不需要额外硬件。PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用。

特点

  • 单电源供电
  • 工作电压2.5V~6V
  • IIC总线串行输入/输出
  • 通过3个硬件引脚编址
  • 采样速率取决于IIC总线传输速率决定
  • 4个模拟输入可编程为单端或差分输入
  • 自动增量通道选择
  • 8位逐次比较型A/D转换

XPT4046 的介绍

XPT2046是一款4线制电阻式触控屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器

特点

  • XPT2046支持1.5V-5.225V的低电压I/O接口。
  • 工作温度范围-40°C-+85°C
  • 工作电压范围1.5V - 5.25V
  • 支持1.5V - 5.25V的数字I/O口
  • 采用三线制SPI通信接口

管脚定义

工作原理

XPT2046是一种典型的逐次逼近型数模转换器(SAR ADC),包含了采样/保持,数模转换\串口数据输出等功能.同时芯片集成有一个2.5V的内部参考电压源,温度检测电路,工作时使用外部时钟.XPT2046可以单电源供电,电源电压范围为2.7V - 5.5V.参考电压值直接决定ADC的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1V - VCC范围内的参考电压(要求外部参考电压源输出阻抗低).X,Y,ZBAT Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式.选择V BAT,Temp和AUX时应该配置为单端模式.

AD的差分输入与单端输入

单端输入,输入信号均已共同的地线为基准,这种输入方法主要应用于输入信号电压较高(高于1V),信号源到模拟输入硬件的导线较短,且所有的输入信号共用一个基准地线.如果信号达不到这些标准,此时应该用差分输入.对于差分输入,每一个输入信号都有自有的基准地线,由于共模噪声可以被导线所消除,从而减小了噪声误差.单端输入时,是判断信号与GND的电压差,差分输入时,是判断两个信号线的电压差.信号受干扰时,差分的两线会同时受到影响,但电压差变化不大(抗干扰性较佳)而单端输入的一线发生变化时,GND不变,所以电压差变化较大(抗干扰性较差).

代码

void SPI_Write(unsigned char DAT)//发送一字节数据
{unsigned char i; for(i=0; i<8; i++) //分别写8次,每次写1位{DCLK = 0;//拉低时钟总线,允许DIN变化if(DAT & 0x80)//先写数据最高位DIN = 1;  //写1elseDIN = 0;  //写0DCLK = 1;      //拉高时钟,让从机读DINDAT <<= 1;      //为发送下一位左移1位}
}
unsigned int SPI_Read()//返回读出的数据
{unsigned char i; unsigned int DAT;for(i=0; i<12; i++)//分别读12次,每次读一位{DAT <<= 1; //数据左移1位,准备接收一位DCLK = 1;   //拉高时钟总线,读取SDA上的数据DCLK = 0;   //拉低时钟总线,允许从机控制SDA变化if(DOUT)DAT |= 0X01;//为1则写1,否则不行执行写1,通过左移补0}return(DAT); //返回读出的数据
}
unsigned int ReadAD(uchar cmd)//读指定通道输入的模拟量转为数字量
{unsigned int DAT;CS = 0;SPI_Write(cmd);DCLK = 0;   //拉低时钟总线_nop_();_nop_();_nop_();_nop_();_nop_();DAT = SPI_Read();CS = 1;return(DAT);//返回读出数据}

51单片机ADDA数模转换相关推荐

  1. 51单片机DAC数模转换

    51单片机DAC数模转换 DAC介绍 1.DAC简介 DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号.它的功能与 ADC 相反. 2. ...

  2. 51单片机 | DAC数模转换实验

    文章目录 一.DAC介绍 2.DAC 工作原理 二.PWM介绍 三.硬件设计 四.软件设计 1.PWM实现函数 2. 主函数 五.实验现象   这一节来介绍下如何使用 51 单片机输出模拟信号,要让 ...

  3. 25、基于51单片机函数信号发生器四种波形和频率显示系统设计

    摘  要 本文所设计的系统是利用51单片机和数模转换器件DAC0832产生所需不同信号的低频信号源,即采用STC89C51 单片机作为控制核心,而在外围采用数字/模拟转换电路(DAC0832).运放电 ...

  4. 51单片机学习笔记-14 ADDA

    14 ADDA [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓 ...

  5. 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)

       本系列共6篇文章,本文作为本系列的第五篇文章,介绍实验五 :A/D 0809模数转换和DA0832数模转换实验,本系列文章基于Dais-52PRO实验箱. 本系列文章链接: ---------- ...

  6. AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...

  7. 嵌入式开发之路,从51单片机开始

    关注.星标公众号,直达精彩内容 来源:技术让梦想更伟大 作者:李肖遥 嵌入式开发入门之路 我相信很多朋友第一次接触的单片机应该就是51单片机,8位的mcu,丰富的教程,可以做很多小玩意,让初学者基本掌 ...

  8. 基于51单片机和物联网的智能家居系统(ESP8266物联网模块)

    前言 该智能家居系统以 STC89C52单片机为控制核心,结合 LCD1602 液晶显示屏.L298N电机驱动模块.光敏电阻,ESP8266WiFi模块,DS18B20温度计设计并实现了自动感光窗帘与 ...

  9. 单片机定时器一1ms12MHz_【51单片机】基于STC89C52RC的多路电压采集系统

    随着经济的飞速发展和科学技术水平的不断提高,智能数据采集系统在工业生产以及科学研究中得到了广泛的应用.在信息化时代,数据和信息无疑成为一种重要的资源,而数据采集系统的出现更是进一步促进了人机交互.对设 ...

  10. 基于51单片机的三角波信号发生器设计

    基于51单片机的三角波信号发生器设计 一.任务要求: 设计内容 选择51单片机,晶振采用12MHz. 设计一个能产生50HZ至100HZ的三角波信号.通过0832/A芯片完成数模转换. 频率值由LED ...

最新文章

  1. 邱键2008年最幸运的选手
  2. JQuery面试题1
  3. Hive自定义UDF和聚合函数UDAF
  4. JS 移动端触屏滑动
  5. java int数列转字符串,鍥剧墖杞瓧绗︿覆
  6. Java数据结构和算法(八)——递归
  7. 41.选项卡插件——tabs
  8. maven+SSM框架工程搭建
  9. Hive精华问答 | Hive和传统数据库有什么不同?
  10. DevOps交付模式下,软件测试的那些事
  11. DataSource数据源定义
  12. Linux命令格式及帮助命令详解
  13. Three.js使用PointerLockControls控制相机实现第一人称视角
  14. mysql和虚拟主机区别_香港空间购买,香港虚拟主机购买,香港免备案空间购买
  15. Linux编译并更新内核(替换Linux内核)
  16. popmenu 和popWindow
  17. HTML5设计注册/登录界面
  18. 金山词霸2003/2005/2006词典丢失的解决方法
  19. Windows MongoDB下载 安装以及配置(一条龙到底)
  20. WORD中的表格如何快捷键添加一行

热门文章

  1. printvertically Java_Print Words Vertically in JavaScript
  2. CCKS2019总结
  3. 在阿里云用python发送邮件
  4. 守望轮回谷等待服务器响应,《守望轮回谷》即将接班自走棋?Dota2新地图再次掀起热潮...
  5. 还在傻傻的数star、数fork吗?3秒钟教会你如何查看GitHub项目活跃度,是死是活一眼便知
  6. [数据可视化] 折线图(Line Chart)
  7. html meta标签的常用写法
  8. 写给Gallen1983
  9. 软考高级-系统架构设计师经验分享
  10. LTE中的CQI RI PMI参数