51单片机AD DA转换教程

合集下载

基于51单片机的AD和DA

基于51单片机的AD和DA

基于51单片机的AD和DA本讲内容:介绍AD/DA芯片PCF8591,通过例程讲解AD和DA过程。

AD和DA的概念:AD转换的功能是把模拟量电压转换为数字量电压。

DA转换的功能正好相反,就是讲数字量转换位模拟量。

分辨率的概念:一位数字量所表示的电压值。

对于5V的满量程,采用8位的DAC 时,分辨率为5V/256=19.5mV。

PCF8591简介:PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个模拟输出和一个串行IIC总线接口。

3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至IIC总线而不需要额外硬件。

PCF8591管脚图:PCF8591接口电路图:PCF8591的控制寄存器:例程:AD程序/**********************AD转换**********************单片机型号:STC89C52RC*开发环境:KEIL*功能:IIC协议 PCF8591 AD转换**************************************************/#include<reg52.h>#include <intrins.h>#define LCD_Data P0#define Busy 0x80#define uchar unsigned char#define delay0;_nop_();#define AddWr 0x90#define AddRd 0x91sbit RST=P2^4;sbit Sda=P2^0;sbit Scl=P2^1;sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E =P2^5;bit ADFlag;uchar code table0[]={" SL-51A "};uchar code table1[]={" AD CONVERT "};uchar code table2[]={"CH1: . V"};uchar code table3[]={"CH2: . V"};uchar code table4[]={"CH3: . V"};uchar code table5[]={"CH4: . V"};uchar TempData[8];void Delay5Ms(void);void delay(int In,int Out); void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);uchar ReadDataLCD(void);uchar ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData);void Init_Timer1(void);void Start(void);void Stop(void);void Ack(void);void NoAck(void);void Send(unsigned char Data);uchar Read(void);void DAC(unsigned char Data);uchar ReadADC(unsigned char Chl);void info_disp(void);/**********5ms延时函数***************************/void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}/********************延迟函数********************/void delay(int In,int Out) {int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}/*------------------------------------------------初始化定时器1------------------------------------------------*/void Init_Timer1(void){TMOD|=0x10;TH1=0xff;TL1=0x00;EA=1;ET1=1;TR1=1;}/*------------------------------------------------启动IIC总线------------------------------------------------*/void Start(void){Sda=1;delay0;Scl=1;delay0;Sda=0;delay0;Scl=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/void Stop(void){Sda=0;delay0;Scl=1;delay0;Sda=1;delay0;Scl=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/void Ack(void){Sda=0;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------非应答IIC总线------------------------------------------------*/void NoAck(void){Sda=1;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(unsigned char Data){uchar BitCounter=8;uchar temp;do{temp=Data;Scl=0;delay0;if((temp&0x80)==0x80){Sda=1;}else{Sda=0;}Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}/*------------------------------------------------读入一个字节并返回------------------------------------------------*/ uchar Read(void){uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;do{Scl=0;delay0;Scl=1;delay0;if(Sda){temp=temp|0x01;}else{temp=temp&0xfe;}if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}/*------------------------------------------------写入DA数模转换值------------------------------------------------*/ void DAC(unsigned char Data){Start();Send(AddWr);Ack();Send(0x40);Ack();Send(Data);Ack();Stop();}/*------------------------------------------------读取AD模数转换的值,有返回值------------------------------------------------*/ uchar ReadADC(unsigned char Chl){uchar Data;Start();Send(AddWr);Ack();Send(0x40|Chl);Ack();Start();Send(AddRd);Ack();Data=Read();Scl=0;NoAck();Stop();return Data;}/*******************写数据函数*******************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/*******************写指令函数*******************/ void WriteCommandLCD(unsigned char WCLCD,BuysC) {if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/*******************读数据函数*******************/unsigned char ReadDataLCD(void){LCD_RS=1;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;return(LCD_Data);}/*******************读状态函数*******************/unsigned char ReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while (LCD_Data&Busy);return(LCD_Data);}/********************LCD初始化*******************/void LCDInit(void){LCD_Data=0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}/********************清屏函数********************/void LCD_Clear(void){WriteCommandLCD(0x01,1);Delay5Ms();}/**************按指定位置显示一个字符*************/void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData) {Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X, 0);WriteDataLCD(DData);}/**************按指定位置显示一串字符*************/void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X, Y, DData[ListLength]);ListLength++;X++;}}}/********************系统初始化*******************/void sys_init(void){LCDInit();delay(5,100);Init_Timer1();DisplayListChar(0,0,table0);DisplayListChar(0,1,table1);}/*------------------------------------------------显示------------------------------------------------*/void info_disp(void){DisplayListChar(0,0,table2);DisplayOneChar(4,0,(0x30+TempData[0]));DisplayOneChar(6,0,(0x30+TempData[1]));DisplayListChar(8,0,table3);DisplayOneChar(12,0,(0x30+TempData[2]));DisplayOneChar(14,0,(0x30+TempData[3]));DisplayListChar(0,1,table4);DisplayOneChar(4,1,(0x30+TempData[4]));DisplayOneChar(6,1,(0x30+TempData[5]));DisplayListChar(8,1,table5);DisplayOneChar(12,1,(0x30+TempData[6]));DisplayOneChar(14,1,(0x30+TempData[7]));}/*------------------------------------------------主程序------------------------------------------------*/void main(){uchar num;uchar ADtemp;sys_init();delay(100,1000);LCD_Clear();while(1){DAC(num);num++;delay(5,100);if(ADFlag){ADFlag=0;ADtemp=ReadADC(0);TempData[0]=(ReadADC(0))/50;TempData[1]=((ReadADC(0))%50)/10; ADtemp=ReadADC(1);TempData[2]=(ReadADC(1))/50;TempData[3]=((ReadADC(1))%50)/10; ADtemp=ReadADC(2);TempData[4]=(ReadADC(2))/50;TempData[5]=((ReadADC(2))%50)/10; ADtemp=ReadADC(3);TempData[6]=(ReadADC(3))/50;TempData[7]=((ReadADC(4))%50)/10; info_disp();}}}/*------------------------------------------------定时器中断程序------------------------------------------------*/void Timer1_isr(void) interrupt 3 using 1{static unsigned int j;TH1=0xfb;TL1=0x00;j++;if(j==200){j=0;ADFlag=1;}}DA程序/******************DA转换LED输出*******************单片机型号:STC89C52RC*开发环境:KEIL*功能:此程序通过IIC协议对DAAD芯片操作, 并输出模拟量,用LED亮度渐变指示***************************************************/#include<reg52.h>#include <intrins.h>#define delay0; _nop_();#define uchar unsigned char#define AddWr 0x90#define AddRd 0x91sbit RST=P2^4;sbit Sda=P2^0;sbit Scl=P2^1;sbit Fm=P2^3;sbit LE1=P2^6;sbit LE2=P2^7;bit ADFlag;uchar code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; data uchar Display[8];/*------------------------------------------------延时程序------------------------------------------------*/void mDelay(uchar j){unsigned int i;for(;j>0;j--){for(i=0;i<125;i++){;}}}/*------------------------------------------------初始化定时器1------------------------------------------------*/void Init_Timer1(void){TMOD|=0x10;TH1=0xff;TL1=0x00;EA=1;ET1=1;TR1=1;}/*------------------------------------------------启动IIC总线------------------------------------------------*/void Start(void){Sda=1;delay0;Scl=1;delay0;Sda=0;delay0;Scl=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/ void Stop(void){Sda=0;delay0;Scl=1;delay0;Sda=1;delay0;Scl=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/ void Ack(void){Sda=0;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------非应答IIC总线------------------------------------------------*/ void NoAck(void){Sda=1;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(uchar Data){uchar BitCounter=8;uchar buffer;do{buffer=Data;Scl=0;delay0;if((buffer&0x80)==0x80)Sda=1;else Sda=0;Scl=1;buffer=Data<<1;Data=buffer;BitCounter--;}while(BitCounter);Scl=0;}/*------------------------------------------------读入一个字节并返回------------------------------------------------*/ uchar Read(void){uchar buffer=0;uchar buffer1=0;uchar BitCounter=8;Sda=1;do{Scl=0;delay0;Scl=1;delay0;if(Sda)buffer=buffer|0x01;else buffer=buffer&0xfe;if(BitCounter-1){buffer1=buffer<<1;buffer=buffer1;}BitCounter--;}while(BitCounter);return(buffer);}/*------------------------------------------------写入DA数模转换值------------------------------------------------*/ void DAC(uchar Data){Start();Send(AddWr);Ack();Send(0x40);Ack();Send(Data);Ack();Stop();}/*------------------------------------------------读取AD模数转换的值,有返回值------------------------------------------------*/ uchar ReadADC(uchar Chl){uchar Data;Start();Send(AddWr);Ack();Send(0x40|Chl);Ack();Start();Send(AddRd);Ack();Data=Read();Scl=0;NoAck();Stop();return Data;}void fmg(void){Fm=1;}void cmg(void){LE1=1;P0=0x00;LE1=0;LE2=1;P0=0x00;LE2=0;RST=0;}/*------------------------------------------------主程序------------------------------------------------*/ void main(){uchar num;uchar ADbuffer;Init_Timer1();cmg();fmg();while(1){DAC(num);num++;mDelay(20);if(ADFlag){ADFlag=0;ADbuffer=ReadADC(0);Display[0]=Datatab[(ReadADC(0))/50]|0x80;Display[1]=Datatab[((ReadADC(0))%50)/10];ADbuffer=ReadADC(1);Display[2]=Datatab[((ReadADC(1))/50)]|0x80;Display[3]=Datatab[((ReadADC(1))%50)/10];ADbuffer=ReadADC(2);Display[4]=Datatab[((ReadADC(2))/50)]|0x80;Display[5]=Datatab[((ReadADC(2))%50)/10];ADbuffer=ReadADC(3);Display[6]=Datatab[((ReadADC(3))/50)]|0x80; Display[7]=Datatab[((ReadADC(3))%50)/10]; }}}。

51单片机(AD及DA转换器)

51单片机(AD及DA转换器)

时,LE1 …=0
则数据被锁存
当 WR2 和 XFER 均为低电平时,LE2=1,此时允许D/A转换,否则 LE2
=0,将数据锁存于DAC寄存器中
精选2021版课件
9
DAC 0832 常 见 的 几 种 用 法
(a): DAC寄存器直通方式 (b): 输入寄存器直通方式
(c): 两个寄存器同时选精通选20及21版锁课件存方式
非与门
&
输入全为“0”,输出才为
“1”
输入任一为“1”
输出皆为“0”
直通方式: 输入寄存器和DAC寄存器共用一个地址,同时选通输出。
双缓冲器方式:
输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输
出多路模拟信号。
精选2021版课件
11
【例9-6】在图9-30的输出端Vout产生-1.25V的电压输出。 解 Vout=-(D/256)×Vref,而Vref=5V,且XFER、CS和WR信号
常有效,因此使D=64即可输出要求的电压。
汇编程序 MOV P1, #64
C语言程序
#include <reg51.h> P1 = 64;
【例9-7】在图9-31的输出端Vout产生-2.5V的电压输出,设Vref为5V。 解 Vout=-(D/256)×Vref,使D=128可输出要求的电压,且需要进行一次对
三角波
NOP
SS2: INC A
;等速上升
JNZ SS1 SS3: DEC A
MOVX @DPTR,A
同样的编程思路,若要产生 如下的梯形波也很容易:
NOP
NOP
NOP
;等速下降
JNZ SS3

MCS-51单片机与DA转换器的接口和应用

MCS-51单片机与DA转换器的接口和应用

A/D和D/A转换接口技术难点•DAC0832工作方式•ADC0809工作方式要求掌握:•MCS-51单片机与D/A转换器的接口连接•MCS-51单片机与A/D转换器的接口连接•初始化编程及应用了解:•典型D/A转换器芯片DAC0832的管脚功能•典型A/D转换器芯片ADC0809的管脚功能3.1 MCS-51单片机与D/A转换器的接口和应用3.1.1典型D/A转换器芯片DAC0832DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V~+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。

其内部结构如图9.1所示,它由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成和引脚排列如图1所示。

图1 DAC0832引脚功能该D/A转换器为20引脚双列直插式封装,各引脚含义如下:(1)D7~D0——转换数据输入。

(2)——片选信号(输入),低电平有效。

(3)ILE——数据锁存允许信号(输入),高电平有效。

(4)——第一信号(输入),低电平有效。

该信号与ILE 信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1和=0时,为输入寄存器直通方式;当ILE=1和=1时,为输入寄存器锁存方式。

(5)——第2写信号(输入),低电平有效.该信号与信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:当=0和=0时,为DAC寄存器直通方式; 当=1和=0时,为DAC寄存器锁存方式。

(6)——数据传送控制信号(输入),低电平有效 。

(7)Iout2——电流输出“1”。

当数据为全“1”时,输出电流最大;为全“0”时输出电流最小。

(8)Iout2——电流输出“2”。

DAC转换器的特性之一是:Iout1 +Iout2=常数。

(9)R fb——反馈电阻端既运算放大器的反馈电阻端,电阻(15KΩ)已固化在芯片中。

因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,R fb 即为运算放大器的反馈电阻,运算放大器的接法如图2所示。

51单片机AD和DA转换汇编程序

51单片机AD和DA转换汇编程序

四、实验说明1、D/A 转换是把‎数字量转换‎成模拟量的‎变换,实验台上D ‎/A 电路输出‎的是模拟电‎压信号。

要实现实验‎要求,比较简单的‎方法是产生‎三个波形的‎表格,然后通过查‎表来实现波‎形显示。

2、产生锯齿波‎和三角波的‎表格只需由‎数字量的增‎减来控制,同时要注意‎三角波要分‎段来产生。

要产生正弦‎波,较简单的方‎法是造一张‎正弦数字量‎表。

即查函数表‎得到的值转‎换成十六进‎制数填表。

D/A 转换取值‎范围为一个‎周期,采样点越多‎,精度越高些‎。

本例采用的‎采样点为2‎56点/周期。

3、8位D/A 转换器的‎输入数据与‎输出电压的‎关系为U(0∽-5V)=Uref/256×N U(-5V ∽+5V)=2·Uref/256×N-5V (这里 Uref 为‎+5V)五、实验框图六、参考程序xdata ‎ unsig ‎n ed char CS 083‎2 _at_ 0xa00‎0;void Write ‎0832(unsig ‎n ed char b){CS083‎2 = b;}void main(){Write ‎0832(0);Write ‎0832(0x80);Write ‎0832(0xff);开始否 是置计数器初‎值 查表读波形‎数据 启动D/A 改变计数器‎及表指针 转换完毕while‎(1);}/*========================================================== =*/CS083‎2 equ 0a000‎hmov dptr, #CS083‎2mov a, #00hmovx @dptr, amov a, #40hmovx @dptr, amov a, #80hmovx @dptr, amov a, #0c0hmovx @dptr, amov a, #0ffhmovx @dptr, aljmp $end硬件实验十‎三 A/D 模数转换‎实验一、实验要求利用实验板‎上的ADC ‎0809做‎A /D 转换器,实验板上的‎电位器提供‎模拟量输入‎,编制程序,将模拟量转‎换成二进制‎数字量,用8255‎的PA 口输‎出到发光二‎极管显示。

51单片机ad、da转换器[精制材料]

51单片机ad、da转换器[精制材料]

(1)分辨率(Res程ol)ut时io所n)需要的时间。
(2)偏移误差(O建ffs立e时tE间rro是r)D/A转换速率快慢的一个重 (3)精度(Accur要速ac参 率y)数越。低很。显不然同,型建号D立A时C间的越建大立,时转间换一
(4)转换速度(co般n从ve几rt个in纳g 秒sp到ee几d个) 微秒不等。若输出
(3)精度(Accuracy)
(4)转换速率/建立时间(converting speed)
(5)温度灵敏度(TemperatureSensitivity)
实操应用
3
二、DAC及其接口
(一)DAC介绍:数模转换,将一个二进制数字信号转换成与 此值成正比的模拟信号。
1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。
第三节 A/D、D/A转换器
一、模拟接口概述
在实际系统中,单片机经常要对来自控制现场的各种模拟信 号进行采集和处理,如电压、电流等随时间连续变化的电量, 或者是温度、压力、流量等随时间连续变化的非电量。单片机 要接收这些模拟量,就要通过ADC来实现;如果单片机控制的 对象需要模拟量,则要用到DAC。
(5)温度灵敏度(形Te式m是p电er流at,urDeSAeCn的si建tiv立it时y)间是很短的; 若输出形式是电压,DAC的建立时间主
要是输出运算放大器所需要的响应时间。
实操应用
6
二、DAC及其接口
(一)DAC介绍:数模转换,将一个二进制数字信号转换成与 此值成正比的模拟信号。
1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。
差一般可在D/A转换器外部用电位器
调节到实最操应小用 。
4
二、DAC及其接口

《MCS51与DA转换器》PPT课件

《MCS51与DA转换器》PPT课件
同理:10位 D/A:1 LSB=9.77mV=0.1% 满量程 12位 D/A:1 LSB=2.44mV=0.024% 满量程
根据对DAC分辨率的需要,来选定DAC的位数。
(2)建立时间(Establishing Time)
描述DAC转换快慢的参数,表明转换速度。 定义:为从输入数字量到输出达到终值误差(1/2)LSB (最低有效位)时所需的时间。电流输出时间较短,电压输出的,加上I-V转换的时间,因此建立时间要长一些。快速DAC可达1s以下。
主要特性:
(1)输出电流稳定时间:1s;
(2)基准电压:VREF= -10~ +10V;
第11章 MCS-51与D/A转换器、 A/D转换器的接口
一、作业
二、MCS-51与DAC的接口
D/A转换器的原理及主要技术指标
MCS-51与8位DAC0832的接口
MCS-51与12位DAC1208的接口
非电物理量(温度、压力、流量、速度等),须经传感器转换成模拟电信号(电压或电流),必须转换成数字量,才能在单片机中处理。
DAC0832是使用非常普遍的8位D/A转换器,由于其片内有输入数据寄存器,故可以直接与单片机接口。DAC0832以电流形式输出,当需要转换为电压输出时,可外接运算放大器。属于该系列的芯片还有DAC0830、DAC0831,它们可以相互代换。DAC0832主要特性:
分辨率8位; 电流建立时间1μS; 数据输入可采用双缓冲、单缓冲或直通方式; 输出电流线性度可在满量程下调节; 逻辑电平输入与TTL电平兼容; 单一电源供电(+5V~+15V); 低功耗,20mW。
读P286
例11-2 内部RAM中两个长度为20的数据块,起始地址为分别为addr1和addr2,编写能把addr1和addrr2中 数据从1#和2#DAC0832同步输出的程序。addr1和addr2中的数据,为绘制曲线的X、Y坐标点。

第36章 A D转换实例 51单片机开发与应用技术详解(珍藏版)PPT

第36章  A D转换实例 51单片机开发与应用技术详解(珍藏版)PPT
第36章 A/D转换实例
• 在测控系统中,经常需要对温度、速度、压力、 电流、电压等模拟量进行采集或者处理。由于单 片机CPU只能对数字信号进行处理,因此,需要首 先将这些模拟量信号转换成数字量信号,然后采 集数据并进行分析。这便需要用到模/数转换器件, 也称为A/D(Analogue/Digital)转换器。目前, 市场上有很多种A/D转换器,其以体积小、功能强、 误差小、功耗低、可靠性高等优点而得到广泛应 用。
• A/D转换精度。对于复杂系统,一般计算系统中各环节的方和根误差。信 号源阻抗、信号带宽、A/D转换器分辨率和系统的通过率都会影响误差的 计算。正常情况下,A/D转换前向通道的总误差应小于等于A/D转换器的量 化误差,否则选取高分辨率A/D转换器也没有实际意义。
• 孔径误差。A/D转换是一个动态的过程,需要一定的转换时间。而输入的 模拟量总是在连续不断变化的,这样便造成转换输出的不确定性误差,即 孔径误差。为了确保较小的孔径误差,则要求A/D转换器具有与之相适应 的转换速度。否则,就应该在A/D转换器前加入采样/保持电路以满足系统 要求。
• 单+5V供电; • 12位A/D转换分辨率,1/2LSB线性度; • 12位并行输出,引脚兼容TTL/CMOS电平; • 8路模拟输入通道; • 4种软件可编程输入量程:0~+5V、0~+10V、-5V~+5V、-
10V~+10V; • 6µs典型转换时间,高达100kSPS的采样速率; • 内部集成4.096V参考电压,也可以采用外部参考电压; • 可选择内部工作时钟或者外部工作时钟, • 可选择使用内部采集控制或者外部采集控制。
• 本章主要介绍了A/D转换的原理,A/D转换器的技 术参数,并介绍了一个典型的8通道电压型A/D转 换器。最后,本章通过一个具体的实例,介绍了 如何使用51系列单片机来控制A/D转换器的读写。

51单片机AD DA转换教程

51单片机AD DA转换教程
输出模拟电压的变化率表示 。 D/A转换器完成一次转换所需要的
时间应包括建立时间和上升(或下降)时 间两部分 ,它的最大值为
TTR(max) = tS + VO(max) / SR
其中 VO(max) 为输出电压的最大值 。
10. 2. 5 集成 DAC 0832及其应用
D/A转换器集成电路有多种型号。 下面仅以DAC0832为例来介绍集成电 路 D/A 变换器。
把量化的结果用代码 (二进制或二 - 十 进制 )表示出来,称为 “ 编码 ” 。
3. 采样 - 保持电路
RF
R1
ui
T
CF
+
uo
UL
当 UL为高电平时, MOS管T导通, ui 经电阻 R1和管T向电容 CF充电 。 当 UL为低电平时, MOS管T截止, 忽略各种漏电流,电容CF上的电压得以保持 。
Iout1
11
Iout2
DAC 0832 管脚分布图
D...... 7
八位 输入
寄存器
D0
(1)
ILE
&
CS 1
WR1
XFER
1
WR2
八位 DAC 寄存器
(2)
VCC
UR 八位 Rf B
A/D Iout1 变换器 Iout2

u +

o
AGND
DGND
运放需 要外接
ADC 0832 简化电路框图
D...... 7
I2 = 4I0
I3 = 8I0
I = I0 + I1 + I2 + I3
I
R/2
-
23R 22R 21R 20R

简述51单片机adc转换流程

简述51单片机adc转换流程

简述51单片机adc转换流程英文版Brief Introduction to the ADC Conversion Process of the 51 MicrocontrollerThe 51 microcontroller is a popular choice for embedded systems due to its simplicity, reliability, and widespread availability. Among its many features, the microcontroller often includes an Analog-to-Digital Converter (ADC) that converts analog signals into digital formats, enabling precise control and data acquisition. In this article, we will briefly describe the ADC conversion process of the 51 microcontroller.1. Overview of ADC:An ADC converts analog signals, which continuously vary in amplitude, into digital signals represented by discrete values. The 51 microcontroller's ADC typically has a specific number of bits, determining the resolution of the conversion. For example,an 8-bit ADC can represent 256 discrete levels, while a 10-bit ADC can represent 1024 levels.2. The ADC Conversion Process:Initialization: Before performing an ADC conversion, the microcontroller needs to be initialized. This involves setting up the ADC module, configuring the input channels, selecting the desired resolution, and enabling the ADC.Start Conversion: Once initialized, the microcontroller can start the ADC conversion process. This usually involves setting a specific control bit to initiate the conversion.Sampling: During the sampling phase, the ADC captures the analog signal at the selected input channel. The duration of this phase depends on the ADC's sampling rate and the characteristics of the analog signal.Quantization: The captured analog signal is then quantized, which means it is rounded off to the nearest discrete level based on the ADC's resolution. For example, if the ADC is 8-bit,the analog signal will be rounded off to one of the 256 possible levels.Digital Output: After quantization, the ADC outputs the digital representation of the analog signal. This digital value can be read by the microcontroller for further processing or transmitted to other systems.3. Conclusion:The ADC conversion process in the 51 microcontroller involves initialization, starting the conversion, sampling the analog signal, quantizing it, and finally outputting the digital value. This process enables the microcontroller to process and respond to analog signals accurately, making it suitable for a wide range of applications in embedded systems.中文版简述51单片机ADC转换流程51单片机因其简洁性、可靠性和广泛的应用性,在嵌入式系统中备受欢迎。

51单片机ad、da转换器

51单片机ad、da转换器

DAC电流输出1,当
① VCC电源可以在5-15V内变化。典型使用
DAC寄存器中为全1
时用15V电源。
时,输出电流最大,
② AGND为模拟量地线,DGND为数字量地 线,使用时,这两个接地端应始终连在一起。 ③ 参考电压VREF接外部的标准电源,VREF 一般可在+10V到—10V范围内选用。
当DAC寄存器中为全 0时,输出电流为0。 lout2为DAC电流输 出2,Iout2为一常数 与Ioutl之差,即
DI0 DI1
8位
DI2 输入
DI3 DI4

DI5 DI6

DI7

8位
DAC 寄 存 器
8位
VREF
D/A Io utI2OUT2 +
转 Io utI1OUT1 -
换 器 RfRbfb
loutl+out2.=常数
电 平 输出
在实际使用时,总是
ILE
LE1
LE2
CS &
WR1+
DGND 将电流转为电压来使 用,即将Ioutl和 lout2加到一个运算
XFER
WR2 +
放大器的输入。
DAC0832的引脚
DAC0832是CMOS工艺,双列直插式20引脚。 ① VCC电源可以在5-15V内变化。典型使用 时用15V电源。 ② AGND为模拟量地线,DGND为数字量地 线,使用时,这两个接地端应始终连在一起。 ③ 参考电压VREF接外部的标准电源,VREF 一般可在+10V到—10V范围内选用。
A转换器的温度灵敏度约为满量程模拟 值变化的±50X10-6/oC。
3.与单片机接口形式
D/A转换器与单片机接口有2种,主要决定于转换器本身 是否带数据锁存器。有两类D/A转换器:一是不带锁存器的, 另一是带锁存器的。

中断以及da、ad实验讲解

中断以及da、ad实验讲解

SBUF=0x5e; //发送的是什么??? while(!TI); TI=0; SBUF=0x77; while(!TI); TI=0; delayms(1500);
}
实验八、串口发送显示原理
74LS164为8位串入并出移位寄 存器,其引脚如图所示; 1、2为 串行输入端,Q0~Q7 为并行输出端,CLK为移位时钟脉 冲,上升沿移入一位;MR为清零 端,低电平时并行输出为零。
DA转换时序
直通方式
注意ile,cs,wr1,wr2和xfer信号满足高低低低 低的要求即可 实验九选作:利用da生成一个类似鱼的图形
DA转换时序
void main() { uchar val,y; P2=0; while(1) { if(val%2==0) //这里如何要分 { y=80*sin(1.48*val/100)+140; //为什么要选这些参数?? P2=y; if(val<127)val+=5; //为何这里要有两个增量 if(val>127) val+=3; if(val>=255) val=0; delayms(3); }
DA转换时序(续)
else { y=80*sin(1.48*val/100+3.14)+140; P2=y; if(val<127)val+=5; if(val>127) val+=3; if(val>=255) val=0; delayms(5); } } }
建议与要求
大家课后一定要多发时间 用点心思来做课题 没有办不成的事情,只要我们用心去做
void main(){ EA=1; //全局中断允许打开 EX0=1; //打开外部中断0 EX1=1; //打开外部中断1 PX1=1; //设外部中断1为高优先中断 PX0=0; //设外部中断0为低优先中断 IT0=0; //设外部中断0为电平触发 IT1=0;// 设外部中断1为电平触发 ……} void I0()interrupt 0//外部中断0中断程序 { if(P3^2==0)//键盘去抖 {delay(10); if(P3^2==0) {// 具体的功能} } }

ad模数转换51单片机程序流程

ad模数转换51单片机程序流程

ad模数转换51单片机程序流程下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!引言AD模数转换是数字系统设计与嵌入式系统开发中常常遇到的问题,其原理和应用十分重要。

《80C51单片机实用教程》PPT 第9章 A-D转换和D-A转换

《80C51单片机实用教程》PPT 第9章  A-D转换和D-A转换
无论A-D或D-A,其转换关系为:
UA = D×UREF / 2N (其中:D=D0×20+D1×21+… +DN-1×2N-1)
D为N位二进制数字量,UA为电压模拟量,UREF为参考电压。
⒈ A-D转换器的主要性能指标:
① 分辨率。分辨率 = UREF / 2N ② 量化误差。③ 转换时间。
⒉ A-D转换器分类
【例9-1】 按图9-3所示电路,fOSC=6MHz,对8路输入信号A-D转换,并依次输出,循环显示。 第1位显示A-D通道号,加小数点以示分隔区别;后3位为A-D转换值,单位(V),试编制程序。
本例Keil C51调试和Proteus仿真见实验29
9.2 D-A转换接口电路
将数字量转换成模拟量的过程称为D-A转换。
⑵ 线性度
⑶ 转换精度
⑷ 建立时间
⑸ 温度系数
图9-8 D-A转换器输出的模拟量曲线示意图
9.2.2 DAC 0832及其接口电路
DAC 0832是8位D-A芯片,是目前国内应用较广的8位D-A芯片。
图9-9 DAC 0832引脚图
图9-10 DAC 0832逻辑框图
⑴ 8位数据输入端: DI0~DI7
—基于Keil C和Proteus
双解汇编和C51两种程序 每条指令/语句均给出注释 编入36例Proteus仿真实验 免费下载配套仿真实验文件 习题和复习思考题都有解答 最大特点是便于理解和自学
高等教育出版社同名教材配套电子教案
张志良主编 Email:
第9章 A-D转换和D-A转换
《80C51单片机实用教程——基于Keil C和Proteus》
配套Proteus虚拟仿真36例目录(免费下载)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
它是八位的 D/A 转换器,即在 对其输入八位数字量后,通过外接 的运算放大器,可以获得相应的模 拟电压值。
I2 = 4I0
I3 = 8I0
I = I0 + I1 + I2 + I3
I
R/2
-
23R 22R 21R 20R
+
uo
I0
I1
I2
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
I
=
I0
+
I1
+
I2
+
I3
=
VREF 23R
(
D3
23
+
D2
22
+
D1
21
+
D0
20
)
I
R/2
-
23R 22R 21R 20R
与有关数字量
的权重密切相
关。
uo =
IR 24
( 8 D3
+ 4 D2
+ 2 D1
+
D0
)
10. 2. 3 T形解码网络D / A转换器( 以4位为例 )
DR C R BR A
UR
R3
R2
R1
R0
2R 2R 2R 2R 2R
RF
S3
S2
S1
S0
0 I3 0 I2 1 I1 1 I0
I
D3
D2
D1 D0
例如,对一个十位D/A转换器来说 ,
1 210 - 1

1 1023
= 0. 001
7. 2. 4 D/A转换器的主要技术指标
二、转换误差
转换误差通常用输出电压满刻刻度FSR ( Full Scale Range ) 的百分数表示 。 例如 , 给出转换误差为 1 LSB ,这就表示输出模拟 电压的绝对误差等2于输入数字代码为 00…01 时 输出电压的一半 。
R/2
-
+
uo
电子开关 : Dn = 1 时, Sn 接VREF ;
Dn = 0 时, Sn 接地端 。
S
0
T1 T2
1 当 D = 1 时, T2 管饱
a
和导通, T1 管截止 ,
D
模拟电子开关的
S 点与 a 点相通 ,而 a 点在电路中和VREF连 。
简化原理电路
S
1
T1 T2
0
a
D
模拟电子开关的 简化原理电路
当 D = 0 时, T2 管截 止,T1 管饱和导通, S 点与地相通 。
当 D3D2D1D0 = 1111时 : I
23R 22R 21R 20R
S0 I0 S1
I1 S2
I2 S3
I3
VREF
参考
电压 D0
D1
(LSB)
最低位
D2
D3
(MSB)
最高位
R/2
-
+
uo
I0 =
VREF 23 R
I1 = 2I0
-
A+
uo
+
通过详细的推导分析,
即可获得模拟输出电压 uo 与数
字量以及电路中其它参数的关系。
DR C R BR A
UR
R3
R2
R1
R0
2R 2R 2R 2R 2R
RF
S3
S2
S1
S0
0 I3 0 I2 1 I1 1 I0
I
D3
D2
D1 D0
-
A+
uo
+
I = I3 + I2 + I1 + I0
=
10. 2. 1 权电阻网络型 10. 2. 2 权电流型 10. 2. 3 T型电阻网络型 10. 2. 4 D/A变换器的主要技术指标 10. 2. 5 集成 DAC 0832及其应用
10. 2. 1 权电阻网络型 D / A 转换器 :
I
23R 22R 21R 20R S0 I0 S1 I1 S2 I2 S3 I3
+
uo
I0
I1
I2
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
uo =
- IR / 2
=
-
VREF 24
(
8 D3
+ 4 D2
+ 2 D1
+
D0 )
10. 2. 2 权电流网络型 D / A 转换器 :
D0
D1
D2
D3
iI
R
-
+
uo
S0
VREF
S1
S2
S3
每个支路
I/16 I / 8 I / 4 I / 2 电流的大小,
输出模拟电压的变化率表示 。 D/A转换器完成一次转换所需要的
时间应包括建立时间和上升(或下降)时 间两部分 ,它的最大值为
TTR(max) = tS + VO(max) / SR
其中 VO(max) 为输出电压的最大值 。
10. 2. 5 集成 DAC 0832及其应用
D/A转换器集成电路有多种型号。 下面仅以DAC0832为例来介绍集成电 路 D/A 变换器。
UR 2R
D3
+
UR 4R
D2
+
UR 8R
D1
+
UR 16R
D0
=
UR 16R
(
8D3
+
4D2 +
2D1 + 1D0 )
uo = - UR RF ( 8D3 + 4D2 + 2D1 + 1D0 )
16R
D0 D1
D2
D3 iI
RF
-
A+
uo
+
S0
S1
S2
S3
I 16
I 16
I/8 I/4 பைடு நூலகம்/2
2R 2R 2R 2R 2R
第十章 数 / 模 、 模 / 数 变换器
§10. 1 概述 §10. 2 数 / 模转换器 §10. 3 模 / 数转换器
§10.1 概述
模 拟 信 A/D 号
计 算 机
模 拟 D/A 信 号
A / D : Analog to Digital D / A : Digital to Analog
§10. 2 数 / 模 转换器 ( DAC )
倒T型电阻网络 D / A转换器
R
RR
UR I
10. 2. 4 D/A转换器的主要技术指标 一、分辨率
用输入数字量的有效位数来表示分辨率。
此外,也可以用D/A转换器能够分辨出来 的最小输出电压 (此时输入的数字代码只有最 低有效位为 1,其余各位都是 0 ) 与最大输出 电压 (此时输入的数字代码所有各位全是 1 ) 之比来给出分辨率 。
VREF
D0
D1
(LSB)
D2
D3
(MSB)
R/2
-
+
uo
所谓“权电阻”,
是指电阻值 的大小, 与有 关数字量的权 重密切相关。
10. 2. 1 权电阻网络型 D / A 转换器 :
I
23R 22R 21R 20R
S0 I0 S1
I1 S2
I2 S3
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
1. 建立时间 tS 通常以大信号工作情况下 ( 输入由
全 0 变为全 1 或者由全 1 变为 全 0 ) 输出电压到达某一规定值所需要的时 间定为建立时间 tS 。
这个参数的值越小越好 。
建立时间最短的可达 0. 1s 。
10. 2. 4 D/A转换器的主要技术指标 三、D/A转换器的转换速度
2. 转换速率 SR 转换速率 SR 以大信号工作状态下
造成转换误差的原因主要有 : 参考电压 VREF的波动 ; 运算放大器的零点漂移 ; 模拟开关的导通内阻和导通电压 ;
电阻网络中的电阻值偏差 ;…...
10. 2. 4 D/A转换器的主要技术指标
三、D/A转换器的转换速度
为了便于定量地描述D/A转换器的转换 速度 ,定义了建立时间 tS 和转换速率 SR两 个参数 。
相关文档
最新文档