51单片机控制AD转换器

合集下载

51单片机AD转换代码及仿真的新标题

51单片机AD转换代码及仿真的新标题

51单片机AD转换代码及仿真的新标题新标题:深入解析51单片机的AD转换代码及仿真观点和理解:51单片机是一种应用广泛的嵌入式微控制器,具有强大的功能和灵活性。

其中,AD转换是其重要的功能之一,被广泛应用于模拟信号的数字化处理。

本文将深入探讨51单片机的AD转换代码及仿真,从简单到复杂、由浅入深地介绍相关的概念、原理和编程代码,旨在帮助读者更全面、深入地理解这一重要的主题。

文章结构:I. 引言A. 介绍51单片机的AD转换功能的重要性B. 概述本文的结构和目标II. 51单片机的AD转换基础A. 什么是模拟信号和数字信号?B. AD转换器的基本原理和功能C. 51单片机中常用的AD转换器类型和特点III. 了解AD转换的代码实现A. AD转换的基本操作步骤B. 通过中断实现AD转换C. 通过轮询实现AD转换D. 不同方式的AD转换代码的优劣比较IV. AD转换的常用功能扩展A. 多通道的AD转换B. 不同精度的AD转换C. 参考电压的选择和设置D. AD转换相关的溢出处理和校准V. 51单片机AD转换的仿真与调试A. 常见的仿真工具和方法介绍B. 使用仿真工具进行AD转换代码的调试C. 常见问题的排查和解决方法VI. 总结与展望A. 回顾本文所涵盖的内容和观点B. 对51单片机AD转换的未来发展进行展望在本文中,我们将从理论到实践,从基础到进阶,系统地介绍51单片机的AD转换功能。

通过深入理解其原理、学习相关的编程代码,并通过仿真工具进行实际调试,读者将能够掌握51单片机AD转换的各个方面。

这将使读者能够更好地应用这一功能来解决实际问题,并为将来的项目开发打下坚实的基础。

字数:3096字。

51单片机的AD转换程序

51单片机的AD转换程序

#include "reg51.h"#include "intrins.h"#define FOSC 18432000L#define BAUD 9600typedef unsigned char BYTE; //定义了一个unsigned char的同义词BYTE typedef unsigned int WORD; //定义了一个unsigned int 的同义词WORD /*Declare SFR associated with the ADC */sfr ADC_CONTR = 0xBC; //AD转化控制寄存器,地址是0xBCsfr ADC_RES = 0xBD; //8位AD转换结果寄存器sfr ADC_LOW2 = 0xBE; //AD转化低2位结果寄存器sfr P1ASF = 0x9D; //P1口中的相应位作为模拟功能使用时的控制寄存器/*Define ADC operation const for ADC_CONTR*/#define ADC_POWER 0x80 //ADC电源控制位#define ADC_FLAG 0x10 //ADC 完成标志#define ADC_START 0x08 //ADC 启动控制位//AD转换速度选择#define ADC_SPEEDLL 0x00 //540 clocks#define ADC_SPEEDL 0x20 //360 clocks#define ADC_SPEEDH 0x40 //180 clocks#define ADC_SPEEDHH 0x60 //90 clocksvoid InitUart();void SendData(BYTE dat);void Delay(WORD n);void InitADC();BYTE ch = 0; //ADC channel NO.void main(){InitUart(); //Init UART, use to show ADC resultInitADC(); //Init ADC sfrIE = 0xa0; //Enable ADC interrupt and Open master interrupt switch//Start A/D conversionwhile (1);}/*----------------------------ADC 中断处理----------------------------*/void adc_isr() interrupt 5 using 1{ADC_CONTR &= !ADC_FLAG; //清除ADC中断标志位SendData(ch); //Show Channel NO.SendData(ADC_RES); //Get ADC high 8-bit result and Send to UART//if you want show 10-bit result, uncomment next line// SendData(ADC_LOW2); //Show ADC low 2-bit resultif (++ch > 7) ch = 0; //切换到下一通道ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;}/*----------------------------Initial ADC sfr----------------------------*/void InitADC( ){P1ASF = 0xff; //设置P1口全部为ADC通道ADC_RES = 0; //清除高8位缓冲数据ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;Delay(2); //打开ADC}/*----------------------------Initial UART----------------------------*/void InitUart(){SCON = 0x5a; //8 bit data ,no parity bitTMOD = 0x20; //工作方式寄存器,8位初值自动重新装入定时器TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrateTR1 = 1; //T1开始运行}/*----------------------------Send one byte data to PCInput: dat (UART data)Output:-----------------------------*/void SendData(BYTE dat){while (!TI); //WaitTI = 0; //ClearSBUF = dat; //Send}/*----------------------------Software delay function----------------------------*/void Delay(WORD n){WORD x;while (n--){x = 5000;while (x--); } }。

51单片机ad、da转换器

51单片机ad、da转换器
2.DAC的参数:描述D/A转换器性能的参数很多,主要有以下 几个:
(1)分辨率(Resolution)
(2)偏移误差(OffsetError)
(3)精度(Accuracy)
(4)转换速度(converting speed) (5)温度灵敏度(Temp出er偏模at移拟ur误量eSe差对ns是相it指对iv输于it入0y的)数偏字移量值为。0这时种,误输
二、DAC及其接口
(一)DAC介绍:数模转换,将一个二进制数字信号转换成与 此值成正比的模转拟换信速号率。/建立时间。转换速率实际是
1.DAC结构:DAC芯由片建上立集时成间有来D反/A映转的换。电建路立和时辅间助是电指路数。 字量为满刻度值(各位全为1)时,DAC
2.几DA个C的:参数:描的9述0模%满D拟/量输A程转出或换电±器压1性达/2能到LS的某B满参个量数规程很定)多值时,(所主比需要如有,以下 (1)分辨率(Reso要lu的ti时on间) 。 (2)偏移误差(Of建fs立et时Er间ro是r)D/A转换速率快慢的一个重 (3)精度(Accura要速cy参 率) 数越。低很。显不然同,型建号D立AC时的间建越立大时,间转一换 (4)转换速度(co般nv从er几ti个ng纳s秒pe到ed几) 个微秒不等。若输出 (5)温度灵敏度(形Te式mp是er电at流ur,eSDeAnCs的it建iv立it时y)间是很短的;
(二)DAC0832:8位并行D/A转换器,建立时 间1us,CMOS低功耗,电流输出型,
DAC 0832的结构 DAC 0832的引脚 DAC 0832的接口
(1)DAC0832的结构
8位输入寄存器由 8个D锁存器组成, 用来作为输入数据 的缓冲寄存器。
若输出形式是电压,DAC的建立时间主 要是输出运算放大器所需要的响应时间。

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真一、前言51单片机是一种广泛应用于嵌入式系统领域的微控制器,其具有低功耗、高性能、易学易用等特点。

其中,AD转换模块是其重要的功能之一,可以实现模拟信号到数字信号的转换。

本文将介绍51单片机AD 转换的相关知识和代码实现,并通过仿真验证其正确性。

二、51单片机AD转换原理1. AD转换概述AD转换(Analog-to-Digital Conversion)是指将模拟信号(如声音、图像等)转化为数字信号的过程。

在嵌入式系统中,AD转换通常用于采集外部传感器等模拟量信号,并将其转化为数字量进行处理。

2. 51单片机AD转换模块51单片机内置了一个8位AD转换模块,可以对0~5V范围内的模拟信号进行采样和转换。

该模块包含以下主要部分:(1)输入端:可接受外部0~5V范围内的模拟信号。

(2)采样保持电路:在采样期间对输入信号进行保持,以避免采样过程中信号波动。

(3)比较器:将输入信号与参考电压进行比较,并输出比较结果。

(4)计数器:对比较结果进行计数,得到AD转换的结果。

(5)控制逻辑:控制采样、保持、比较和计数等过程。

3. AD转换精度AD转换精度是指数字信号与模拟信号之间的误差,通常用位数来表示。

例如,8位AD转换器可以将模拟信号分成256个等级,即精度为1/256。

因此,AD转换精度越高,数字信号与模拟信号之间的误差越小。

4. AD转换速率AD转换速率是指单位时间内进行的AD转换次数。

在51单片机中,AD转换速率受到时钟频率和采样时间的限制。

因此,在实际应用中需要根据具体情况选择合适的时钟频率和采样时间以满足要求的转换速率。

三、51单片机AD转换代码实现以下为51单片机AD转换代码实现:```#include <reg52.h>sbit IN = P1^0; // 定义输入端口sbit OUT = P2^0; // 定义输出端口void main(){unsigned char result;while (1){ADC_CONTR = 0x90; // 打开ADCADC_CONTR |= 0x08; // 开始采样while (!(ADC_CONTR & 0x10)); // 等待采样完成result = ADC_RES; // 读取结果OUT = result; // 输出结果}}```代码解释:(1)定义输入输出端口:使用sbit关键字定义输入端口和输出端口。

51ad转换模块原理

51ad转换模块原理

51ad转换模块是一种常见的模块化电子设备,广泛应用于各种电子系统中。

该模块的主要功能是将数字信号转换为模拟信号,以便与模拟电路进行交互。

在本文中,我们将详细介绍51ad转换模块的原理和工作方式。

一、引言51ad转换模块是一种基于51单片机的模块化设备,它通过将数字信号转换为模拟信号,实现了数字与模拟电路之间的数据传输。

在如今的电子系统中,数字信号处理已经变得非常普遍,但是仍然存在很多需要模拟信号进行处理的场景,因此51ad转换模块的应用非常重要。

二、基本原理51ad转换模块的基本原理是利用模数转换器(ADC)将模拟信号转换为数字信号,然后通过数模转换器(DAC)将数字信号转换为模拟信号。

这样就可以实现数字信号与模拟信号之间的转换。

1. 模数转换器(ADC)模数转换器是将模拟信号转换为数字信号的关键部件。

它通过采样和量化的方式对输入的模拟信号进行数字化处理。

具体来说,ADC首先对模拟信号进行采样,即按照一定的时间间隔对信号进行抽样。

然后,采样到的信号经过量化处理,即将连续的模拟信号转换为离散的数字信号。

最后,通过编码器将离散的数字信号转换为二进制代码,以表示原始的模拟信号。

2. 数模转换器(DAC)数模转换器是将数字信号转换为模拟信号的重要组成部分。

它通过解码器将数字信号转换为相应的模拟信号。

具体来说,DAC中的解码器将二进制代码转换为模拟信号的幅度值。

然后,这个幅度值通过一个滤波器进行平滑处理,得到最终的模拟信号。

三、工作方式51ad转换模块的工作方式可以分为输入和输出两个过程。

1. 输入过程在输入过程中,外部模拟信号通过输入端口进入模块。

首先,模拟信号经过一个低通滤波器进行预处理,滤除高频噪声和杂散信号。

然后,经过模数转换器(ADC)将模拟信号转换为数字信号。

转换后的数字信号被传输到51单片机中进行处理。

2. 输出过程在输出过程中,经过处理的数字信号从51单片机中传输到数模转换器(DAC)。

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转换程序解析

51单片机ad转换程序解析

51单片机ad转换程序解析1.引言1.1 概述概述部分旨在介绍本篇文章的主题——51单片机AD转换程序,并对文章的结构和目的进行简要说明。

51单片机是指Intel公司推出的一种单片机芯片,它广泛应用于嵌入式系统中。

而AD转换则是模拟信号转换为数字信号的过程,是嵌入式系统中的重要功能之一。

本文将详细解析51单片机中的AD转换程序。

文章结构分为引言、正文和结论三个部分。

引言部分将给读者介绍本篇文章的内容和结构安排,正文部分将详细讲解51单片机AD转换程序的相关要点,而结论部分将总结正文中各个要点的内容,以便读者能够更好地理解和掌握51单片机AD转换程序的实现原理。

本文的目的在于向读者提供一份对51单片机AD转换程序的详细解析,使读者能够了解51单片机的AD转换功能以及如何在程序中进行相应的设置和操作。

通过本文的学习,读者将掌握如何使用51单片机进行模拟信号的采集和处理,为后续的嵌入式系统设计和开发提供基础。

在下一节中,我们将开始介绍文章的第一个要点,详细讲解51单片机AD转换程序中的相关知识和技巧。

敬请期待!1.2 文章结构文章结构部分主要是对整篇文章的框架和内容进行介绍和归纳,以帮助读者更好地理解文章的组织和内容安排。

本文以"51单片机AD转换程序解析"为主题,结构分为引言、正文和结论三个部分。

引言部分主要包括概述、文章结构和目的三个方面。

首先,通过对单片机AD转换程序的解析,来讲解其实现原理和功能。

其次,介绍文章的结构,帮助读者明确整篇文章的主要内容和组织方式。

再次,阐明文章的目的,即为读者提供关于51单片机AD转换程序的详尽解析和指导,帮助读者深入了解该技术并进行实际应用。

正文部分则分为两个要点,即第一个要点和第二个要点。

第一个要点可以从AD转换的基本概念入手,介绍51单片机AD转换的原理和流程。

包括输入电压的采样、AD转换器的工作原理、ADC的配置和控制等方面的内容。

在此基础上,深入解析51单片机AD转换程序的编写和调用方法,包括编程语言、寄存器的配置、数据的获取和处理等。

51单片机ADDA转换教程

51单片机ADDA转换教程
把量化的结果用代码 (二进制或二 - 十 进制 )表示出来,称为 “ 编码 ” 。
3. 采样 - 保持电路
RF
R1
ui
T
CF
+
uo
UL
当 UL为高电平时, MOS管T导通, ui 经电阻 R1和管T向电容 CF充电 。 当 UL为低电平时, MOS管T截止, 忽略各种漏电流,电容CF上的电压得以保持 。
造成转换误差的原因主要有 : 参考电压 VREF的波动 ; 运算放大器的零点漂移 ; 模拟开关的导通内阻和导通电压 ;
电阻网络中的电阻值偏差 ;…...
10. 2. 4 D/A转换器的主要技术指标
三、D/A转换器的转换速度
为了便于定量地描述D/A转换器的转换 速度 ,定义了建立时间 tS 和转换速率 SR两 个参数 。
10. 3. 1 采样定理
在A / D转换中,因为输入的模拟量在 时间上是连续的,而输出的数字信号是离 散量,所以进行转换时只能在一系列选定 的瞬间 (亦即瞬间坐标轴上的一些规定点) 对输入的模拟信号采样,然后再把这些采 样值转换为输出的数字量 。
A / D 转换过程应包括 :采样、 保持、 量化、 编码 这四个步骤 。
§10.1 概述
模 拟 信 A/D 号
计 算 机
模 拟 D/A 信 号
A / D : Analog to Digital D / A : Digital to Analog
§10. 2 数 / 模 转换器 ( DAC )
10. 2. 1 权电阻网络型 10. 2. 2 权电流型 10. 2. 3 T型电阻网络型 10. 2. 4 D/A变换器的主要技术指标 10. 2. 5 集成 DAC 0832及其应用

51单片机的AD转换

51单片机的AD转换

51单片机的AD转换姓名:史旭超学号:0845531133 专业:电子信息工程摘要:AD转换器是一种能把输入模拟电电压或电电流变成与它成正比的数数字量,即能把被控对对象的各种模拟信息变成计计算机可以识别的数字信息。

在单片机测控系统中,被采集的实时信号多为连续变化的模拟量,由于单片机只能处理数字量,所以就需要将连续变化的模拟量转换成数字量,即A/D转换。

本次设计中AD转换器选用ADC0809,将其与单片机,8255共同构成转换电路。

关键词:ADC0809 单片机8255 汇编语言一、芯片介绍1.A/D转换芯片0809引脚与功能简介ADC0809是由美国国家半导体公司推出的8位逐次逼近式A/D转换器,包括8位模/数转换器、8通道多路转换器和与微处理器兼容的控制逻辑。

8通道多路转换器能直接连通8个单端模拟信号中的一个。

ADC0809与C51单片机有3种接口方式:查询方式、中断方式和等待延时方式。

每采集一次一般需100us。

中断方式下,A/D转换结束后会自动产生EOC信号。

(1)ADC0809内部逻辑结构如下图所示:图1 ADC0809的内部逻辑结构ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2) ADC0809引脚结构功能D7-D0:8位数字量输出引脚。

IN0-IN7:8位模拟量输入引脚。

VCC:+5V工作电压。

GND:地。

REF(+):参考电压正端。

REF(-):参考电压负端。

START:A/D转换启动信号输入端。

ALE:地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。

OE:输出允许控制端,用以打开三态数据输出锁存器。

51单片机ad转换流程

51单片机ad转换流程

51单片机ad转换流程51单片机是一种广泛应用于嵌入式系统中的微控制器。

与其他单片机相比,51单片机的特点之一是其模拟到数字转换功能(AD转换),它允许将模拟信号转换为数字量,以便进行数字信号处理和控制。

在本文中,我们将以“51单片机AD转换流程”为主题,详细介绍AD转换的步骤和相关概念。

第一步:了解AD转换的基本概念模拟到数字转换(AD转换)是电子系统中一种常见的操作。

它涉及将连续的模拟信号转换为离散的数字信号,以便进行数字信号处理。

AD转换的结果通常以二进制形式表示,可以被计算机或其他数字处理设备使用。

在AD转换过程中,最重要的参数是分辨率和采样率。

分辨率是指AD转换器能够分辨的最小信号变化量,通常以比特数表示。

例如,8位AD转换器的分辨率为2^8,即256个离散的信号水平。

采样率是指AD转换器每秒钟进行的样本数量,通常以赫兹(Hz)表示。

第二步:准备硬件连接在进行AD转换之前,需要连接电源、待转换的模拟信号源和51单片机上的AD输入引脚。

具体的硬件连接方式可以根据具体的应用需求和开发板设计进行调整。

通常情况下,待转换的模拟信号将通过电阻网络与AD输入引脚相连接。

这个电阻网络起到电压分压的作用,将输入信号的幅度限制在AD转换器可接受的范围内。

开发板上的AD输入引脚通常还具有可选的电容网络,用于去除输入信号中的高频噪声。

第三步:配置AD转换器参数在开始AD转换之前,需要通过编程设置51单片机上的AD转换器参数。

这些参数包括分辨率、输入通道选择、参考电压选择和采样率等。

这些参数的设置是通过对寄存器的操作来实现的。

通过写入相应的寄存器值,我们可以选择转换的分辨率。

51单片机上的AD转换器可以支持不同的分辨率,如8位、10位或12位。

选择转换的输入通道也是一个重要的步骤。

通常情况下,AD转换器具有多个输入信道,可以同时转换多个信号。

需要根据具体的信号源,选择合适的输入通道。

参考电压的选择也要根据具体的应用需求来确定。

Proteus学习51单片机之AD转换

Proteus学习51单片机之AD转换

Proteus学习51单片机之AD转换概述模拟数字转换器(ADC)是将模拟信号转换为数字信号的设备。

我们将在本文中介绍如何在Proteus中使用51单片机进行AD转换。

首先,我们需要了解一些关于ADC的基础知识。

什么是ADC?ADC是模拟数字转换器的缩写。

它是一种将模拟信号( 例如声音或光线)转换为数字信号的设备。

数字信号可以通过数字处理器 例如计算机或嵌入式系统)进行进一步处理。

为什么需要ADC?数字设备不能直接处理模拟信号。

因此,我们需要将模拟信号转换为数字信号,以便数字设备可以处理它。

这就是ADC的作用。

如何使用ADC?ADC一般有以下几个步骤:1.(采样:使用ADC将连续的模拟信号转换为离散的数据点。

2.(量化:将采样结果转换为离散的数字值。

3.(编码:将数字值转换为二进制值。

在51单片机中,ADC转换的基本步骤是:1.(设定ADC电平:在程序中,我们需要将端口设置为读取ADC的电平。

2.(ADC模式设置:通过设定模式,来选择如何采样和量化信号。

3.(读取ADC值:读取ADC的数字输出值。

Proteus中51单片机AD转换的操作步骤下面我们将了解如何在Proteus中使用51单片机进行AD转换。

1.(创建Proteus新工程在Proteus中创建新工程。

从库中选择合适的51单片机,并将其放置在原理图中。

2.(连接一组电压源和电阻连接一组电压源和电阻,以模拟数字模拟转换器(ADC)输入信号。

3.(添加ADC模块前往“Component(Mode” 元器件模式)下,添加ADC模块。

选择合适的ADC元器件,并将其添加到工程中。

4.(连接ADC模块到单片机将ADC模块与单片机相连。

5.(配置ADC将ADC模块属性栏中的ADC模块讯号连接到单片机的相应端口上,设置ADC的属性。

6.(编写程序并上传到单片机根据需要编写程序,并上传到单片机上。

7.(调试调试程序,并检查ADC是否正常工作。

8.(监测ADC输出透过示波器或LED等设备监测ADC的输出值。

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及其接口

51单片机ad转换代码及仿真

51单片机ad转换代码及仿真

51单片机AD转换代码及仿真1. 任务概述本文主要探讨51单片机模拟信号的AD(模数转换)过程以及相关代码的编写和仿真。

通过本文,读者将了解到51单片机的AD转换原理、AD转换的流程、具体代码实现方法以及如何使用仿真软件进行验证和调试。

2. 51单片机的AD转换原理[为了实现模拟信号到数字信号的转换,51单片机内置了一部分模拟数字转换器(ADC)。

ADC是一种电子元器件,它可以将模拟信号转换成数字信号。

模拟信号是连续的,而数字信号是离散的。

模拟信号转换成数字信号的过程叫做AD(模数转换),其原理可以简单描述如下:]1.首先,模拟信号通过模拟输入引脚进入51单片机中的ADC模块。

2.ADC模块将模拟信号进行采样,即对信号进行离散化处理,将离散化后的采样值存储在一个寄存器中。

3.采样值随后会经过数字化处理,变成具有一定精度的数字量。

4.数字量经过处理后,嵌入系统可以根据其数值进行分析、判断和控制。

3. 51单片机的AD转换流程[51单片机的AD转换流程可以分为以下几个步骤:]3.1 设置ADC模块在使用51单片机进行AD转换之前,需要先设置ADC模块的相关参数,如引脚选择、参考电压选择、时钟频率等。

这些设置可通过写入ADC相关的寄存器来完成。

3.2 启动转换设置完成后,可以通过设置一个特定的位来启动AD转换。

一旦AD转换开始,51单片机将根据设置的参数自动进行转换操作。

3.3 等待转换完成在启动AD转换后,需要等待转换完成。

此时,可以通过查询ADC模块的状态位来判断转换是否完成。

3.4 读取转换结果转换完成后,可以通过读取ADC寄存器的值来获取AD转换结果。

这个值将会代表输入模拟信号的数字化数值。

4. 51单片机AD转换的代码实现[以下给出一个简单的51单片机AD转换的代码示例。

本示例假设选用了P1口作为ADC的输入引脚,使用AVCC作为参考电压,时钟频率为12MHz。

]#include <reg52.h>// 引入51单片机的头文件sbit ADC_IN = P1^0; // 定义P1.0为ADC输入引脚void ADC_Init() {// 设置ADC参考电压为AVCCADMUX = (1<<REFS0);// 设置ADC输入通道为ADC0(P1.0)ADMUX |= (1<<MUX0);// 启用ADC模块,设置ADC时钟频率为F_CPU/8ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);}unsigned int ADC_Read() {unsigned int adc_value = 0;// 设置ADC转换开始位ADCSRA |= (1<<ADSC);// 等待转换完成while (ADCSRA & (1<<ADSC));// 读取ADC寄存器的值adc_value = ADCL;adc_value |= (ADCH<<8);return adc_value;}void main() {unsigned int adc_result = 0;ADC_Init(); // 初始化ADC模块while (1) {adc_result = ADC_Read(); // 读取ADC转换结果// 在此处对结果进行处理或输出}}在以上示例代码中,首先通过ADC_Init()函数对ADC进行初始化设置。

简述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转换器)

时,LE 1 …=0
则数据被锁存
当 WR2 和 XFER 均为低电平时,LE2=1,此时允许D/A转换,否则 LE2
=0,将数20据21锁/3/1存1 于DAC寄存器中
9
DAC 0832 常 见 的 几 种 用 法
(a): DAC寄存器直通方式 (b): 输入寄存器直通方式
(c)2:021/两3/11个寄存器同时选通及锁存方式
2021/3/11
DAC0832
CS
WR1 AGND
D3 D2 D1
D0 Vref Rfb DGND
VCC
ILE WR2 XFER D4 D5
D6 D7 Iout2 Iout1
20 PIN DIP封装
5
DAC0832 内部结构框图
D0—D7:8位数字量输入端 /CS: 片选端,低有效 ILE: 数据锁存允许,高有效 /WR1: 写控制信号1,低有效 /WR2: 写控制信号2,低有效 /XFER: 数据传送控制信号 Iout1: 电流输出端1 LE Iout2: 电流输出端2 Rfb: 内置反馈电阻端 Vref: 参考电压源,-10~+10V DGND:数字量地 AGND:模拟量地 Vcc: +5~+15V单电源供电端
10
DAC0832 常见的几种用法
D7
输 入


D0

ILE 1 &
LE1 1
CE 0
1
WR1 0 ≥1
WR2 0
1
XFER 0 ≥1
Vref
DAC
D/A Iout2
寄 存
转 换
Iout1


Rfb LE2
LE=1,Q 跟随 D LE=0,Q 锁存 D

51单片机系列连载9-D-A转换器

51单片机系列连载9-D-A转换器

51单片机系列连载9-D/A转换器
今天简单地介绍一下D/A转换器,即将数字信号digital转换为模拟信号analog,先看一下基本的原理,如下图所示
这是简单的串并联电路,不难分析理解,对照这个电路图,可以很方便的求
解出相关电流,具体如下:
就是这样了,数字信号就变为模拟信号了。

D/A转换器有几个性能指标,需
要注意一下。

第一,分辨率。

分辨率指的是输入数字量的最低有效位发生变化时,所对应
的输出模拟量的变化量,具体一些,比如5v的满量程,采用8位的DAC,分
辨率就是5/256,显然,位数越多,分辨率越高。

第二,线性度。

线性度是指实际转换特性曲线与理想直线特性之间的偏差。

第三,绝对精度与相对精度。

绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。

绝对精度
是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引
起的。

绝对精度(即最大误差)应小于1个LSB。

相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。

第四,建立时间。

建立时间是指输入的数字量发生满刻度变化时,输出模拟。

51单片机-R2R电阻网络-自制-DA--AD-转换器-源代码及电路图

51单片机-R2R电阻网络-自制-DA--AD-转换器-源代码及电路图

51单片机R2R DA AD 转换器数码管程序#include<AT89x52.h>#define uint unsigned int#define uchar unsigned char//DA输出引脚#define DA_OUT P2//比较器输入引脚#define COMP_IN P1_3//LED灯#define LED_DA P1_1#define LED_AD P1_2//按键#define BTN_1 P3_7 //个位+1#define BTN_2 P3_6 //十分位+1#define BTN_3 P3_5 //百分位+1#define BTN_4 P3_4 //AD采样//开关#define SW_DA_AD P3_0 //0->DA 1->AD#define SW_DA_VALUE 0#define SW_AD_VALUE 1//AD转换定时器中断次数0~19uchar T_AD_CONVERT_INT=0;//DA值float DA_value_float=5.0;uchar DA_value_now=255; //单位为255分之1//AD值uchar AD_value_now=127;//数码管uchar LEDS_TABLE[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x7e};//common part#define HIGH 1#define LOW 0#define TRUE 1#define FALSE 0#define ZERO 0#define MSB 0x80#define LSB 0x01//max7219 part#define DECODE_MODE 0x09#define INTENSITY 0x0A#define SCAN_LIMIT 0x0B#define SHUT_DOWN 0x0C#define DISPLAY_TEST 0x0F//pin defined/***********************************************************************///change this part at different boardsbit LOAD=P1^4; //MAX7219 Load-Data Input: rising edge pin 12sbit DIN=P1^5; //MAX7219 Serial-Data Input: rising edge pin 1sbit CLK=P1^6; //MAX7219 Serial-Clock Input: maximum 10MHz pin 13//function define/***********************************************************************/void Write_Max7219_byte(unsigned char temp);//write max7219 a bytevoid Write_Max7219(unsigned char address,unsigned char dat);//write max7219 command and datavoid Init_Max7219(void);//Initize max7219//test program display from 1~8/***********************************************************************//*void main(void){unsigned char i;Init_Max7219();while(TRUE){for(i=1;i<9;i++){Write_Max7219(i,i);}}} *//***********************************************************************/void Write_Max7219_byte(unsigned char temp){unsigned char i;for (i=0;i<8;i++){CLK=LOW;DIN=(bit)(temp&MSB);temp=temp<<1;CLK=HIGH;}}/***********************************************************************/void Write_Max7219(unsigned char address,unsigned char dat){LOAD=LOW;Write_Max7219_byte(address);Write_Max7219_byte(dat);LOAD=HIGH;}/***********************************************************************/void Init_Max7219(void){Write_Max7219(SHUT_DOWN, 0x01); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0Write_Max7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1Write_Max7219(DECODE_MODE, 0x00); //Decode Mode Select D7~D0 1 B decode 0 No decodeWrite_Max7219(SCAN_LIMIT, 0x03); //SCAN LIMIT 0~7 0xX0~0xX7Write_Max7219(INTENSITY, 0x04); //Set Intensity 0xX0~0xXf}void delay10ms(void){unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);}void delay(uint t){while(t--);}void Display_DA(){float value_temp=DA_value_float;Write_Max7219(1,LEDS_TABLE[(uint)value_temp]+0x80);Write_Max7219(2,LEDS_TABLE[((uint)(value_temp*10))%10]);Write_Max7219(3,LEDS_TABLE[((uint)(value_temp*100))%10]);Write_Max7219(4,LEDS_TABLE[10]);}void Display_AD(){float value_temp=((float)(5*((uint)AD_value_now)))/255.0;Write_Max7219(1,LEDS_TABLE[(uint)value_temp]+0x80);Write_Max7219(2,LEDS_TABLE[((uint)(value_temp*10))%10]);Write_Max7219(3,LEDS_TABLE[((uint)(value_temp*100))%10]);Write_Max7219(4,LEDS_TABLE[10]);}//完成AD转换并输出到DA口void AD_Convert(void){char temp=0;uint value=0;for(temp=7;temp>=0;temp--){COMP_IN=1;value=value+(1<<temp);DA_OUT=value;delay(5);if(COMP_IN==1) //比较结果为1 ==>外部输入电压(AD电压)较高{}elsevalue=value-(1<<temp);}DA_OUT=value;AD_value_now=value;}void Key_Pressed(uchar key){switch(key){case 1:DA_value_float+=1.0;if((uint)DA_value_float>=6.0)DA_value_float=DA_value_float-6.0; //6.0 6.0break;case 2:DA_value_float+=0.1;if(((uint)(DA_value_float*10))%10==0)DA_value_float=DA_value_float-1.0;break;case 3:DA_value_float+=0.01;if(((uint)(DA_value_float*100))%10==0)DA_value_float=DA_value_float-0.1;break;case 4:break;}if(DA_value_float>5)DA_value_float=5;DA_value_now=(uint)(DA_value_float*51);DA_OUT=DA_value_now;}void timer0(void) interrupt 1{TR0=0;if(SW_DA_AD==SW_DA_VALUE) //DA{Display_DA();}else //AD{Display_AD();}TH0=0;TL0=0;TR0=1;}//每20次定时器中断进行一次AD转换void timer1(void) interrupt 3{T_AD_CONVERT_INT++;if(T_AD_CONVERT_INT>=20){AD_Convert();T_AD_CONVERT_INT=0;}TH0=159;TL0=88;TR0=1;}void main(){//4个按键的按键次数(10MS的次数)char BTN_T_1=13;char BTN_T_2=13;char BTN_T_3=13;char BTN_T_4=13;EA=0;Init_Max7219();//设置定时器和中断TMOD=0x11;PT0=1;PT1=1;ET0=1;ET1=1;TH0=0;TL0=0; // 25毫秒的定时刷新单个数码管TH1=159;TL1=88; // 定时进行AD采样 20*25毫秒(0.5秒)一次TR0=1;////1TR1=0;EA=1;///1while(1){if(SW_DA_AD==SW_DA_VALUE) //DA{TR1=0;//停止ADDA_OUT=DA_value_now;LED_DA=0;LED_AD=1;else //AD{TR1=1;//开启ADDA_OUT=AD_value_now;LED_DA=1;LED_AD=0;}//按键判断//1if(BTN_1==0){BTN_T_1++;if(BTN_T_1==15){Key_Pressed(1);BTN_T_1=0;} }else BTN_T_1=13;//2if(BTN_2==0){BTN_T_2++;if(BTN_T_2==15){Key_Pressed(2);BTN_T_2=0;} }else BTN_T_2=13;//3if(BTN_3==0){BTN_T_3++;if(BTN_T_3==15){Key_Pressed(3);BTN_T_3=0;} }else BTN_T_3=13;//4if(BTN_4==0){BTN_T_4++;if(BTN_T_4==15){Key_Pressed(4);BTN_T_4=0;} }else BTN_T_4=13;delay10ms();delay10ms();}}数码管电路图1602程序#include<AT89x52.h>#define uint unsigned int#define uchar unsigned char//DA输出引脚#define DA_OUT P2//比较器输入引脚#define COMP_IN P3_7//按键#define BTN_1 P3_3 //个位+1#define BTN_2 P3_4 //十分位+1#define BTN_3 P3_5 //百分位+1//开关#define SW_DA_AD P3_6 //0->DA 1->AD#define SW_DA_VALUE 0#define SW_AD_VALUE 1//AD转换定时器中断次数0~19uchar T_AD_CONVERT_INT=0;uchar T_DISPLAY_INT=0;//DA值float DA_value_float=5.0;uchar DA_value_now=255; //单位为255分之1 //AD值uchar AD_value_now=127;void delay10ms(void){unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);}void delay(uint t){while(t--);}//LCD控制引脚定义#define LCD_RS P3_7#define LCD_RW P3_6#define LCD_E P3_5#define LCD_Data P0#define LCD_Busy P0_7//LCD 等待繁忙标志void LCD_wait(void){LCD_Data = 0xFF;do{LCD_RS = 0;LCD_RW = 1;LCD_E = 0;LCD_E = 1;}while (LCD_Busy == 1);LCD_E = 0;}//LCD 写数据void LCD_dat(uint dat){LCD_wait();delay(10);LCD_E = 0;LCD_Data = dat;LCD_RS = 1;LCD_RW = 0;LCD_E = 1;LCD_E = 0;}//LCD 写命令void LCD_cmd(uint cmd){LCD_wait();delay(10);LCD_E = 0;LCD_Data = cmd;LCD_RS = 0;LCD_RW = 0;LCD_E = 1;LCD_E = 0;}//LCD 写字符串void LCD_str(uchar row,uchar column, uchar *p) {uint addr=0x80;if(row==1)addr+=0x40;addr+=column;LCD_cmd(addr);while (*p != '\0'){LCD_dat(*p++);}}//LCD 写整数void LCD_int(uchar x,uchar y,uchar num,uchar width){uchar t[6];t[width]='\0';width--;do{t[width]='0'+(num%10);num/=10;} while((width--)>0);LCD_str(x,y,t);}//LCD 清屏void LCD_clr(){LCD_cmd(0x01); // 清屏}//LCD 初始化void LCD_init(void){LCD_cmd(0x38); // 16*2显示,5*7点阵,8位数据接口LCD_cmd(0x0C); // 显示器开、光标开、光标允许闪烁LCD_cmd(0x06); // 文字不动,光标自动右移LCD_cmd(0x01); // 清屏}void Display_DA(){float value_temp=DA_value_float;LCD_clr();LCD_str(0,0,"Digital->Analog");LCD_int(1,5,(uint)value_temp,1);LCD_str(1,6,".");LCD_int(1,7,((uint)(value_temp*100))%100,2);LCD_str(1,9,"V");}void Display_AD(){float value_temp=((float)(5*((uint)AD_value_now)))/255.0;LCD_clr();LCD_str(0,0,"Analog->Digital");LCD_int(1,5,(uint)value_temp,1);LCD_str(1,6,".");LCD_int(1,7,((uint)(value_temp*100))%100,2);LCD_str(1,9,"V");}//完成AD转换并输出到DA口void AD_Convert(void){char temp=0;uint value=0;for(temp=7;temp>=0;temp--){COMP_IN=1;value=value+(1<<temp);DA_OUT=value;delay(5);if(COMP_IN==1) //比较结果为1 ==>外部输入电压(AD电压)较高{}elsevalue=value-(1<<temp);}DA_OUT=value;AD_value_now=value;}void Key_Pressed(uchar key){switch(key){case 1:DA_value_float+=1.0;if((int)DA_value_float>5.0)DA_value_float=0.0;break;case 2:DA_value_float+=0.1;if(((int)(DA_value_float*10))%10==0)DA_value_float=DA_value_float-1.0;break;case 3:DA_value_float+=0.01;if(((int)(DA_value_float*100))%10==0)DA_value_float=DA_value_float-0.1;break;}if(DA_value_float>5)DA_value_float=5;if(DA_value_float<0)DA_value_float=0;DA_value_now=(uint)(DA_value_float*51);DA_OUT=DA_value_now;}/*void timer0(void) interrupt 1{TR0=0;T_DISPLAY_INT++;if(T_DISPLAY_INT>=9){if(SW_DA_AD==SW_DA_VALUE) //DA{Display_DA();}else //AD{Display_AD();}T_DISPLAY_INT=0;}TH0=159;TL0=88;TR0=1;} *///每20次定时器中断进行一次AD转换void timer1(void) interrupt 3{TR1=0;T_AD_CONVERT_INT++;if(T_AD_CONVERT_INT>=20){AD_Convert();T_AD_CONVERT_INT=0;}TH0=159;TL0=88;TR1=1;}void main(){//4个按键的按键次数(10MS的次数)char BTN_T_1=13;char BTN_T_2=13;char BTN_T_3=13;char BTN_T_4=13;char BTN_T_5=13;char BTN_T_6=13;EA=0;LCD_init();//LCD_clr();//LCD_str(0,0,"AD&DA_Convert");//while(1);//设置定时器和中断TMOD=0x11;PT0=1;PT1=1;ET0=1;ET1=1;TH0=0;TL0=0; // 25毫秒的定时刷新单个数码管TH1=159;TL1=88; // 定时进行AD采样 20*25毫秒(0.5秒)一次TR0=0;////1TR1=0;EA=1;///1while(1){T_DISPLAY_INT++;if(SW_DA_AD==SW_DA_VALUE) //DA{TR1=0;//停止ADDA_OUT=DA_value_now;if(T_DISPLAY_INT>=8)Display_DA();}else //AD{TR1=1;//开启ADDA_OUT=AD_value_now;if(T_DISPLAY_INT>=8)Display_AD();}if(T_DISPLAY_INT>=8)T_DISPLAY_INT=0;//按键判断//1if(BTN_1==0){BTN_T_1++;if(BTN_T_1==15){Key_Pressed(1);BTN_T_1=0;} }else BTN_T_1=13;//2if(BTN_2==0){BTN_T_2++;if(BTN_T_2==15){Key_Pressed(2);BTN_T_2=0;} }else BTN_T_2=13;//3if(BTN_3==0){BTN_T_3++;if(BTN_T_3==15){Key_Pressed(3);BTN_T_3=0;} }else BTN_T_3=13;delay10ms();delay10ms();}}1602电路图(注:可编辑下载,若有不当之处,请指正,谢谢!)。

51单片机控制A_D转换器_姬翔

51单片机控制A_D转换器_姬翔
所以我们把这个实验命名为秒表运行中进行adc其特征是秒表一边运行一边连续进行adc因此实验成功的标志是代表转换结果的led显示数字能与为adc0809提供模拟电压的电位器实现随动即拧动电位器时led显示数字跟着闪烁
产业与科技论坛 2011 年第 10 卷第 16 期
51 单片机控制 A / D 转换器
方式。但是由于 51 单片机没有现成的低 8 位地址总线,所以 采用这种标准连接方式需要用 74LS373 或类似芯片产生低 8 位地址总线。早期的 MCS51 系列单片机的应用品种很多是 没有内置程序存贮器的 8031 芯片,本身就需要外挂 74LS373 等芯片产生低 8 位地址总线来外接 E2PROM 等程序存贮器, 连接 ADC0809 时 不 需 要 专 门 外 挂 74LS373。因 此 早 期 的 MCS51 系列单片机,如 8031,采用这种方式连接 ADC0809 还 是比较可行的。P2. 7 / A15 线作为整个 ADC0809 芯片的片选 线。当 P2. 7 / A15 = 0 时,或非门敞开,允许写信号通过,将 单片机负的写脉冲转换为 ADC0809 所需要的正脉冲,以选中 ADC0809 某一通道并启动转换。这是一种不完全地址译码方 式。如果增加地址译码器,将 P2. 7 / A15 线改为高位地址译码器 的输出线,就可以形成完全译码。
二、ADC0809 与 51 单片机的第二种连接方式 在很多应用场合,AT89S51 内部的硬件资源,例如 4kB 闪存,128B 内部 RAM,一个串行口和 4 个 8 位并行口等,已 经够用。就是说,在很多应用场合,不需要外扩 RAM 或 I / O 口。在很多应用场合,AT89S51 内部的硬件资源, 当 51 单片机没有外扩 RAM 和 I / O 口时,ADC0809 就可 以在概念上作为一个特殊的唯一的外扩 RAM 单元. 因为它 是唯一的,就没有 地 址 编 号,也 就 不 需 要 任 何 地 址 线 或 者 地 址译 码 线。 只 要 单 片 机 往 外 部 RAM 写 入,就 是 写 到 ADC0809 的地址寄存器中。只要单片机从外部 RAM 读取数 据,就是读取 ADC0809 的转换结果。基于这种外部 RAM 的 唯一单元概念设计的 AT89S51 与 ADC0809 的连接电路。相 应的启动程序和读数程序都非常简单。 编程概要: MOVA,#0F8H ; ADC0809 通道 0 地址送到 A MOVX @ R0,A ; 锁定通道 0 并启动转换 ……………… MOVX A,@ R0 ; 读取转换结果 只要程 序 中 使 用 MOVX @ R0,A 指 令 或 者 MOVX @ DPTR,A 指令,就能启动 ADC0809。比较 MOVX @ R0,A 指 令和 MOVX @ DPTR,A 指令,当然是 MOVX @ R0,A 占优势, 所以这里使用 MOVX@ R0,A 指令。其中间址寄存器 R0 中 的数据无论在启动 ADC0809 还是在读取转换结果时都没有 任何意义,因此事先不必考虑往 R0 中送入什么数据。这是 本程序的一大特点。 三、同时进行模数转换和显示的程序 执行本程序时,需要在图 2 基础上再增加一片串入并出 芯片 74LS164 及一只共阳数码管,并 通 过 P1 口 和 7406 或 74LS240 控制 8 只 LED。 ORG 0000H LJMPMAIN ORG 0003H ; 0 号外中断服务子程序
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【关键词】单片机; AD 转换器; ADC0809 【作者单位】姬翔,河南煤业化工集团鹤煤技师学院
单片机系列品种繁多,广泛应用于各行各业。因此,在 应用中需要设计者对各种单片机都有所了解,以便确定最佳 的性能价格 比,也 就 是 说,要 能 应 用 各 种 单 片 机 进 行 设 计。 然而同时学习各种单片机的软硬件知识不仅难度较大,而且 没有必要。通常的方法是学习一种典型的单片机系列,掌握 好其硬件结构和 软 件 知 识,在 应 用 中,如 果 需 要 用 到 其 他 系 列单片机,只需将这两种系列的不同特点及软硬件上的不同 之处稍加分析即可。
安装时,注意两电极的安装位置是否正确。两电极不能 相碰,不能碰接蒸馏水器外壳且两电极上不能有氧化物。
四、结语 断水自动断电 保 护 装 置 具 有 操 作 简 单、使 用 安 全 方 便, 制造成本低等特点。将其运用于电热蒸馏水器中,不仅节约 能源、降低了材料消耗,而且改进了电热蒸馏水器的操作,提 高了工作效率,从 而 保 证 了 电 热 蒸 馏 水 器 的 正 常 运 行,这 一 做法有实际应用和推广价值。
一、ADC0809 与 51 单片机的第一种连接方式 这是一种数据线对数据线、地址线对地址线的标准连接
收回路,以衰减微型继电器产生的线圈电流,从而保护 T2 不 被感生电势击穿。选用 2CZ81A,其参数为 ID = 0. 5A,VRM = 25 V。同时,在桥式 整 流 电 路 中,考 虑 过 流 最 大 值,再 考 虑 电 网电压最大值,选用 2CZ54B 整流二极管。其参数为 ID = 0. 5A,VRM = 50V。
产业与科技论坛 2011 年第 10 卷第 16 姬 翔
【摘 要】研究如何利用 AT89C5X 系列的单片机控制 A / D 转换器的方法,并给出了单片机软硬件知识和单片机设计的方法。 详细介绍了 ADC0809 与 AT89S51( 51 系列单片机) 的 2 种典型连接方式。
效率等因素,再加上一部份余量,这里选用功率为( 3 ~ 5) W 的小型变压器。C 选用 CJ10 系列交流接触器,它是一种用于 工频的普 通 接 触 器,主 要 供 交 流 50 赫 兹 或 60 赫 兹、电 压 500V,电流 150A 电力电路远距离接触与分断之用。这里选 CJ10—60、线圈电压 380V 的交流接触器。其参数为: 额定电 流 60 A,主触点电压 380 × 1. 05 V,电流 600 A; 联锁触点电压 380 × 1. 05 V,接通电流 50 A,分流电流 5 A。
【参考文献】 1. 李锦春编. 常用小功率晶体管手册[M]. 北京: 人民邮电出 版社,1985 2. 上海市电子电器协会编. 简明实用电工手册[M]. 上海: 上 海科学技术出版社,1986
·60·
Industrial & Science Tribune 2011.(10).16
产业与科技论坛 2011 年第 10 卷第 16 期
C1 = IC T / △VC = 0. 5 × ( 1 /100) / 5 = 1000 uF 取 C1 为 1000 uF,耐压 25V 的滤波电容可满足要求。为 了消除水位波动,造成微型继电器 KM 频繁跳动,烧坏交流 接触器的主触头,选用 C2 为 3. 3 uF,耐压 16V 的滤波电容。 晶体三极管是本电路的心脏,对电路的性能指标影响很 大,由于硅晶体管 温 度 稳 定 性 一 般 比 锗 管 要 好 ,所 以 本 电 路 的设计选用硅管。根据放大倍数的要求,选择 β 值较大的管 子; 又根据放大器通频带的要求,管子 β 的截止频率 fβ 要高于 上限频率 fh,一般取 fβ > ( 2 ~ 3) fβ,故选用 3DG 系列的三极管。 选取 T1 为 3DG6B,其参数为: BVCED = 30 V,ICM = 20 mA, PCM = 100mW,实测 β1 为 97; T2 为 3DG12A,其参数为: BVCED = 30 V,ICM = 300mA,PCM = 700mW,实测 β2 为 98。 集电极电阻 RC1 主要是保护 T2 ,这里选阻值范围为( 3 ~ 5. 6) K; 基极电阻 Rb1 主要是保护 T1 ,这里选阻值范围为( 330 ~ 470) K。 B 选用初级 220V,次级 12V 小型变压器; 考虑功率因素、
( 三) 断水自动断电保护装置的工作原理。当电热蒸馏 水器的水位达到规定水位时,A、B 两电极接通,T 导通,KM 工作,常开触点闭合,C 得电,电热元件工作,开始制取蒸馏 水; 当电热蒸馏水器的进水管断水或因周围用水而使蒸馏水 器的供水量减少,水位下降,A、B 两电极时,T 截止,KM 断 开,电热元件停止加热。从而保护了电热元件不被烧坏。
可根据 C = IC T / △VC 计算整流电路的滤波电容,其中 IC 为滤波电容放电电流,取最大负载电流 IC = ID = 0. 5A; T 为滤 波电容放电时间,桥式整流取为交流电半周期 1 /100 秒; VC 为滤波电容在平均值上下的总波动量,一般取波动量 ± 2V 左右。由于本课题负载电流较大,取为 ± 2. 5V,则总波动量 △VC 取 5V。则有,
方式。但是由于 51 单片机没有现成的低 8 位地址总线,所以 采用这种标准连接方式需要用 74LS373 或类似芯片产生低 8 位地址总线。早期的 MCS51 系列单片机的应用品种很多是 没有内置程序存贮器的 8031 芯片,本身就需要外挂 74LS373 等芯片产生低 8 位地址总线来外接 E2PROM 等程序存贮器, 连接 ADC0809 时 不 需 要 专 门 外 挂 74LS373。因 此 早 期 的 MCS51 系列单片机,如 8031,采用这种方式连接 ADC0809 还 是比较可行的。P2. 7 / A15 线作为整个 ADC0809 芯片的片选 线。当 P2. 7 / A15 = 0 时,或非门敞开,允许写信号通过,将 单片机负的写脉冲转换为 ADC0809 所需要的正脉冲,以选中 ADC0809 某一通道并启动转换。这是一种不完全地址译码方 式。如果增加地址译码器,将 P2. 7 / A15 线改为高位地址译码器 的输出线,就可以形成完全译码。
目前,性能非常好的 AT89C51( 51 系列单片机) 的价格大
约在 10 元 左 右,已 经 完 全 取 代 MCS51 而 稳 占 市 场。考 虑 AT89C51 已经在 2004 年停产,代之而起的是性能价格比更 好的 AT89S51。本课题介绍 ADC0809 与 51 系列单片机的连 接时将以 AT89S51 作为例子,不过完全适合于 AT89C51 和更 早的 MCS51 系列单片机中的 8031,8051 和 8751。本课题研 究 ADC0809 与 AT89S51( 51 系列单片机) 的 2 种典型连接方 式。
相关文档
最新文档