




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学中山学院学生实验报告院别:电子信息学院 课程名称:微处理器实验班级无线技术14姓名学号实验名称A/D与D/A转换实验实验时间2016年11月25日成绩教师签名批改时间报 告 内 容一、实验目的和任务1、熟悉A/D转换和D/A转换的基本原理。 2、掌握单片机内部A/D转换器的特性及程序控制方法。 3、掌握利用PWM技术实现D/A转换的原理及程序控制方法。二、实验原理简介A/D转换器(ADC)的作用是实现模拟量到数字量的线性转换,常用A/D转换器类型包括双积分型和逐次逼近型。双积分型A/D转换器的优点是转换精度高,抗干扰性能好,缺点是转换速度慢。逐次逼近型A/D转换器速度较快,精度略低
2、于双积分型。STC12C5A60S2单片机内部自带8路10位逐次逼近型A/D转换器,可在程序控制下,将ADC0ADC7(与P1口引脚复用)中任何一路模拟输入转换为等比例的10位数字量。为便于程序控制,STC12C5A60S2新增多个与A/D转换器相关的特殊功能寄存器(SFR),常用寄存器的功能及各位含义如下:P1ASF:模拟功能控制寄存器(字节地址为9DH) P1ASF的Di位设为0时,P1.i位用作普通I/O口; P1ASF的Di位设为1时,P1.i位用作ADCi模拟输入引脚。 ADC_CONTR:ADC控制寄存器(字节地址为BCH) ADC_POWER用于A/D转换器电源控制,设为0时,关
3、闭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_RESL:A/D转换结果寄存器(字节地址分别为BDH和BEH
4、) 注:STC12C5A60S2新增AUXR1寄存器中ADRJ位由复位时默认的0改为1,则ADC_RES和ADC_RESL将改为分别存放转换结果的高2位和低8位。 此外,STC12C5A60S2的A/D转换器也支持中断控制。 STC12C5A60S2中A/D转换器的控制流程与传统ADC0809芯片类似:1)设置P1ASF寄存器,指定P1口某口线用作ADC输入引脚;2)设置ADC_CONTR寄存器,开启A/D转换器电源,选择转换速度及通道,并启动转换;3)查询ADC_CONTR寄存器的ADC_FLAG位,判断转换是否结束;4)ADC_FLAG位变为1时,转换结束,读取ADC_RES和ADC_RE
5、SL寄存器,组成10位A/D转换结果。图3.8.1为ZSC-1实验箱的STC12C5A60S2的A/D转换实验电路。电位器W101产生05V模拟电压,通过ADC1引脚输入单片机进行A/D转换,转换结果可通过发光管L101L108以二进制或其它形式显示,也可用于控制蜂鸣器BZ1的发声频率。 图3.8.1 A/D转换实验电路 D/A转换器(DAC)的作用是实现数字量到模拟量的线性转换。为实现D/A转换,除了在单片机外部配置专用D/A转换器芯片外,还可使用成本较低的PWM加低通滤波的方法,其依据的主要原理是:PWM信号的平均电压正比于信号的占空比。本实验即使用该方法实现D/A转换,电路如图3.8.2
6、所示。单片机在程序控制下,以一定的时间间隔,通过P1.4口线动态输出不同占空比的PWM信号,经电阻、电容组成的低通滤波器滤波后,即可在排针J101的2脚得到各时间点幅值正比于对应占空比的连续模拟信号。对于普通80C51单片机,一般是通过程序控制通用定时/计数器并配合中断处理,来产生所需的PWM信号。STC12C5A60S2除具有普通80C51的两个通用定时/计数器外,还增加了具有多种工作模式的两路可编程计数器阵列(PCA)模块,能够非常方便地产生两路频率相同而占空比独立的PWM信号,其中,PWM0通过P1.3(也可切换到P4.2)输出,PWM1通过P1.4(也可切换到P4.3)输出。 图3.8
7、.2 D/A转换实验电路 STC12C5A60S2新增多个与PCA相关的SFR,其中,本实验涉及的PWM1输出相关的SFR包括:CCON:PCA控制寄存器(字节地址为D8H) 其中,CR为PCA运行控制位,设为0时,关闭PCA,设为1时,启动PCA。CMOD:PCA工作模式寄存器(字节地址为D9H) 其中,CPS2、CPS1、CPS0、用于PCA时钟源选择,例如,100组合时以系统时钟(其频率为晶振频率)为PCA时钟,000组合时以系统时钟的12分频为PCA时钟。 CCAPM1:PCA模块1的模式寄存器(字节地址为DBH) 其中,为使PCA模块1工作在8位PWM无中断模式,应将ECOM1和PW
8、M1两位设为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单片机实验箱一台。四、
9、实验内容和步骤 实验步骤: 在Keil中编写源程序。 在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格式的单片机程序文件。 用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载(注意MCU1要先断电再上电)。 运行单片机程序,调节W101电位器,观察发光管显示的变化。实验内容:(一)A/D(Mcu1内部ADC)1、设计程序,以0.2秒为间隔,采集ADC(P1.1)脚的输入电压,将数字量显示在LED上,并通过串口发送出去。程序代码如下:#include<reg51.h>#include<
10、INTRINS.h>typedef unsigned char uint8;sfr P1ASF=0x9D;sfr ADC_CONTR=0xBC;sfr ADC_RES=0xBD;uint8 ADC(uint8 ch);void UartInit();void UartSendByte(uint8 x);void Delay(int ms);void main()uint8 N;UartInit();while(1)N=ADC(1) ;P0=N;UartSendByte(N);Delay(200);uint8 ADC(uint8 ch) P1ASF=1<<ch;ADC_CONT
11、R=0x88+ch;_nop_();while(ADC_CONTR&0x10)=0);ADC_CONTR&=0x10;return ADC_RES;void UartInit()TMOD=0x20;TH1=TL1=0xFD;TR1=1;SCON=0x50;void UartSendByte(uint8 x)SBUF=x;while(!TI);TI=0;void Delay(int ms)int i;while(ms-)for(i=700;i;i-);仿真结果如下: 2、 设计程序,用P1.1脚电压控制蜂鸣器发声频率。程序代码如下:#include<reg51.h>#
12、include<INTRINS.h>typedef unsigned char uint8;sfr P1ASF=0x9D;sfr ADC_CONTR=0xBC;sfr ADC_RES=0xBD;uint8 ADC(uint8 ch);void UartInit();void UartSendByte(uint8 x);void Delay(int ms);void main() uint8 N; UartInit(); while(1) N=ADC(1) ; /P0=N; P0=(1<<N/32); /Delay(200) ; N+=1000; while(-N); P
13、11=0x01; uint8 ADC(uint8 ch) P1ASF=1<<ch; ADC_CONTR=0x88+ch; _nop_(); while(ADC_CONTR&0x10)=0); ADC_CONTR&=0x10; return ADC_RES;void UartInit() TMOD=0x20;TH1=TL1=0xFD;TR1=1;SCON=0x50;void UartSendByte(uint8 x) SBUF=x;while(!TI);TI=0;void Delay(int ms) int i;while(ms-) for(i=700;i;i-);
14、(2) D/A(Mcu1内部PCA输出PWM+外部RCLPF) 1、 设计程序,利用STC12C5A60S2单片机内部PCA模块产生PWM信号,经低通滤波后输出锯齿波。程序代码如下:#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sfr CMOD=0xD9;sfr CCAPM1=0xDB;sbit CR=0xDE;sfr CCAP1H=0xFB;sbit bo=P11;void Delay(uint16 ms);void PwmInit()CMOD=0x08;CCAPM1=0x42;
15、CR=1;void PwmOut(uint8 Duty)CCAP1H=255-Duty;void main() int i,j;PwmInit();/*while(1) PwmOut(30);Delay(800);PwmOut(120);Delay(800);*/while(1) for(i=1;i<254;i+) 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单片机内部PC
16、A模块产生PWM信号,经低通滤波后输出正弦波。程序代码如下:#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16;sfr CMOD=0xD9;sfr CCAPM1=0xDB;sbit CR=0xDE;sfr CCAP1H=0xFB;sbit bo=P11;uint8 code SinTable=127,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 Delay(uint16 ms);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);Delay(800);*/while(1) for(i=0;i<32;i+) /PwmOut(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国文化遗产的保护试题及答案
- 行政法学测试知识的试题及答案
- 2025年执业护士职业风险管理试题及答案
- 从容应对护士考试的试题及答案
- 2025年卫生资格考试的适应性备考试题及答案
- 行政法学实践中的挑战试题与答案
- 药师工作中的法律责任简析试题及答案
- 中国处方集附录简介课件
- 2025年行政管理考试的关键试题及答案
- 区域行政中的文化管理创新试题及答案
- 2025年山东省青岛市市南区中考一模地理试题(含答案)
- 102解二元一次方程组【10个必考点】(必考点分类集训)(人教版2024)
- 档案管理员工作
- 市场营销试题含参考答案
- 儿童支气管哮喘诊断与防治指南解读(2025年)课件
- 肿瘤专科进修汇报护理
- 第2课 《 手绘线条图像-物象的多视角表达》(教学设计)-2023-2024学年人美版初中美术八年级下册
- 肾上腺皮质功能减退护理
- 村干部笔试题库及答案
- 高低压柜常见故障及检修培训
- 供应商分级制度
评论
0/150
提交评论