用普通单片机实现低成本高精度AD与DA转换

合集下载

单片机8AD转换器和DA转换器

单片机8AD转换器和DA转换器

(2)可通过循环程序段的机器周期数,计算出锯齿波的周 期。并可根据需要,通过延时的方法来改变波形周期。若 要改变锯齿波的频率,可在AJMP MM指令前加入延迟程序即 可。延时较短时可用NOP指令实现(本程序就是如此),需 要延时较长时,可以使用一个延长子程序。延迟时间不同, 波形周期不同,锯齿波的斜率就不同。 (3)通过A加1,可得到正向的锯齿波,反之A减1可得到负 向的锯齿波。 (4) 程序中A的变化范围是0~255,因此得到的锯齿波是 满幅度的。如要求得到非满幅锯齿波,可通过计算求的数 字量的处置和终值,然后在程序中通过置初值和终值的方 法实现。
产生矩形波电压的参考程序:
START: LOOP:
ORG 1100H MOV DPTR , #7FFFH MOV A , #dataH MOVX @ DPTR , A LCALL DELAYH MOV A , #dataL MOVX @ DPTR , A LCALL DELAYL SJMP LCALL
为使输入寄存器处于受控锁存方式,应把WR1接 8051的WR,ILE接高电平。此外还应把CS接高位地址线 或地址译码输出,以便于对输入寄存器进行选择。
DAC0832单缓冲方式接口
DAC0832 +5V
P0
ALE 80C51
P2.7
74LS373 G
Vcc ILE
Vref
DI7 0 IoRuftb1
下图为两片DAC0832与8031接实现的双缓冲方式连接 电路,能实现两路同步输出。
8051与DAC0832的双缓冲方式接口
P2.5 P2.6 P2.7 P0.7 P0.0
WR
80C51
CS DAC0832
XFER
DI7

单片机实验之AD转换和DA转换实验

单片机实验之AD转换和DA转换实验

zs=(int)(result*100); zs=zs%10; disbuf[0]=zs; display(); } }
void time0() interrupt 1 {
CLK=~CLK; } 中断 #include <reg52.h> #include <intrins.h> #include <absacc.h> #define IN7 XBYTE[0x0007] #define uchar unsigned char uchar code led[]={0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92,
} } void sjb() {
uchar i; for(i=0;i<255;i++) {
XBYTE[0x7fff]=i; delay(10); } for(i=255;i>0;i--) { XBYTE[0x7fff]=i-1; delay(10); } } void zxb() { uchar i; for(i=0;i<255;i++) { XBYTE[0x7fff]=sin[i]; delay(10); } }
延时 #include <reg52.h> #include <intrins.h> #include <absacc.h> #define IN7 XBYTE[0x0007] #define uchar unsigned char uchar code led[]={0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X80, 0X90,0x7F}; uchar disbit[]={0x1,0x2,0x4,0x8}; uchar disbuf[]={0,0,0}; sbit EOC=P3^2; sbit CLK=P3^1;

单片机C编程AD与DA转换部分

单片机C编程AD与DA转换部分



ORG 0000H

SJMP

ORG

SJMP

ORG
▪MAIN:MOV

MOV

MOV

SETB

SETB

SETB
▪READ:MOVX
▪HERE:SJMP

DJNZ

ORG
0000H
MAIN
0013H
INT1
0030H
R1,#30H
;置数据区首址
R7,#08H
;置通道数
DPTR,#7FFF8H ;P2.7=0,指向IN0
第10章 A/D、D/A转换器的应用
本章学习目标
MCS-51单片机与8位A/D、D/A转换器的接口技术
01
MCS-51单片机与12位A/D转换器的串、并行接口技术
02
01
1 A/D转换器的应用
ST CLK
02
1
.
1
IN
0
8

逐次比
八路


A
/
D



0
8
0
9


用EOC
03
IN7
模拟 量
开关
八路 A/D 转换

ORG 0000H

AJMP MAIN

ORG
0030H
▪ MAIN:MOV DPTR,#7FF8H;P2.7=0,且指向IN0

MOV
R1,#30H ;置数据区首地址

MOV R7,#08H ;置通道数

用AVR单片机实现高性能、低成本温度AD转换

用AVR单片机实现高性能、低成本温度AD转换

向端和反向端。电阻 =2 和 =7 对@A< 分压,作为比较器 基 准 电 压 <=,接 >?5;测 温 电 阻 =" 和 电 容 B 组 成 定 时 充电电路,接 >?2;>?C 作为 ="、B 的可控充电电源;>?7 作 为 电 容 B 的 放 电 端 。/34567828 的 各 端 口 可 设 置 为
保持高阻,>?8 输出高电平 <EF 通过 =8 对 B 充电,同 样 用 定 时 器 32 测 出 从 >?8 输 出 高 电 平 到 比 较 器 输 出 跳
变为低电平的时间 37,37DG=8B
2- <EFG<= <EFG<E;
。比较 37 与
32
表 达 式 ,得 到
="D
32=8 37
。=" 只 与
要的参量,但 必 须 通 过 / . 0(模 . 数 )转 换 才 能 送 到 单 片
机处理。实现温度 /.0 转换可用专用 /.0 转换芯片,
或用带 / . 0 转换的单片机,但价格较贵,1 位以上的 / .
0 转换芯片价格更是成倍增加。在竞争激烈的家电行业
中 ,为 了 节 省 成 本 、提 高 产 品 竞 争 力 ,希 望 / . 0 转 换 价
!# ! · "##$
电子控制技术 !""#$!%%%&’"!()&*+,&*-

单片机实现
!#$ !." 高性能、低成本温度 转换
陈国杰
电 饭 煲 、热 水 器 、空 调 、消 毒 柜 等 家 电 越 来 越 多 地
采 用 单 片 机 控 制 ,提 高 产 品 智 能 化 。 温 度 是 这 些 家 电 重

用普通单片机实现低成本高精度AD与DA转换

用普通单片机实现低成本高精度AD与DA转换

用普通单片机实现低成本高精度A/D与D/A转换(之一)摘要:用普通单片机实现低成本的多路A/D与D/A转换,其转换结果为8bit或更高。

关键词:单片机A/D转换D/A转换PWM(脉冲宽度调制)比较器目前单片机在电子产品中已得到广泛应用,许多类型的单片机内部已带有A/D转换电路,但此类单片机会比无A/D转换功能的单片机在价格上高几元甚至很多,本文给大家提供一种实用的用普通单片机实现的A/D转换电路,它只需要使用普通单片机的2个I/O脚与1个运算放大器即可实现,而且它可以很容易地扩展成带有4通道A/D转换功能,由于它占用资源很少,成本很低,其A/D转换精度可达到8位或更高,因此很具有实用价值。

其电路如图一所示:500) {this.resized=true; this.width=500; this.alt='点击查看原图';}; this.style.cursor='hand'" onclick="if(!this.resized) {return true;} else {window.open('/blog/u/40/1144027076.jpg');}" border="0" width="500">图一其工作原理说明如下:1、硬件说明:图一中“RA0”和“RA1”为单片机的两个I/O脚,分别将其设置为输出与输入状态,在进行A/D 转换时,在程序中通过软件产生PWM,由RA0脚送出预设占空比的PWM波形。

RA1脚用于检测比较器输出端的状态。

R1、C1构成滤波电路,对RA0脚送出的PWM波形进行平滑滤波。

RA0输出的PWM波形经过R1、C1滤波并延时后,在U1点产生稳定的电压值,其电压值U1=VDD*D1/(D1+D2),若单片机的工作电压为稳定的+5V,则U1=5V*D1/(D1+D2)。

单片机实现低成本A-D转换

单片机实现低成本A-D转换

单片机实现低成本A/D转换
在前面的文章中分别介绍了两种用普通单片机实现低成本A/D转换的方法,这两种方法中在单片机的外部都要使用到一个比较器,在本文中继续向大家介绍低成本的A/D转换的一种方法,只是这种方法成本会更低,而且外部无需使用比较器。

此种方法的A/D转换精度不高,只有6~7bit,并且被测电压范围较为有限,但在某些精度要求不高,且被测电压值变化不大的场合也很有实用价值,比如温度测量方面。

 其电路如图一所示:
 其工作原理说明如下:
 1、硬件说明:
 图一中的R1、R2和C1构成RC充电电路,被测量通过R1、R2对C1充电。

N1为单片机,本电路中采用MICROCHIP的PIC12C508A来举例说明。

C2为给电源供电用的滤波电路,VD1为保护用稳压二极管,以避免输入电压过高而损坏单片机。

 2、A/D转换过程:。

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 口输‎出到发光二‎极管显示。

单片机AD与DA转换实验报告

单片机AD与DA转换实验报告
void juchibo();
void main()
{
P1=0xff;
while(1)
{
if(key1==0)
sanjiaobo();
if(key2==0)
fangbo();
if(key3==0)
juchibo();
}
}
void sanjiaobo()
{
unsigned int i;
char flag=0;
EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。
C
B
A
选择模拟通道

0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
三.实验原理及内容
1.数据采集_A/D转换
(1)原理
①ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
IOUT2模拟电流输出端2,IOUT1 + I OUT2 =常数
(2)内容和步骤
1内容
1.AT89C51控制DAC0832实现数/模转换(D/A)转换。从单片机输出数据到DAC0832,经其转换成模拟量输出。

单片机: AD、DA转换接口技术

单片机: AD、DA转换接口技术

Single-Chip microcomputer
A/D、D/A转换接口技术
// 外部中断服务程序,设置输出信号状态标识,每按下一次键,状态标志加1 void Int0 () interrupt 1 { k++; t= 0; if(k = = 4) k=0; return; }
Single-Chip microcomputer
Single-Chip microcomputer
A/D、D/A转换接口技术
else if(k = = 3) // 发送三角波信号 { P1 = 0x08; // 三角波指示灯亮 if( t = = 0) i=0; // 设置上升标志 else if ( t = = 0xff) i =1; if ( i= =0) // 数据递增 { P3_6 = 1; P0 = t++; P3_6 = 0; Delay(1); } if(i= =1) { P3_6 = 1; P0 = t--; P3_6 = 0; Delay(1); } } } } // 数据递减
A/D、D/A转换接口技术
1 A/D、D/A转换
单片机应用系统有很多场合是用于信号的检测和对外部设计进 行控制,在很多时候是需要对模拟量进行采集,或者处理,这 些模拟量涉及温度、速度、压力、电流、电压等量。由于单片 机以及计算机的强大计算处理能力,可以将这些模拟量采集到 单片机或者计算机中进行处理。
任务分析及方案的制定
信号的产生可以通过D/A转换器DAC0832来实现,通过单片机向DAC0832 发送不同的数据,就可以使DAC0832输出相对应的模拟量信号,从而得到 期望得到的波形。 方波信号的产生 锯齿波的产生 三角波的产生
Single-Chip microcomputer

单片机技术应用与实践 工作模块9 AD与DA转换器使用

单片机技术应用与实践 工作模块9 AD与DA转换器使用
初级能力:实现单片机对模拟信号的采集。 高级能力:对采集的信号进行A/D转换分析。
任务实施
执行思路
电压信号是模拟信号,通过调节电位器来模拟0~5V连续可变的电 压,使用一款A/D芯片采集电压信号并转换成数字信号,单片机读取数 字信号并在数码管上显示。
待测 电压数码管显 示模块
(2)按照输出数字量的有效位数划分,主要有8位、10位、12位、 14位、16位并行输出等,表示A/D转换器的分辨率。
9.1 模数/数模转换器(AD/DA)简介
(三)A/D转换器的主要分类
(3)按照转化速度划分,主要有超高速转换器(转换速度≤1ns)、 高速转换器(转换速度≤20us)、中速转换器(转换速度≤1ms)、低 速转换器(转换速度≤1s)等。
除并行输出的A/D转换器外,随着单片机串行扩展技术的发展,串 行接口的A/D转换器的应用越来越广泛,较为典型的有基于SPI串行接口 的ADS7950、ADS1118、ADS7952、TLC1549(10位)以及I2C串行接口的 PCF8591等。PCF8591的采样速率取决于I2C总线的采样速率,本任务即 通过PCF8591来实现数据采集。
例2:8位A/D转换器ADC0809,满量程输入电压为5V,分辨率为8位,能 分辨出输入电压为5V/2^8=19.53mV的变化。
9.1 模数/数模转换器(AD/DA)简介
(2)转换时间和转换速率。 转换时间是指A/D转换器完成一次转换所需要的时间。转换时间的 倒数为转换速率。根据奈奎斯特采样定理,当采样频率大于所采样模拟 信号最高频率的两倍时,信号才不会发生混叠失真。实际使用时,为了 更加逼真地恢复原始模拟信号,建议A/D采样频率为信号最高频率的5~ 10倍。
(4)线性度。A/D转换器实际的转换数值与理想直线的最大误差。 在测控系统中,传感器和A/D转换器的线性度共同决定整个系统的线性 度。A/D转换器的线性度如图所示。

单片机AD和DA信号转换

单片机AD和DA信号转换

目录1 题目背景与意义 (2)2 设计题目介绍 (2)2.1 设计题目 (2)2.2 题目要求 (2)3 系统总体框架 (3)4 系统硬件设计 (3)4.1 主控制芯片8051 (3)4.1.1 8051引脚说明 (4)4.1.2 单片机最小系统 (5)4.2 A/D转换电路 (6)4.2.1 ADC0832 (7)4.3 D/A转换电路 (9)4.3.1 数模转换器DAC0832 (9)4.3.2 外接运放 (12)4.4 LED显示电路 (13)6 结论 (14)参考文献 (15)1 题目背景与意义本课程设计以《计算机控制系统》课程理论为基础,以其他电子类、计算机及接口类相关课程内容为辅助,在实践中锻炼学生的系统设计能力、理论应用能力、总结归纳能力以及自我学习能力,提高其实践能力、创新意识与创业精神。

2 设计题目介绍2.1 设计题目设计一个基于单片机的具有A/D和D/A功能的信号测控装置。

要求该信号测控装置能够接入典型传感器、变送器信号,同时可输出标准电压/电流信号。

并满足抗干扰、通用性、安全性、性价比等原则性要求。

标准电压/电流信号此处定为:0~5V/4~20mA (0~20mA)2.2 题目要求1. 基本要求:1) 充分理解题目要求,确定方案。

2) 合理选择器件型号。

3) 用1号图纸1张或者采用Protel软件画出电原理图。

4) 用1号图纸1张画出软件结构框图。

5) 写出设计报告,对课程设计成品的功能进行介绍及主要部分进行分析与说明。

6) 每天写出工作日记。

2. 发挥部分:1) 可将系统扩展为多路。

可在此系统中扩展键盘、显示(LCD/LED)、与上位机通讯功能。

2) 完成以上基本设计部分之后,可以运用Protues仿真软件对设计结果进行相应的编程和仿真,调试测控系统并观察其运行结果(可以分部分完成)。

3 系统总体框架图1 总体设计方案此控制系统的硬件设计框图如图1所示。

被控对象经传感器,变送器输入电压信号或电流信号,经模数转换模块中调理电路送入A/D 转换器,通过采样和模数转换,所检测到的电压信号和送入单片机进行比较,以显示模块显示结果,声光报警判断是否正常工作。

单片机ad da实验报告

单片机ad da实验报告

单片机ad da实验报告单片机AD/DA实验报告1. 引言单片机(Microcontroller)是一种集成了处理器、存储器和输入输出接口等功能的微型电子计算机系统。

作为现代电子技术的重要组成部分,单片机在各个领域都有广泛的应用。

其中,AD(模数转换)和DA(数模转换)是单片机中常见的功能模块,用于将模拟信号转换为数字信号或将数字信号转换为模拟信号。

本实验旨在通过实际操作,了解单片机AD/DA的原理和应用。

2. 实验目的通过本次实验,我们的目标是:- 理解AD/DA的基本原理和工作方式;- 掌握单片机AD/DA的编程方法;- 实现AD/DA功能的应用。

3. 实验原理AD(Analog-to-Digital)转换是将模拟信号转换为数字信号的过程。

单片机通过采样和量化的方式将连续的模拟信号转换为离散的数字信号。

DA(Digital-to-Analog)转换则是将数字信号转换为模拟信号的过程。

单片机通过将数字信号经过数值处理,再通过电压输出方式将其转换为模拟信号。

4. 实验器材本次实验所需的器材包括:- 单片机开发板;- AD/DA转换模块;- 电源供应器;- 信号发生器;- 示波器。

5. 实验步骤5.1 连接实验电路将AD/DA转换模块与单片机开发板连接,按照实验电路图进行正确的接线。

5.2 编写程序使用C语言编写单片机程序,实现AD/DA的功能。

根据实验需求,可以选择使用单片机的内部AD/DA模块,也可以通过外部模块进行扩展。

5.3 烧录程序将编写好的程序烧录到单片机开发板中,确保程序可以正常运行。

5.4 实验测量使用信号发生器产生模拟信号,并通过AD/DA转换模块输入到单片机中。

通过示波器观察和测量AD/DA转换的结果,并与理论值进行对比。

5.5 数据处理将单片机采集到的数字信号进行处理,如滤波、放大等操作,再通过DA转换模块输出为模拟信号。

通过示波器观察和测量输出信号的波形和特性。

6. 实验结果与分析通过实验测量和数据处理,我们可以得到AD/DA转换的结果。

《单片机原理与应用》AD和DA转换实验

《单片机原理与应用》AD和DA转换实验

《单片机原理与应用》AD和DA转换实验一、实验目的1、学习AD转换芯片PCF8591的基本共组原理。

2、掌握PCF8591的编程方法二、实验说明PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。

PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。

PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。

在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

1、地址寄存器I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活,该地址包括固定部分和可编程部分。

可编程部分必须根据地址引脚A0. A1和A2来设置。

在I2C总线协议中地址必须是起始条件作为第一个字节发送。

地址字节的最后一位是用于设置以后数据传输方向的读写位。

如图8-1所示。

图8-1 地址寄存器2 控制字寄存器发送到PCF8591的第二个字节将被存储在控制寄存器,用于控制器件功能,控制寄存器的高半字节用于容许模拟输出,和将模拟输入编程为单端或差分输入。

低半字节选择一个由高半字节定义的模拟输入通道。

如果自动增量(auto-increment)标志置1,每次AD转换后通道号将自动增加。

如果自动增量(auto-increment)模式是使用内部振荡器的应用中所需要的,那么控制字节中模拟输出容许标志应置1.这要求内部振荡器持续运行,因此要防止振荡器启动延时的转换错误结果。

模拟输出容许标志可以在其他时候复位以减少静态功耗。

选择一个不存在的输入通道将导致分配最高可用的通道号。

所以,如果自动增量(auto-increment)被置1,下一个被选择的通道将总是通道0.两个半字节的最高有效位(即第7位和第3位)是留给未来的功能,必须设置为逻辑0.控制寄存器的所有位在上电复位后被复位为逻辑0.DA转换器和振荡器在节能时被禁止。

单片机 DA、AD转换实验

单片机 DA、AD转换实验

实验目的: 实验目的:
1.掌握A/D转换与单片机的接口方法 .掌握 转换与单片机的接口方法. 转换与单片机的接口方法 2.了解A/D芯片 .了解 芯片ADC0809转换性能及编程 转换性能及编程. 芯片 转换性能及编程 3.通过实验了解单片机如何进行数据采集. .通过实验了解单片机如何进行数据采集
实验程序框图
源代码: 源代码:
A_DPORT EQU 8000H ;0809通道0 地址 ORG 0000H LJMP START ORG 0003H LJMP INT_0 ORG 0040H START: MOV SP,#60H MOV R7,#0FFH ;初始化 SETB IT0 SETB EA SETB EX0 ;INT0 允许 A_D:
MOV DPTR,#A_DPORT MOVX @DPTR,A ;启动 A_D CJNE R7,#00H,$ ;等待 A_D 转 换结束 CPL A MOV P1,A ;数据输出 MOV R7,#0FFH ;清读数标志 SJMP A_D INT_0: MOVX A,@DPTR ;读 A_D 数据 MOV R7,#00H ;置读数标志 RE实验
实验要求: 实验要求:
利用实验板上的ADC0809做A/D转换器,利 做 转换器, 利用实验板上的 转换器 用实验板上的电位器W1提供模拟量输入。编制程 提供模拟量输入。 用实验板上的电位器 提供模拟量输入 将模拟量转换成二进制数字量, 序,将模拟量转换成二进制数字量,用发光二极管 将模拟量转换成二进制数字量 显示. 显示
实验电路及连线: 实验电路及连线: CS0809接8000H. 模块电位器V-OUT点(即中心 抽头)接至ADC0809的IN0(通道0).EOC连 P3.2(INT0).将单片机的P1.0~P1.7接至八位发光二 极管L1 -- L8.

用普通单片机实现低成本高精度A_D与D_A转换

用普通单片机实现低成本高精度A_D与D_A转换

智能电子版电子报/2003年/06月/08日/第012版/用普通单片机实现低成本高精度A/D与D/A转换喻峰 本文介绍一种用普通单片机实现的A/D 转换电路,本设计只用普通单片机的2个I/O 口加1个运算放大器即可实现1路A/D转换,而且很容易扩展成4通道A/D转换。

该电路占用资源少,成本低,A/D转换精度可达到8位或更高,很具实用价值。

其工作原理如下:1.硬件电路电路如图1所示。

RA0和RA1为单片机的I/O口。

进行A/D转换时,通过软件产生PWM,从RA0口送出预定占空比的PWM波形,RA1口用于检测比较器输出端的状态。

R1、C1构成滤波电路,对RA0口送出的PWM波形进行平滑滤波。

RA0输出的PWM 波形经过R1、C1滤波并延时后,在U1产生稳定的电压,其电压值U1=V-(DD)×D1/(D1+ D2)。

LM324作比较器用,其负输入端的电压U1与正输入端的模拟电压值进行比较,当U1大于模拟量输入电压时,比较器的输出端为低电平,反之为高电平。

2.A/D转换过程如果使RA0输出PWM波形,且占空比由小到大逐渐变化,则U1的电压随之由低到高。

当U1电压超过被测电压时,比较器的输出端由高电平变为低电平,因此可以认为在比较器输出电压由高到低跳变的瞬间被测的模拟量与U1的电压相等。

由于U1的电压值=V-(DD)×D1/(D1+ D2),当V-(DD)为固定值时,其电压值取决于PWM波形的占空比,而PWM的占空比由内部用于控制PWM输出的寄存器的值决定。

若用寄存器A来存放RA0输出的PWM的占空比值D1,在RA1口由“1”变为“0”的瞬间,A寄存器的值D1即为被测电压的A/D转换值,其A/D转换值为8位数。

如果用16住寄存器来作输出PWM的占空比,则可达到16位。

3.A/D转换误差分析及误差解决(1)误差分析A/D转换的误差主要由以下几个方面决定。

1)单片机的电源电压V-(DD):在此A/D 转换中,V-(DD)电压不稳定是造成A/D转换误差的主要原因。

单片机AD与DA转换实验报告

单片机AD与DA转换实验报告

AD与DA转换实验报告一.实验目的⑴掌握A/D转换与单片机接口的方法;⑵了解A/D芯片0809转换性能及编程方法;⑶通过实验了解单片机如何进行数据采集。

⑷熟悉DAC0832 内部结构及引脚。

⑸掌握D/A转换与接口电路的方法.⑹通过实验了解单片机如何进行波形输出。

二.实验设备装有proteus的电脑一台三.实验原理及内容1.数据采集_A/D转换(1)原理①ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成.多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

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

②ADC0809引脚结构:D7 ~ D0:8位数字量输出引脚。

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

VCC:+5V工作电压。

GND:地。

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

REF(-):参考电压负端.START:A/D转换启动信号输入端。

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

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

CLK:时钟信号输入端(一般为500KHz).A、B、C:地址输入线。

(2) 内容和步骤1.硬件电路设计: 设计基于单片机控制的AD 转换应用电路。

AD 转换芯片采用ADC0809。

ADC0809的通道IN3输入0-5V 之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。

ADC0809的VREF 接+5V 电压。

2. 软件设计: 程序设计内容(1) 进行A/D 转换时,采用查询EOC 的标志信号来检测A/D 转换是否完毕,经过数据处理之后在数码管上显示。

(2) 进行A/D 转换之前,要启动转换的方法:ABC =110选择第三通道.ST =0,ST =1,ST =0产生启动转换的正脉冲信号2. D/A 转换及数字式波形发生器(1) 原理典型D/A 转换DAC0832芯片V cc 芯片电源电压, +5V ~+15V VREF 参考电压, —10V ~+10VRFB 反馈电阻引出端, 此端可接运算放大器输出端 AGND 模拟信号地 DGND 数字信号地DI7~ DI0数字量输入信号。

AD与DA转换实验详解

AD与DA转换实验详解
{
PwmOut(i);
j=100;
while(--j);
}
}
}
void Delay(uint16 ms)
{int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
仿真波形如右图所示:
2、设计程序,利用STC12C5A60S2单片机内部PCA模块产生PWM信号,经低通滤波后输出正弦波。
此外,CCAP1H(字节地址为FBH)和CCAP1L(字节地址为EBH)分别是PCA模块1捕捉/比较寄存器的高8位和低8位。在8位PWM模式下,当PCA计数器低8位(CL)的值小于CCAP1L时,PWM1引脚输出为低,大于或等于CCAP1L时,PWM1引脚输出为高;另外,当CL的值由FFH加到00H(溢出)时,CCAP1H的当前值自动加载到CCAP1L中,因此,程序只需对CCAP1H进行设定,即可在PWM1引脚稳定输出相应占空比的PWM信号。
void PwmInit()
{CMOD=0x08;
CCAPM1=0x42;
CR=1;
}
void PwmOut(uint8 Duty)
{CCAP1H=255-Duty;
}
void main()
{
int i,j;
PwmInit();
/*while(1)
{PwmOut(30);
Delay(800);
PwmOut(120);
ADC_CONTR&=~0x10;
return ADC_RES;
}
void UartInit()
{
TMOD=0x20;
TH1=TL1=0xFD;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用普通单片机实现低成本高精度A/D与D/A转换(之一)摘要:用普通单片机实现低成本的多路A/D与D/A转换,其转换结果为8bit或更高。

关键词:单片机A/D转换D/A转换PWM(脉冲宽度调制)比较器目前单片机在电子产品中已得到广泛应用,许多类型的单片机内部已带有A/D转换电路,但此类单片机会比无A/D转换功能的单片机在价格上高几元甚至很多,本文给大家提供一种实用的用普通单片机实现的A/D转换电路,它只需要使用普通单片机的2个I/O脚与1个运算放大器即可实现,而且它可以很容易地扩展成带有4通道A/D转换功能,由于它占用资源很少,成本很低,其A/D转换精度可达到8位或更高,因此很具有实用价值。

其电路如图一所示:500) {this.resized=true; this.width=500; this.alt='点击查看原图';}; this.style.cursor='hand'" onclick="if(!this.resized) {return true;} else {window.open('/blog/u/40/1144027076.jpg');}" border="0" width="500">图一其工作原理说明如下:1、硬件说明:图一中“RA0”和“RA1”为单片机的两个I/O脚,分别将其设置为输出与输入状态,在进行A/D 转换时,在程序中通过软件产生PWM,由RA0脚送出预设占空比的PWM波形。

RA1脚用于检测比较器输出端的状态。

R1、C1构成滤波电路,对RA0脚送出的PWM波形进行平滑滤波。

RA0输出的PWM波形经过R1、C1滤波并延时后,在U1点产生稳定的电压值,其电压值U1=VDD*D1/(D1+D2),若单片机的工作电压为稳定的+5V,则U1=5V*D1/(D1+D2)。

图一中的LM324作为比较器使用,其输入负端的U1电压与输入正端的模拟量电压值进行比较,当U1大于模拟量输入电压时,比较器的输出端为低电平,反之为高电平。

2、A/D转换过程:如果使RA0输出PWM波形,其占空比由小到大逐渐变化,则U1的电压会由小到大逐渐变化,当U1电压超过被测电压时,比较器的输出端由高电平变为低电平,因此可以认为在该变化的瞬间被测的模拟量与U1的电压相等。

由于U1的电压值=VDD*D1/(D1+D2),当VDD固定时,其电压值取决于PWM波形的占空比,而PWM的占空比由单片机软件内部用于控制PWM输出的寄存器值决定,若软件中用1个8位寄存器A来存放RA0输出的PWM的占空比值D1,因此在RA1检测到由“1”变为“0”的瞬间,A寄存器的值D1即为被测电压的A/D转换值,其A/D转换结果为8位。

如果用16位寄存器来作输出PWM的占空比,则A/D转换值可达到16位。

3、A/D转换误差分析及解决办法:A/D转换的误差主要由以下几个方面决定,分别说明如下:(1)单片机的电源电压VDD:在该A/D转换中,VDD电压是造成A/D转换误差的主要原因,如果使VDD电压精度做到较高,则A/D转换误差可以做到很小,在VDD电压精度为0.5%情况下,实际的A/D转换误差小于1%。

(2)软件产生的PWM占空比:若用于产生PWM的软件设计不良,会使存放占空比的寄存器值与实际输出的PWM占空比不一致,这会导致测量误差。

(3)比较器输入端的失调电压:该电压对A/D转换精度有一定影响,但影响较小。

(4)RC滤波电路的纹波:在R1、C1取值不当的情况下,U1处的电压纹波较大,并且延时时间不够,会使A/D转换产生误差,因此R1、C1取值不能太小,但太大又会影响A/D转换速度,推荐使用图一中所示的R1、C1参数,在纹波合理的情况下,其转换误差也可通过软件消除。

A/D转换误差的解决办法:(1)对VDD造成的误差,只能通过提高VDD电压精度来解决,它相当于A/D转换的基准电压。

(2)对于软件中PWM设计不良导致的误差,可修改软件进行解决,本文提供了用软件产生PWM的程序流程图,实际使用中可按此流程设计程序。

(3)对比较器及RC滤波电路的纹波导致的误差,在软件中可通过上、下检测法进行消除,即先将PWM的占空比由小到大变化,使U1电压由低往高逐渐变化,在比较器输出端变化时记录其A/D转换值,再将PWM的占空比由大到小变化,使U1电压由高到低变化,在比较器输出端变化时记录其A/D转换值,将两次的A/D转换值进行平均,可有效地消除这两种误差。

(4)对A/D转换值进行数字滤波,如多次转换求平均值等。

数字滤波消除误差的方法很多,在此不再赘述。

4、A/D转换速度及提高办法:由于该A/D转换是通过PWM滤波后再进行比较来完成的,其PWM的产生与滤波都需要一定的时间,因此其A/D转换速度较慢,适用于对A/D转换速度要求不高的产品中,其A/D转换速度取决于以下几个方面:(1)单片机的运行速度:单片机的运行速度越高则PWM的频率可以越高,RC值就可以取得越小,其延时时间也可以更短,转换速度就更快。

(2)被测电压值的大小:由于U1电压时是由小到大逐渐加大的,当被测电压值较小时,U1电压上升到相应值的时间就越短,完成A/D转换的速度就越快。

(3)初始占空比:初始占空比越高,U1电压较大,其上升到被测电压值的时间也就会越短,完成A/D转换的速度也就越快。

由上所述,A/D转换的速度可以通过提高单片机的工作频率,并在预知被测电压范围时尽可能地设置较高的初始占空比值来加快转换速度,如果所要求的A/D转换精度要求不高,还可以在软件中缩短PWM输出的延时时间来提高A/D转换速度。

若单片机带有外部电平变换中断和定时器中断,其A/D转换的精度和速度还可以得到提高。

5、输入电压的测量范围:A/D转换的输入电压测量范围为0V至单片机的电源电压(VDD),若需要提高被测电压范围,可将输入电压通过电阻分压后进行测量,但其A/D转换的误差会受分压电阻影响。

6、A/D转换通道的多路扩展:图中所用的运算放大器为LM324,该集成电路内部带有4个运放,其余3个运放的输入端可分别作为另外3个A/D转换通道,其输出端与单片机连接,在软件上略作修改,就可以在不增加成本的情况下实现4路A/D转换。

7、用同样的工作原理实现D/A转换:如图二所示,可使该电路很容易地只用单片机的一个I/O脚实现D/A转换功能。

其输出的模拟量电压Vout=VDD*D1/(D1+D2)。

该输出电压带有纹波,当RC值足够大时,该纹波值几乎为零,可忽略不计。

500) {this.resized=true; this.width=500; this.alt='点击查看原图';}; this.style.cursor='hand'" onclick="if(!this.resized) {return true;} else {window.open('/blog/u/40/1144027156.jpg');}" border="0">图二8、单片机的A/D转换软件程序流程图:500) {this.resized=true; this.width=500;this.alt='点击查看原图';}; this.style.cursor='hand'" onclick="if(!this.resized) {return true;} else {window.open('/blog/u/40/1144027213.jpg');}" border="0">用普通单片机实现低成本A/D转换(二)摘要:用普通单片机实现低成本的多路A/D转换。

关键词:单片机A/D转换比较器计时器在此前笔者曾介绍了普通单片机实现低成本A/D转换的一种方法,在实际使用中还有其它的不少方法可以实现低成本A/D转换,在本文中我们继续为电子设计者们提供又一种A/D转换方法,该方法同样占用较少的单片机资源,成本也很低,仍然有很强的实用性,该电路曾在锂离子电池充电器中作A/D转换使用,效果良好。

其电路如图一所示:500) {this.resized=true; this.width=500; this.alt='点击查看原图';}; this.style.cursor='hand'" onclick="if(!this.resized) {return true;} else {window.open('/blog/u/40/1144028739.jpg');}" border="0" width="500">图一其工作原理说明如下:1、硬件电路说明:图一中的R1和N1(TL431)产生一个2.495V的稳定电压,作为A/D转换比较基准。

R2、V1、VD1、VD2和R3构成一个恒流源电路给C1充电,C1上的电压与恒流源的电流大小及充电时间成正比。

MC74HC4051为8选1模拟开关,其输入通道由单片机控制来选择。

LM393作为比较器,当C1上的电压由低到高上升到超过模拟开关输出电压时,其输出端会从低电平转变为高电平。

“RA0”、“RA1”和“RA2”为单片机的3个I/O脚,RA0设置为输入状态,用于检测比较器输出电平变化,RA1和RA2设置为输出状态,RA1输出高电平时,V2导通,用于将C1上的电荷放空,RA2用于选择模拟开关的输入通道。

2、A/D转换过程:首先RA2输出低电平,使模拟开关选择X0(基准电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使V2截止,此时C1上的电容开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压Vref)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T1。

接着RA2输出高电平,使模拟开关选择X1(被测电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使V2截止,此时C1上的电容又开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T2。

由于C1是被恒流充电,因此C1上的电压与充电时间成正比,即V=T*k。

相关文档
最新文档