资讯详情

AD与DA转换实验18339.doc

AD与DA转换实验18339.doc

电子信息学院 课程名称微处理器实验班无线技术14名实验名称A/D与D/A2016年11月25日,成绩教师签名批改时间报告 告 内 1.熟悉实验目的和任务A/D转换和D/A转换的基本原理。 掌握单片机内部A/D转换器的特性及程序控制方法。 3、掌握利用PWM技术实现D/A转换原理及程序控制方法。二、实验原理简介A/D转换器(ADC)实现从模拟量到数字量的线性转换是常用的A/D转换器类型包括双积分型和逐次逼近型。双积分型A/D转换器具有转换精度高、抗干扰性好、转换速度慢等优点。逐次逼近型A/D转换器速度快,精度略低于双积分型。STC12C5A60S单片机内部有88路10A/D在程序控制下,可以控制转换器ADC0ADC7(与P1口引脚复用)任何一路模拟输入转换为等比的10位数量。为便于程序控制,STC12C5A60S2新增多个与A/D与转换器相关的特殊功能寄存器(SFR),常用寄存器的功能和含义如下P1ASF模拟功能控制寄存器(字节地址为9DH) P1ASF的Di位设为0时,P1.i位用作普通I/O口; P1ASF的Di位设为1时,P1.i位用作ADCi模拟输入引脚。 ADC_CONTRADC控制寄存器(字节地址为BCH) ADC_POWER用于A/D当转换器电源控制设置为0时,关闭A/D当转换器电源设置为1时,打开A/D转换器电源。开启A/D转换器电源; SPEED1、SPEED0用于A/D在00/01/10/11时设置转换速度,A/D转换需要540/360/180/90个时钟; ADC_FLAG转换结束标志位,A/D转换完成后ADC_FLAG自动置1(需通过程序清除0); ADC_START用于A/D在1时开始转换启动控制A/D转换(转换后ADC_START自动清0); CHS2、CHS1、CHS0用于模拟输入通道的选择,其8种组合对应ADC0ADC7通道。ADC_RES和ADC_RESLA/D转换结果寄存器(字节地址分别为BDH和BEH) 注STC12C5A60S2新增AUXR1寄存器中ADRJ位从复位时默认0改为1,ADC_RES和ADC_RESL将转换结果改为高2位和低8位。 此外,STC12C5A60S2的A/D转换器还支持中断控制。 STC12C5A60S2中A/D转换器的控制过程和传统ADC设置0809芯片类似1P1ASF指定寄存器P一口用作口线ADC输入引脚;2)设置ADC_CONTR打开寄存器A/D转换器电源,选择转换速度和通道,并启动转换;3)查询ADC_CONTR寄存器的ADC_FLAG位,判断转换是否结束;4)ADC_FLAG当位变为1时,转换结束,读取ADC_RES和ADC_RESL10位寄存器A/D转换结果。图3.8.1为ZSC-1实验箱的STC12C5A60S2的A/D转换实验电路。图3.8.1为ZSC-1实验箱的STC12C5A60S2的A/D转换实验电路。W101产生05V通过模拟电压ADC引脚输入单片机A/D转换结果可以通过发光管进行转换L101L108以二进制或其它形式显示,也可用于控制蜂鸣器BZ1.发声频率。 图3.8.1 A/D转换实验电路 D/A转换器(DAC)它的作用是实现从数字量到模拟量的线性转换。为实现D/A除了在单片机外部配置特殊转换外,D/A除了转换器芯片外,还可以使用低成本PWM主要原理是加低通滤波的方法PWM信号的平均电压与信号的空比成正比。这个实验是用这种方法实现的D/A转换,电路如图3所示.8.2所示。在程序控制下,单片机通过一定的时间间隔P1.4口线动态输出不同占空比的PWM由电阻和电容组成的低通滤波器滤波后,信号可以排针J与相应的空比相比,每个时间点的2脚得到一个连续的模拟信号。对于普通80C51单片机通常通过程序控制通用定时/计数器和中断处理来生成所需的PWM信号。STC12C5A60S2除具有普通80C除了51的两个通用定时/计数器外,还增加了两个具有多种工作模式的可编程计数器阵列(PCA)模块可以很方便地产生两个频率相同、占空比独立的模块PWM其中,信号,PWM0通过P1.也可以切换到P4.2)输出,PWM1通过P1.也可以切换到P4.3)输出。 图3.8.2 D/A转换实验电路 STC12C5A60S2新增多个与PCA相关的SFR,其中,本实验涉及PWM1输出相关的SFR包括CCONPCA控制寄存器(字节地址为D8H) 其中,CR为PCA当运行控制位设置为0时,关闭PCA,1点,启动PCA。CMODPCA工作模式寄存器(字节地址)D9H) 其中,CPS2、CPS1、CPS0、用于PCA例如,在100组合中,以系统时钟(其频率为晶振频率)为例PCA在000组合时,系统时钟的12分频是PCA时钟。 CCAPM1PCA模块1模式寄存器(字节地址为DBH) 其中,为使PCA模块1工作在8位PWM无中断模式,应将ECOM1和PWM1两位为1,另一位为0。此外,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信号。三、实验设备1.PC一台机器(已安装Keil uVision、STC_ISP等软件); 2、ZSC-一台单片机实验箱。三、实验设备1.PC一台机器(已安装Keil uVision、STC_ISP等软件); 2、ZSC-一个单片机实验箱。四、实验内容及步骤 实验步骤 在Keil编写源程序。 在Keil创建项目,添加源程序文件,设置选项,汇编/编译、连接和转换HEX单片机程序文件格式。 串行电缆连接实验箱PC机各自的串行通信口,并运行PC机上的STC_ISP下载单片机程序(注意)MCU1先断电再上电)。 运行单片机程序,调整W观察发光管显示的变化。实验内容(1)A/D(Mcu1内部ADC)1、设计程序,0.2秒为间隔,采集ADC(P1.1)脚的输入电压显示数字量LED上,通过串口发送。程序代码如下includereg51.hincludeINTRINS.htypedef unsigned char uint8;sfr P1ASF0 x9D;sfr ADC_CONTR0 xBC;sfr ADC_RES0 xBD;uint8 ADCuint8 ch;void UartInit;void UartSendByteuint8 x;void Delayint ms;void mainuint8 N;UartInit;while1NADC1 ;P0N;UartSendByteN;Delay200;uint8 ADCuint8 ch P1ASF1ch;ADC_CONTR0 x88ch;_nop_;whileADC_CONTR0 x100;ADC_CONTR0 x10;return ADC_RES;void UartInitTMOD0 x20;TH1TL10 xFD;TR11;SCON0 x50;void UartSendByteuint8 xSBUFx;whileTI;TI0;void Delayint msint i;whilemsfori700;i;i;模拟结果如下 2、 设计程序,用P1.蜂鸣器控制蜂鸣器的声音频率。程序代码如下includereg51.hincludeINTRINS.htypedef unsigned char uint8;sfr P1ASF0 x9D;sfr ADC_CONTR0 xBC;sfr ADC_RES0 xBD;uint8 ADCuint8 ch;void UartInit;void UartSendByteuint8 x;void Delayint ms;void main uint8 N; UartInit; while1 NADC1 ; P0N; P01N/32; Delay200 ; N1000; whileN; P110 x01; uint8 ADCuint8 ch P1ASF1ch; ADC_CONTR0 x88ch; _nop_; whileADC_CONTR0 x100; ADC_CONTR0 x10; return ADC_RES;void UartInit TMOD0 x20;TH1TL10 xFD;TR11;SCON0 x50;void UartSendByteuint8 x SBUFx;whileTI;TI0;void Delayint ms int i;whilems fori700;i;i; (2) D/A(Mcu1内部PCA输出PWM外部RCLPF) 1、 设计程序,利用STC12C5A60S2单片机内部PCA模块产生PWM锯齿波通过低通滤波输出。程序代码如下include reg51.htypedef unsigned char uint8;typedef unsigned int uint16;sfr CMOD0 xD9;sfr CCAPM10 xDB;sbit CR0 xDE;sfr CCAP1H0 xFB;sbit boP11;void Delayuint16 ms;void PwmInitCMOD0 x08;CCAPM10 x42;CR1;void PwmOutuint8 DutyCCAP1H255-Duty;void main int i,j;PwmInit;/*while1 PwmOut30;Delay800;PwmOut120;Delay800;*/while1 fori1;i254;i PwmOuti; j100; whilej; void Delayuint16 msint i,j;fori0;ims;iforj0;j100;j;仿真波形如右图所示 2、 设计程序,使用STC12C5A60S2单片机内部PCA模块产生PWM低通滤波后,信号输出正弦波。程序代码如下include reg51.htypedef unsigned char uint8;typedef unsigned int uint16;sfr CMOD0 xD9;sfr CCAPM10 xDB;sbit CR0 xDE;sfr CCAP1H0 xFB;sbit boP11;uint8 code SinTable127,152、176、199、218、234、245、252 254、251、242、230、213、192、170、145 120, 95, 71, 49, 31, 16, 6, 1, 0, 5, 15, 29, 45, 68, 92,116;void Delayuint16 ms;void PwmInitCMOD0 x08;CCAPM10 x42;CR1;void PwmOutuint8 DutyCCAP1H255-Duty;void main int i,j;PwmInit;/*while1 PwmOut30;Delay800;PwmOut120;Delay800;*/while1 fori0;i32;i PwmOuti; PwmOutSinTablei; j100; whilej; void Delayuint16 msint i,j;fori0;ims;iforj0;j100;j;仿波形如右图所示五、实验结果与心得1. 本次实验在编写音乐代码是比较繁琐,但是最后如果编写成功还是很有成就感。2. 通过本实验,理解和掌握了信号频率产生的应用。3. 由于本实验程序是使用C语言编写的,所以在保存文件时后缀应为.C,不然文件会出错。4. 掌握了蜂鸣器件的驱动和应用,熟悉按键文件分程序设计。9

标签: 473j100p电容682j100v电容

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台