51单片机ADDA数模转换

发布者:千变万化最新更新时间:2022-01-19 来源: eefocus关键字:51单片机  数模转换 手机看文章 扫描二维码
随时随地手机看文章

概述

模拟量

模拟量是相对于数字量而言的。模拟量是对实际量的模拟,是连续变化的(比如用线圈的偏转来测电流或电压),测到的就是模拟量,指针可以指在两个数字中间的任何地方

从时间上来说,它是随时间连续变化的

从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通称为模拟量


数字量

计算机中处理的是不连续变化的量,离散性的数字量

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


当计算机用于数据采集和过程控制时,采集的对象往往是连续变化的物理量如微怒、压力等,但计算机处理的时离散的数字量,因此需要对连续变化的物理量进行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

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;  //写1

else

DIN = 0;  //写0

DCLK = 1;   //拉高时钟,让从机读DIN

DAT <<= 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单片机  数模转换 引用地址:51单片机ADDA数模转换

上一篇:利用定时器中断使用独立按键
下一篇:51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832

推荐阅读最新更新时间:2024-11-11 12:15

51单片机系列知识11--串行通信(2)
2、 工作方式 方式0:扩展移位寄存器方式,移位速率fosc/12 ① 以方式0工作时,数据由RXD串行的输入/输出,TXD输出位移脉冲,使外部的移位寄存器移位。 ② 移位速率,振荡频率的十二分之一。 ③ 串行口是从低位开始串行输出 输入是从地位开始还是高位开始? 例:教材*1P132 ④ 方式0时,SM2必须为0;REN=0禁止接收;方式0与TB8、RB8无关;TI=0;RI=0处于非中断状态 方式1: 8位UART(8位异步串行通信口) 波特率可变(TI溢出率/n) 输出: CPU向串行口发送数据缓冲器SBUF写一个数据,就启动串发送,在串行口内部一个十六分频计数器的同步控制下,在T
[单片机]
什么是堆栈?MCS-51单片机的堆栈怎样设置的?
程序设计时,往往需要一个后进先了的RAM区,以保存CPU的现场。这种后进先出的缓冲区,就称为堆栈。 MCS-51单片机的堆栈原则上设在内部RAM的任意区域内 。但是,一般设在31H~7FH的范围之间,栈顶的位置由栈指针SP指出。
[单片机]
51单片机演示<世上只有妈妈好>音乐
//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ //此程序的流水灯随音乐的节拍的快慢而动 #include reg51.h sbit speaker=P2^0; //接音频放大电路, //sbit speaker=P3^2; sbit sw=P3^0; //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停止,灯也同时停止闪动 unsigned char timer0h,timer0l,time,led=1,j=0; unsigned char flagd=0; //世上只有妈妈好数据表 code
[单片机]
<font color='red'>51单片机</font>演示<世上只有妈妈好>音乐
51单片机的串口收发C51程序
//晶振11.0592Mhz //2010年10月9日给网友改,在硬件上调试通过 #include reg52.h unsigned char a1; bit flag; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; SBUF=a1; while(!TI); TI=0; ES=1; } } } void ser() interrupt 4 { i
[单片机]
按键控制51单片机上面硬件的功能
按键一二三对应51单片机上不同的功能 例如跑马灯,蜂鸣器,呼吸灯,中断之类的 #define FSCLK 11059200 //晶振频率为 11.0592MHz #include STC12C5A60S2.h #include key_scan.h #include intrins.h #define LED_PORT P0 sbit BEEP=P1^4; unsigned int n = 0; unsigned int t = 0; unsigned char xx = 127; unsigned char p; unsigned char m; #define uchar unsig
[单片机]
STM32数模转换-DAC_DMA
DAC—数模转换器 DAC即是数模转换器,就是将数字量转换成模拟量,原理什么的大家应该都懂,直接跳入如何使用: STM32的DAC使用起来非常简单,首先将连接DAC通道的GPIO引脚配置为模拟状态,然后初始化DAC,一共只有四个参数需要初始化,其中最重要的是触发源:这个参数的作用是,每来一个触发源信号,DAC就刷新一次输出,也就是将需要转换的数字量转换为电压输出,这里选择定时器2作为触发源。 代码: void DAC_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitStructure;
[单片机]
51单片机——按键操作
在51单片机开发板上,对按键设置进行操作,其中包括按键的按下,显示对应位置,以及按键密码锁 1.按下按键显示对应位置 main.c #include REGX52.H #include Delay.h #include LCD1602.h #include MatrixKey.h unsigned char KeyNum; void main() { LCD_Init(); LCD_ShowString(1,1, helloworld ); while(1) { KeyNum=MatrixKey(); if(KeyNum) { LCD_ShowNum(2,1,KeyNum,
[单片机]
基于51单片机产生占空比和频率可调的方波信号发生器
前段时间开始接触到单片机,以为单片机会很简单,但比我预想的要复杂一些,特别是刚开始接触的时候,需要下载各种软件,然后自己慢慢地去熟悉这些软件的操作。我是从51单片机开始入手,毕竟51单片机是最基本的了。正好这学期学习了波形的产生,就做一个基本的函数信号发生器吧。 这次实现的函数发生器是基于51单片机的占空比、频率可调的方波发生器,适用于AT89C51/52、STV89C51/52等,现在把具体过程给大家说说。 第1步:安装一个单片机仿真图软件,推荐使用Protues,这是一款专门用来仿真单片机的,功能十分强大。我用的是Protues8.6,下载安装步骤大家就自行查询了,学习起来比较简单,半小时就能掌握了。下面是我
[单片机]
基于<font color='red'>51单片机</font>产生占空比和频率可调的方波信号发生器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved