您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 实验八AD与DA转换实验
电子科技大学中山学院学生实验报告院别:电子信息学院课程名称:微处理器实验班级:12电信A姓名:学号:实验名称:八、A/D与D/A转换实验实验时间:2014年11月17日成绩:教师签名:批改时间:一、实验原理与目的1、熟悉A/D转换和D/A转换的基本原理。2、掌握单片机内部A/D转换器的特性及程序控制方法。3、掌握利用PWM技术实现D/A转换的原理及程序控制方法。A/D转换器(ADC)的作用是实现模拟量到数字量的线性转换,常用A/D转换器类型包括双积分型和逐次逼近型。双积分型A/D转换器的优点是转换精度高,抗干扰性能好,缺点是转换速度慢。逐次逼近型A/D转换器速度较快,精度略低于双积分型。STC12C5A60S2单片机内部自带8路10位逐次逼近型A/D转换器,可在程序控制下,将ADC0~ADC7(与P1口引脚复用)中任何一路模拟输入转换为等比例的10位数字量。为便于程序控制,STC12C5A60S2新增多个与A/D转换器相关的特殊功能寄存器(SFR)二、实验设备1、PC机一台(已安装KeiluVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。三、实验内容与分析1、设计程序,将W101电位器产生的模拟电压转换为数字量,通过发光管L101~L108显示二进制结果或结果所在的区间。①在Keil中编写源程序。参考程序如下(请将下划线部分补充完整):;==========================特殊功能寄存器声明========================ADC_CONTREQU0BCH;ADC控制寄存器ADC_RESEQU0BDH;ADC高8位结果ADC_RESLEQU0BEH;ADC低2位结果P1ASFEQU09DH;P1口ADC功能控制寄存器LEDEQUP0;===============================主程序===============================MAIN:MOVR7,#01H;对1#通道进行A/D转换LCALLAD;调用AD转换子程序;CPLA;MOVLED,A;通过LED显示二进制结果(高8位);SJMPMAINMOVB,#32;通过LED显示结果所在的区间DIVAB;商存到A,余数存到BMOVR2,AMOVA,#01H寄存器地址把256分为8个区间NEXT:RLADJNZR2,NEXTCPLAMOVLED,ASJMPMAIN;================================A/D转换子程序=======================;入口参数:R7通道号;出口参数:AB转换结果(A为高8位,B为低2位);---------------------------------------------------------------------AD:MOVB,R7MOVA,#01HAD2:RLADJNZR7,AD2MOVP1ASF,A;将P1.x用作ADCx引脚MOVA,#88H;10001000BADDA,B;A=A+BMOVADC_CONTR,A;开启A/D电源,选择速度及通道,启动转换NOPNOPNOPNOPAD3:MOVA,ADC_CONTRJNBACC.4,AD3;等待A/D转换结束ACC.4表示控制开关ANLADC_CONTR,#NOT(10H);清除转换结束标志MOVA,ADC_RES;返回A/D转换结果高8位存到AMOVB,ADC_RESL;低2位存到BRET;====================================程序结束========================END②在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格式的单片机程序文件。③用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载(注意MCU1要先断电再上电)。④运行单片机程序,调节W101电位器,观察发光管显示的变化。2、设计程序,将W101电位器产生的模拟电压转换为数字量,用于控制蜂鸣器的发声频率。参考程序如下(请将下划线部分补充完整):;==========================特殊功能寄存器声明========================ADC_CONTREQU0BCH;ADC控制寄存器ADC_RESEQU0BDH;ADC高8位结果ADC_RESLEQU0BEH;ADC低2位结果P1ASFEQU09DH;P1口ADC功能控制寄存器BUZZEQUP1.0;对蜂鸣器宏定义;===============================主程序===============================MAIN:MOVR7,#01H;对1#通道进行A/D转换;加几个空操作,确保设置生效寄存器地址LCALLADNEXT:MOVR2,#50;用A/D转换结果控制延时DJNZR2,$DJNZACC,NEXTCPLBUZZ;产生方波输出,驱动蜂鸣器发声SJMPMAIN;================================A/D转换子程序=======================;入口参数:R7通道号;出口参数:AB转换结果(A为高8位,B为低2位);--------------------------------------------------------------------AD:MOVB,R7MOVA,#01HAD2:RLADJNZR7,AD2MOVP1ASF,A;将P1.x用作ADCx引脚MOVA,#88HADDA,BMOVADC_CONTR,A;开启A/D电源,选择速度及通道,启动转换NOP;加几个空操作,确保设置生效NOPNOPNOPAD3:MOVA,ADC_CONTRJNBACC.4,AD3;等待A/D转换结束ANLADC_CONTR,#NOT(10H);清除转换结束标志MOVA,ADC_RES;返回A/D转换结果MOVB,ADC_RESL;RET;====================================程序结束========================END3、设计程序,利用STC12C5A60S2单片机内部PCA模块产生PWM信号,经低通滤波后输出正弦波,要求频率和振幅可变。参考程序如下(请将下划线部分补充完整):;========================特殊功能寄存器声明========================CCONEQU0xD8;PCA控制寄存器CREQUCCON.6;PCA计数器计数允许CMODEQU0xD9;PCA工作模式寄存器CCAPM1EQU0xDB;PCA模块1的模式寄存器CCAP1LEQU0xEB;PCA模块1的捕捉/比较寄存器低8位CCAP1HEQU0xFB;PCA模块1的捕捉/比较寄存器高8位;================================主程序==============================MAIN:LCALLPWMINIT;PWM模块初始化MOVDPTR,#SINTBL;DPTR指向正弦表首单元;以下输出频率较低、振幅最大的正弦波WAVE1A:MOVR2,#80;连续输出80个周期WAVE1B:MOVR3,#0WAVE1C:MOVA,R3MOVCA,@A+DPTR;查表求正弦波当前值并控制PWM输出MOVR7,ALCALLPWMOUTMOVR4,#60;点间延时(正弦波输出频率较低)设置频率DELAY1:MOVR5,#100DJNZR5,$DJNZR4,DELAY1INCR3CJNER3,#32,WAVE1C;每个正弦波周期包括32个点DJNZR2,WAVE1B;以下输出频率较高、振幅最大的正弦波WAVE2A:MOVR2,#240;连续输出240个周期WAVE2B:MOVR3,#0WAVE2C:MOVA,R3MOVCA,@A+DPTR;查表求正弦波当前值并控制PWM输出MOVR7,ALCALLPWMOUTMOVR4,#20;点间延时(正弦波输出频率较高)设置频率DELAY2:MOVR5,#100DJNZR5,$DJNZR4,DELAY2INCR3CJNER3,#32,WAVE2C;每个正弦波周期包括32个点DJNZR2,WAVE2B;以下输出频率较高、振幅减半的正弦波WAVE3A:MOVR2,#240;连续输出240个周期WAVE3B:MOVR3,#0WAVE3C:MOVA,R3MOVCA,@A+DPTR;查表求正弦波当前值并控制PWM输出CLRCRRCA;正弦波振幅减半(带进位右移即减半)MOVR7,ALCALLPWMOUTMOVR4,#20;点间延时(正弦波输出频率较高)设置频率DELAY3:MOVR5,#100DJNZR5,$DJNZR4,DELAY3INCR3CJNER3,#32,WAVE3C;每个正弦波周期包括32个点DJNZR2,WAVE3BLJMPMAIN;==============================PWM初始化子程序=======================PWMINIT:MOVCMOD,#08H;PCA时钟源设为FOSC(PWM频率=11.0592MHz/256;=43.2KHz)MOVCCAPM1,#42H;设置PCA模块1为8位PWM模式,禁用中断01000010BSETBCR;启动PCARET;==========================PWM占空比更新子程序=======================;入口参数:R7占空比(0..255);--------------------------------------------------------------------PWMOUT:MOVA,#255CLRCSUBBA,R7MOVCCAP1H,ARET;===============================常量数组声明=========================SINTBL:DB127,152,176,199,218,234,245,252DB254,251,242,230,213,192,170,145DB120,95,71,49,31,16,6,1DB0,5,15,29,47,68,92,116;================================程序结束============================END四、实验结论1、深入了解A/D以及D/A转换的原理及其应用2、掌握利用PWM技术实现D/A转换
本文标题:实验八AD与DA转换实验
链接地址:https://www.777doc.com/doc-2459196 .html