单片机实验六 D-A与A-D转换
- 格式:pdf
- 大小:105.68 KB
- 文档页数:8
实验六 ADC0809AD转换实验一、实验目的1、掌握ADC0809AD芯片的工作原理和使用方法。
2、掌握如何使用51单片机配合ADC0809AD芯片实现模拟量转换。
二、实验原理ADC0809AD是一种8位分辨率、并行输出、单通道,3MHz 工作速率的A/D转换器。
ADC 有两个输入电压端子,IN+和IN-,它们之间加入了一个内部参考电压源(RE),所以在输入模拟信号时常在IN+端连接信号输入,而IN-端接地。
当选用RE = +2.5 V时,IN+的输入范围约为0-VREF,在本实验中选用的是RE = +5 V,所以IN+的输入范围约为0-5V。
当外部触发信号TRIGGER开启后,ADC执行转换操作。
在转换时,电压采样保持时间通常为 100 ns,最长转换时间为 200 us,当转换结束时,ADC将数字输出置在低电平并发出一个中断请求(INTR)信号。
转换结果可以通过 8个输出线路(DB0-DB7)获得。
三、实验器材2、*1 9针座(1x9 Pin Socket)。
3、*1 51单片机学习板。
4、*1 电阻10KΩ。
5、*1 电压源。
6、*1 面包板。
7、*5 条杜邦线。
四、实验步骤1、根据下表将ADC0809AD芯片插入到面包板中。
ADC0809AD引脚码ADC0809AD引脚名称功能1 A0- A/D输入(低、多路)引脚17 AGND 模拟地18 VREF/2 参考电压输出19 VCC 数字电源2、将9脚座插入面包板的横向边缘上。
3、使用杜邦线将ADC0809AD转换器连接到学习板上,并根据原理部分对芯片引脚进行接线。
4、将一个10KΩ的电阻连接到ADC0809AD芯片的IN+引脚和GND之间。
6、使用杜邦线将ADC0809AD芯片的DB0-DB7引脚连接到学习板的P0.0-P0.7引脚上。
7、将学习板的P0.0-P0.7引脚转为输出模式。
五、实验代码#include <reg52.h>// SFR位定义sfr ADC_CONTR = 0xBC; // ADC控制寄存器sfr ADC_RES = 0xBD; // ADC结果寄存器sfr ADC_RESL = 0xBE; // ADC结果低字节寄存器sfr P0 = 0x80; // P0口// 公用函数void delay(int time) // 延时函数{int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 125; j++);}}while (1) {ADC_CONTR |= 0x08; // 开始转换while (!(ADC_CONTR & 0x10)); // 等待转换结束P0 = ADC_RES; // 将结果输出到P0口delay(1000); // 延时1000ms}}根据程序分析,程序采用了循环语句控制ADC的转换、输出,程序中实现的是ADC的一次转换。
单片机系统设计及应用实验报告第次实验实验名称:D/A实验专业:姓名:学号:同组人员:学号:实验地点:实验时间:2016.12.08评定成绩:审阅教师:目录实验目的 (1)实验内容及要求 (4)实验原理及程序设计流程图 (5)调试过程及相关记录 (6)正确源代码 (6)实验心得 (7)(1)掌握单片机与D/A的接口及编程方法;(2)通过D/A动态波形输出进一步理解D/A的工作原理;(3)结合实验六中的A/D来检验软硬件的正确性。
(4)进一步了解单片机系统地址分配概念二.实验内容及要求DAC0832是内含双锁存器且可与单片机8051直接接口的8位D/A,从实验板的电原理图可见,当0832管脚ILE为高,CS2为低时,8051对0832写入待转换的8位数字量,当对0832写入任意数(WR、CS2都为低)时,8051启动D/A转换。
把具有一定规律变化的数据连续送到0832,可用示波器在运放741输出端看到一定规律的动态波形。
将实验八中A/D所存数据直接送到0832,在D/A输出端也可用示波器观察到还原后的A/D输入端信号。
注意:在实验前,应先检查DAC0832的参考电压是否正确。
(要求DAC0832的参考电压值为Vref = -5V,用万用表观察DAC0832芯片的8脚电压值。
若不对,可调节实验板上的电位器W3来改变D/A的参考电压值。
)三.实验原理DAC0832的硬件连接如上图,ILE一直默认高电平,该接口可以不连接。
CS2片根据地址,选接低电平。
这种连接方式没有使用缓冲,直接进行数据传送。
五.调试过程及相关数据记录检测参考电压的值,约为-4.99V,不用修正。
三角波和锯齿波代码较简单,没有修改过程。
恢复波形的过程中,最开始的代码是将A/D和D/A过程分开,先进行256点采样,再进行D/A,结果导致波形与波形之间存在一长段的间隔。
之后将D/A代码放入中断过程中,传送数据到6116时也将数据传给0832,波形连续。
实验六基本接口实验AD转换实验1第七章基础应用实验7.1 A/D转换实验7.1.1 实验目的? 通过试验掌握模数转换(A/D)的原理。
? 了解模拟输入通道中采样保持的原理和作用. ? 掌握S3C44B0X处理器的A/D转换功能。
7.1.2 实验设备? 硬件:Embest EduKit-III实验平台,Embest ARM标准/增强型仿真器套件, PC机。
? 软件:Embest IDE Pro ARM集成开发环境,Windows 98/2000/NT/XP。
7.1.3 实验内容? 了解采样保持器与A/D转换器的接口电路。
? 设计分压电路,利用S3C44B0X集成的A/D模块,把分压值转换为数字信号,并观察转换结果。
7.1.4 实验原理1. A/D转换器(ADC)随着数字技术,特别是计算机技术的飞速发展与普及,在现代控制、通信及检测领域中,对信号的处理广泛采用了数字计算机技术。
由于系统的实际处理对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别和处理这些信号,必须首先将这些模拟信号转换成数字信号,这就必须用到A/D转换器。
A/D转换器的类型、工作原理和主要性能指标请参照触摸屏试验部分。
2. A/D 转换的一般步骤CPSv(It)Sv(It)ADC的量化编码电路...Dn-1D1D0ADC输入模拟电压取样保持电路取样展宽信号数字量输出(n位)图7-1 模拟量到数字量的转换过程模拟信号进行A/D转换的时候,从启动转换到转换结束输出数字量,需要一定的转换时间,在这个转换时间内,模拟信号要基本保持不变。
否则转换精度没有保证,特别当输入信号频率较高时,会造成很大的转换误差。
要防止这中误差的产生,必须在A/D转换开始时将输入信号的电平保持住,而在A/D转换结束后,又能跟踪输入信号的变化。
因此,一般的A/D转换过程是通过取样、保持、量化和编码这四个步骤完成的。
一般取样和保持主要由采样保持器来完成,而量化编码就由A/D转换器完成。
试验六、A/D转换实验和D/A转换实验一、实验目的1. 学习理解模/数信号转换的基本原理。
2. 掌握模/数转换芯片 ADC0809 的使用方法。
二、实验设备PC 机一台,TD-PITE 实验装置或 TD-PITC 实验装置一套,万用表一个。
三、实验内容编写实验程序,将ADC单元中提供的0V~5V信号源作为ADC0809的模拟输入量,进行A/D转换,转换结果通过变量进行显示。
四、实验原理ADC0809 包括一个 8 位的逐次逼近型的 ADC 部分,并提供一个 8 通道的模拟多路开关和联合寻址逻辑。
用它可直接输入 8 个单端的模拟信号,分时进行 A/D 转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。
ADC0809 的主要技术指标为:分辨率:8 位单电源:+5V总的不可调误差:±1LSB转换时间:取决于时钟频率模拟输入范围:单极性 0~5V时钟频率范围:10KHz~1280KHzADC0809 的外部管脚如图所示,地址信号与选中通道的关系如表所示。
模/数转换单元电路图如图4.48所示:五、实验步骤1.按图4.49连接实验线路。
2.编写实验程序,经编译、链接无误后装入系统。
.3.将变量VALUE添加到变量监视窗口中。
4.在JMP START语句行设置断点,使用万用表测量ADJ端的电压值,计算对应的采样值,然后运行程序。
5.程序运行到断点处停止运行,查看变量窗口中VALUE的值,与计算的理论值进行比较,看是否一致(可能稍有误差,相差不大)。
6.调节电位器,改变输入电压,比较VALUE与计算值,反复验证程序功能。
实验程序清单()SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSPUBLIC VALUE ;设置全局变量以便变量监视DATA SEGMENTVALUE DB ? ;AD转换结果DATA ENDSCODE SEGMENTASSUME CS:CODE,CD:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, 640H ;启动AD采样OUT DX, ALCALL DALLYIN AL, DX ;读AD采样结果MOV VALUE,AL ;将结果送变量JMP START ;在此处设置断点,观察变量窗口中的value值DELAY: PUSH CXPUSH AXMOV CX, 100HA5: MOV AX, 0800HA6: DEC AXJNZ A6LOOP A5POP AXPOP CXRETCODE ENDSEND START六、实验结果和截图在JMP处设置断点,以便观察变量窗口中的value值:D/A 转换实验一、实验目的1.学习数/模转换的基本原理。
单片机A/D、D/A转换实验硬件实验十三D/A转换实验51/96/88一、实验要求利用DAC0832编制程序产生锯齿波、三角波、正弦波。
三种波轮流显示用示波器观看。
二、实验目的1、了解D/A转换的基本原理。
2、了解D/A转换芯片0832的性能及编程方法。
3、了解单片机系统中扩展D/A转换的基本方法。
三、实验电路及连线用示波器探头接触输出观察显示波形。
四、实验说明1、D/A转换是把数字量转换成模拟量的变换实验台上D/A电路输出的是模拟电压信号。
要实现实验要求比较简单的方法是产生三个波形的表格然后通过查表来实现波形显示。
2、产生锯齿波和三角波的表格只需由数字量的增减来控制同时要注意三角波要分段来产生。
要产生正弦波较简单的方法是造一张正弦数字量表。
即查函数表得到的值转换成十六进制数填表。
D/A转换取值范围为一个周期采样点越多精度越高些。
本例采用的采样点为256点/周期。
3、8位D/A转换器的输入数据与输出电压的关系为U0∽-5VUref/256×N U-5V∽5V2·Uref/256×N-5V 这里Uref为5V 五、实验框图否是开始置计数器初值查表读波形数据启动D/A 改变计数器及表指针转换完毕H13.asm CS0832 equ 0a000h mov dptr CS0832 mov a 0 movx dptr a mov a 40h movx dptr a mov a 80h movx dptr a mov a 0c0h movx dptr a mov a 0ffh movx dptr a ljmp end 硬件实验十四A/D转换实验51/96/88一、实验要求利用实验板上的ADC0809做A/D转换器实验板上的电位器提供模拟量输入编制程序将模拟量转换成二进制数字量用8255的PA口输出到发光二极管显示。
二、实验目的1、掌握A/D转换与单片机的接口方法。
2、了解A/D芯片ADC0809转换性能及编程。
实验六AD转换实验源程序一、实验原理摘要ADC0809作为A/D转换器可将模拟信号转换为数字信号,借助于发光二极管显示出来。
用定时方式、查询方式和中断方式都可完成A/D转换。
EOC为A/D 转换结束的标志。
当发光二极管全灭时,说明电位器输出的OV模拟信号。
当发光二极管全亮时,说明电位器输出的是5V模拟信号,此时EOC=1,说明A/D 转换结束。
二、实验内容用电位器作模拟量输入,送入ADC0809,将模拟量转换为数字信号后,再送入80C51中,从P1口输出并显示。
参考程序:1、定时法ORG 0000HLJMP MAINORG 0030HMAIN:MOV DPTR,#8000HLOOP:MOVX @DPTR,A;启动ADC0809LCALL DELAYMOVX A,@DPTRMOV P1,ALJMP LOOPDELAY:MOV R0,#65L1:DJNZ R0,L1RETEND2、查询法ORG 0000HLJMP MAINORG 0030HMAIN:MOV DPTR,#8000HLOOP:MOVX @DPTR,AL1:JNB P3.0,L1MOVX A,@DPTRMOV P1,ALJMP LOOPEND3、中断法ORG 0000HLJMP MAINORG 0003HLJMP DSHORG 0030HMAIN:SETB EASETB EX0MOV DPTR,#8000HMOV @DPTR,ASJMP $DSH:PUSH AMOVX A,@DPTRMOV P1,AMOVX @DPTR,APOP ARETIEND三、实验步骤1、硬件连线IN0——电位器输出AD-CS——CS0EOC——INT0(查询法时接P3.0,中断法时接P3.2)P1.0-P1.7——LED0-LED72、新建文件、保存文件、新建项目——加入模块文件——取消包含文件——编写程序并保存。
3、点击仿真器——仿真器设置——好4、运行程序,观察8个发光二极管的现象。
实验六:AD采样和DA输出实验一、实验目的1. 熟悉HK-DSP5416的系统硬件;2. 熟悉CODEC芯片TLC320AD50C作为A/D的原理;3. 了解ADC1571和DAC5619的工作方式;4. 了解MCBSPDE基本原理和设置;5. 学习并行接口AD/DA的设计方法。
二、实验内容把AD采样的值直接输出到DA。
三、实验原理HK-DSP5416的AD/DA模块包括10bitAD、12bitDA和语音芯片,型号分别为:TLV1571:TI的10bit高速并行ADC,最高转换速率:1.25MSPS。
TLV5619:TI的12bit高速并行DAC,电压输出,建立时间1us。
TLC320AD50C:TI的SIGMA-DELTA型单片音频接口芯片(AIC)。
它内部集成了16位的D/A和A/D转换器,采样速率最高可达22.05kb/s,其采样速率可通过DSP编程来设置。
AD、DA数据接口采用并行接口,由于两个芯片与DSP外部数据总线宽度各不相同,采用小数的表示方法,便于处理。
数据总线的D15未接,作为符号位,其余各位按高位对齐。
AD50采用缓冲串口与DSP相接。
C5416有三个多通道缓冲串口(McBSP),AD50使用串口0。
四、实验仪器HK-实验箱DSP 计算机DSP仿真器五、实验步骤1、用示波器测量信号源板SOUT2信号输出,确认信号输出在0-4V之间。
2、将用连线联接信号板的SOUT2及AD/DA板上的“模拟入”,信号源板的“模拟出”接示波器。
3、编写程序,AD采集SOUT2的波形,采集到的数值发送到DA又转化为模拟量。
调试以下程序,观常示波器的输出,应该得到与SOUT2相似的波形(注意幅度有变化)。
AD/DA综合参考代码如下:在定时器中断子程序中将读入AD的数据输出到DA。
unsigned ioport port6000,porta000,porte000; //定义ad/da芯片读写端口unsigned cr0,cr1,temp;unsigned *samplePointer;main(){system_init();timer0_init();samplePointer=(unsigned *)malloc(256);//Initialize the AD1571//AD1571 D9-D0 ===>DSP D14-D3//CR0//D7 0:HARDWARE START 1:SOFTWARE START//D6 0:INT 1:EOC//D5 0:Internal Clock 1:External Clock//D4 0:Normal 1:Power Down//D3 0:Single Channel 1:Sweep Modecr0=0x0080<<5;//CR1//D6 0:INT.OSC.SLOW 1:INT. OSC. FAST//D3 0:Binary 1:2s Complement//D2 0:Enable Self Test 1:Register Read back//0 CONVERSION result READREG = 0//1 SELF TEST 1 result//2 SELF TEST 2 result//3 SELF TEST 3 result//0 Contents of CR0 READREG = 1//1 Contents of CR1cr1=0x0100<<5;porta000=cr0;delay_us(10);porta000=cr1;delay_us(10);temp=porte000; //start samplefor(;;){temp=porte000;asm (" nop ");asm (" nop ");asm (" nop ");temp=temp>>5;asm (" nop ");asm (" nop ");asm (" nop ");temp=temp&0x03ff; //采集AD 输入asm (" nop ");asm (" nop ");asm (" nop ");}}/*interrupt serve program*/void interrupt tint0(){port6000=temp<<3; //DA 输出}实验现象:连接好实验连线,运行程序后用示波器观察输出波形,应与输入波形相当。
实验六D/A与A/D转换一.实验目的1.学习D/A转换的基本原理和D/A转换芯片0832的性能及编程方法。
2.了解单片机系统中扩展D/A转换芯片的基本方法。
3.学习A/D芯片ADC0809的转换性能及编程方法。
4.了解A/D转换芯片与写单片机的接口方法。
5.通过实验掌握单片机进行数据采集的方法。
二.实验说明1.D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟信号。
实验程序一是通过在D/A的输入短送入有一定规律的数字量,在输出端产生锯齿波、三角波、正弦波的波形,通过示波器观察来直观地了解D/A的转换功能。
产生锯齿波、三角波只需由A存放的数字量(送入D/A的输入寄存器)的增减来控制;要产生正弦波,较简单的方法是造一张正弦数字量的表,取值范围为一个周期,采样点愈多,精度愈高。
在EL-8051-III实验台上DAC0832与单片机的连接图如下图所示:图6-1 D/A转换逻辑由图可以看出,输入寄存器占偶地址端口(A0=0),DAC寄存器占较高的奇地址端口(A0=1)。
两个寄存器均对数据独立进行锁存。
要把一个数据通过0832输出,要经两次锁存。
典型的程序如下:MOV DPTR, #PORTMOV A , #DA TAMOVX @DPTR, AINC DPTRMOVX @DPTR, A其中,第二次写入是一个虚拟写的过程,其目的是产生一个WR信号,启动D/A。
2.A/D转换是把模拟量转变为数字量的变换。
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
本实验用的是ADC0809属逐次逼近法A/D转换器,是八位的A/D转换器。
每采集一次需100us。
实验电路如下图:图6-2 A/D转换逻辑ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。
实验六 AD转换程序设计一、实验目的:1.掌握转换器ADC0809的使用。
2.用PROTEUS 设计,仿真基于AT89C51单片机的A/D转换实验。
3.通过改变电位器的值改变模拟量的输入,经转换为数字量在LED上显示,比对模拟量和数字量的关系。
二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:1.程序#include<reg51.h>sbit STA=P2^5;sbit EOC=P2^6;sbit OE=P2^7;sbit CLK=P2^4;sbit led4=P2^3;sbit led3=P2^2;sbit led2=P2^1;sbit led1=P2^0;sbit point=P0^7;int ad_result;float result;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(unsigned int time){unsigned int j=0;for(;time>0;time--)for(j=0;j<125;j++);}void ad_init(){OE=1;STA=0;CLK=0;}void time_init(){TMOD=0X02;TH0=0X94;TL0=0;EA=1;ET0=1;TR0=1;}void T0_time()interrupt 1{CLK=!CLK;}void ad_start(){ad_init();delay(10);STA=1;delay(10);STA=0;}void disp( int a){led1=0;P0=table[a/1000];point=1;delay(2);led1=1;led2=0;P0=table[a%1000/100];delay(2);led2=1;led3=0;P0=table[(a%100)/10];delay(2);led3=1;led4=0;P0=table[a%10];delay(2);led4=1;}void main(void){ad_init();time_init();while(1){ad_start();while(EOC==0);result=(P1*(5.0/255.0))*1000;ad_result=(int)(result+0.5);disp(ad_result);}}。
实验十一 D / A、A / D转换器一、实验目的1、了解D / A和A / D转换器的基本工作原理和基本结构2、掌握大规模集成D / A和A / D转换器的功能及其典型应用二、实验原理在数字电子技术的很多应用场合往往需要把模拟量转换为数字量,称为模/ 数转换器(A / D转换器,简称ADC);或把数字量转换成模拟量,称为数/ 模转换器(D / A转换器,简称DAC)。
完成这种转换的线路有多种,特别是单片大规模集成A / D、D / A转换器问世,为实现上述的转换提供了极大的方便。
使用者可借助于手册提供的器件性能指标及典型应用电路,即可正确使用这些器件。
本实验将采用大规模集成电路DAC0832实现D / A转换,ADC0809实现A / D转换。
1、D / A转换器DAC0832DAC0832是采用CMOS工艺制成的单片电流输出型8位数/ 模转换器。
图11.1是DAC0832的逻辑框图及引脚排列。
图11.1 DAC0832单片D/A转换器逻辑框图和引脚排列器件的核心部分采用倒T型电阻网络的8位D / A转换器,如图11.2所示。
它是由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压V REF四部分组成。
图11.2 倒T 型电阻网络D / A 转换电路运放的输出电压为由上式可见,输出电压V O 与输入的数字量成正比,这就实现了从数字量到模拟量的转换。
一个8位的D / A 转换器,它有8个输入端,每个输入端是8位二进制数的一位,有一个模拟输出端,输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
DAC0832的引脚功能说明如下: D 0-D 7 :数字信号输入端ILE :输入寄存器允许,高电平有效CS : 片选信号,低电平有效 1WR :写信号1,低电平有效FXER :传送控制信号,低电平有效 2WR :写信号2,低电平有效I OUT1,I OUT2:DAC 电流输出端R fB :反馈电阻,是集成在片内的外接运放的反馈电阻 V REF :基准电压(-10~+10)V V CC :电源电压(+5~+15)V AGND :模拟地NGND :数字地 可接在一起使用DAC0832输出的是电流,要转换为电压,还必须经过一个外接的运算放大器,实验线路如图11.3所示。
一种在单片机系统中利用D/A转换器实现D/A和A/D
转换的方法
王祖文
【期刊名称】《计算机应用研究》
【年(卷),期】1989(006)002
【摘要】一引言在单片机的开发与应用中,经常遇到D/A转换和A/D转换的问题,一般的方法是将单片机分別与D/A转换器及A/D转换器相连。
在本文所介绍的单片机系统中,采用了一片D/A转换器分时地实现D/A转换器和A/D转换。
【总页数】3页(P59-61)
【作者】王祖文
【作者单位】无
【正文语种】中文
【中图分类】TP36
【相关文献】
1.一种利用D/A转换器实现多路数据采集的方法 [J], 许东霞;季瑞瑞
2.一种提高8098单片机片内A/D转换器分辨率的方法 [J], 翟国富;王淑娟
3.单片机与V/F转换器相结合实现智能化高精度A/D转换器 [J], 翁大丰
4.单片机应用技术讲座(14)第12讲 D/A转换器及用单片机实现的温度控制系统(上) [J], 严天峰
5.利用单片机实现PWM输出的A/D转换器 [J], 纪宗南
因版权原因,仅展示原文概要,查看原文内容请购买。
实验六D/A与A/D转换一.实验目的1.学习D/A转换的基本原理和D/A转换芯片0832的性能及编程方法。
2.了解单片机系统中扩展D/A转换芯片的基本方法。
3.学习A/D芯片ADC0809的转换性能及编程方法。
4.了解A/D转换芯片与写单片机的接口方法。
5.通过实验掌握单片机进行数据采集的方法。
二.实验说明1.D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟信号。
实验程序一是通过在D/A的输入短送入有一定规律的数字量,在输出端产生锯齿波、三角波、正弦波的波形,通过示波器观察来直观地了解D/A的转换功能。
产生锯齿波、三角波只需由A存放的数字量(送入D/A的输入寄存器)的增减来控制;要产生正弦波,较简单的方法是造一张正弦数字量的表,取值范围为一个周期,采样点愈多,精度愈高。
在EL-8051-III实验台上DAC0832与单片机的连接图如下图所示:图6-1 D/A转换逻辑由图可以看出,输入寄存器占偶地址端口(A0=0),DAC寄存器占较高的奇地址端口(A0=1)。
两个寄存器均对数据独立进行锁存。
要把一个数据通过0832输出,要经两次锁存。
典型的程序如下:MOV DPTR, #PORTMOV A , #DA TAMOVX @DPTR, AINC DPTRMOVX @DPTR, A其中,第二次写入是一个虚拟写的过程,其目的是产生一个WR信号,启动D/A。
2.A/D转换是把模拟量转变为数字量的变换。
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
本实验用的是ADC0809属逐次逼近法A/D转换器,是八位的A/D转换器。
每采集一次需100us。
实验电路如下图:图6-2 A/D转换逻辑ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。
实验电路中将二者相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需两条指令:MOV DPTR, #PORTMOVX @DPTR, AA中是什么内容是不重要的,这是一次虚拟写,其目的是产生一个/WR信号。
A/D转换期间EOC脚(A/D转换结束信号输出端口)为低电平,一旦转换结束时输出高电平。
如果我们把EOC脚接至一个反相器的输入端,反相器的输出端就得到一个负跳变的触发信号,它正好可以用来作为8051的外中断源的边缘触发信号。
在一个数据转换完毕后,我们向ENABLE脚送一个高电平,用以打开三态数据锁存器,就可以读出数据,因此可以使用如下指令读取A/D转换结果:MOV DPTR, #PORTMOV A, @DPTR三.实验内容1.利用DAC0832编程产生锯齿波、三角波、正弦波。
三种波形轮流显示。
连线方法:0832的CS0832接28-2F。
输出Aout接示波器探头,示波器探头地线接实验板地线。
程序清单见D61.ASM。
2.A/D转换实验:用中断方法来读取IN0的输入模拟电压,通过P1口输出到LED上显示。
运行程序后,读出LED上显示的数据(灯亮表示1,化为十六进制数)。
用万用表测量IN0的输入模拟电压,与读出的LED上显示的数据进行比较。
连线方法:,1、0809的片选信号CS0809接CS0。
2、电位器的输出信号AN0接0809的ADIN0。
3、EOC接CPU板的INT0。
4、P1.0-P1.7连L1-L8。
程序清单见D62.ASM。
3.用查EOC电位法作上述测量。
测量的数据在LED数码管上显示,连续不断地测量(数据不用存储)。
编写程序上机运行。
然后,把EOC直接连接到8051的管脚/INT0,修改程序,再运行程序。
四.实验报告1.写出每个实验的结果。
2.对程序二(D62.ASM)作出注释。
3.附上实验内容三第一步调试通过的程序。
如果EOC直接连到8051的管脚/INT0,应该如何修改程序?五、实验程序;D61.asmORG 4000HLJMP MAINORG 401BHLJMP DELAYPORT EQU 0CFA0HORG 4100HMAIN: MOV TMOD,#10H ; 定时器1工作在定时方式,方式1 SETB EASETB ET1MOV TL1, #0AFHMOV TH1, #3CH ; 置定时0.1S的初值SETB TR1DISP: MOV R1,#50HLCALL PRG1 ; 调用产生锯齿波子程序MOV R1, #50HLCALL PRG2 ; 调用产生三角波子程序MOV R1, #50HLCALL PRG3 ; 调用产生正弦波子程序LJMP DISPDELAY: CLR TR1 ; 中断服务程序MOV TL1, #0AFHMOV TH1, #3CHDEC R1SETB TR1RETI;PRG1: MOV A, #00H ; 产生锯齿波子程序开始. LOOP: MOV DPTR, #PORT ; 输入寄存器端口地址#PORT MOVX @DPTR, A ; 送出数据INC DPTR ; DAC寄存器端口地址#PORT+1MOVX @DPTR, A ; 启动转换INC A ; 数据加1CJNE R1, #00H, LOOP ; 计数值减到00H了么?RET ; 没有则继续产生锯齿波.;PRG2: MOV A, #00H ; 产生三角波子程序LP1: MOV DPTR, #PORT ; 上升部分MOVX @DPTR, AINC DPTRMOVX @DPTR, AINC ACJNE A, #0FFH, LP1MOV R2, ALP2: MOV DPTR, #PORT ; 下降部分MOV A, R2MOVX @DPTR, AINC DPTRMOVX @DPTR, ADJNZ R2, LP2CJNE R1, #00H, LP1RET;PRG3: MOV R2, #02H ; 产生正弦波子程序MOV R4, #0FFH ; 一个正弦周期的数据个数SJMP SUBDATALP3: MOV DPTR, #PORTMOVX @DPTR, AINC DPTRMOVX @DPTR, AINC R2DJNZ R4, SUBDATAMOV R4, #0FFHMOV R2, #02HCJNE R1, #00H, SUBDATARETSUBDATA: MOV A, R2MOVC A,@A+PCSJMP LP3DATA0: ; 产生正弦波的数据(256个)DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAHDB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAHDB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7HDB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1HDB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,76H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,8H,7H,6H,5H,4H,3H,2HDB 02H,1H,0H,0H,0H,0H,0H,0HDB 00H,0H,0H,0H,0H,0H,1H,2HDB 02H,3H,4H,5H,6H,7H,8H,9HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,51H,55H,57H,5AH,5DH,60H,63HDB 69H,6CH,6FH,72H,76H,79H,7CH,80HEND;D62.ASMORG 4000HLJMP MAINORG 4003H ; 外中断0的中断向量LJMP INTX0PORT EQU 0CFA0HORG 4050HMAIN: MOV R0, #50H ; 存数RAM的首地址MOV R1, #8 ; 转换数据的个数MOV P3, #0FFHSETB EASETB EX0SETB IT0START: MOV DPTR, #PORTMOV A, #0MOVX @DPTR, A ; 启动ADC0809开始转换;ACALL DELSJMP START;INTX0: CLR EA ; 中断服务程序MOVX A,@DPTR ; 取出转换的数据CPL AMOV P1, AMOV @R0, A ; 存储数据SETB EAEXIT: RETI ; 从中断返回;DEL: MOV R7, #15DEL1: MOV R6, #130 ;延时一段时间DEL2: MOV R5, #200DEL3: DJNZ R5, DEL3DJNZ R6, DEL2DJNZ R7, DEL1RETEND。