AD与DA转换实验18339.doc

电子科技大学中山学院学生实验报告院别电子信息学院 课程名称微处理器实验班级无线技术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转换器速度较快,精度略低于双积分型。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_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转换器的控制流程与传统ADC0809芯片类似1)设置P1ASF寄存器,指定P1口某口线用作ADC输入引脚;2)设置ADC_CONTR寄存器,开启A/D转换器电源,选择转换速度及通道,并启动转换;3)查询ADC_CONTR寄存器的ADC_FLAG位,判断转换是否结束;4)ADC_FLAG位变为1时,转换结束,读取ADC_RES和ADC_RESL寄存器,组成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所示。单片机在程序控制下,以一定的时间间隔,通过P1.4口线动态输出不同占空比的PWM信号,经电阻、电容组成的低通滤波器滤波后,即可在排针J101的2脚得到各时间点幅值正比于对应占空比的连续模拟信号。对于普通80C51单片机,一般是通过程序控制通用定时/计数器并配合中断处理,来产生所需的PWM信号。STC12C5A60S2除具有普通80C51的两个通用定时/计数器外,还增加了具有多种工作模式的两路可编程计数器阵列(PCA)模块,能够非常方便地产生两路频率相同而占空比独立的PWM信号,其中,PWM0通过P1.3(也可切换到P4.2)输出,PWM1通过P1.4(也可切换到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单片机实验箱一台。四、实验内容和步骤 实验步骤 在Keil中编写源程序。 在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格式的单片机程序文件。 用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程序下载(注意MCU1要先断电再上电)。 运行单片机程序,调节W101电位器,观察发光管显示的变化。实验内容(一)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.1脚电压控制蜂鸣器发声频率。程序代码如下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

单片机c语言ad与da转换实验报告,AD与DA转换实验18339.doc相关推荐

  1. 南昌大学计算机控制,南昌大学计算机控制实验报告数/模转换实验..doc

    南昌大学计算机控制实验报告数/模转换实验. 南昌大学实验报告 学生姓名: 学号: 专业班级: 实验类型:■验证 □ 综合 □ 设计 □ 创新 实验日期: 实验成绩: 实验一 数/模转换实验 一.实验要 ...

  2. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵快速转置 数据结构实验报告

    南昌航空大学实验报告 课程名称: 数据结构 实验名称: 实验五 稀疏矩阵的存储和快速转置 班 级: 学生姓名: 学号: 指导教师评定: 签 名: 题目:假设稀疏矩阵A采用三元组表表示,编写程序实现该矩 ...

  3. 南京邮电大学c语言实验报告3v2,南京邮电大学操作系统实验报告

    <南京邮电大学操作系统实验报告>由会员分享,可在线阅读,更多相关<南京邮电大学操作系统实验报告(20页珍藏版)>请在人人文库网上搜索. 1.通信与信息工程学院2015 / 20 ...

  4. c++语言程序设计教程与实验实验报告,C++程序设计课程设计实验报告—网络五子棋...

    C++程序设计课程设计实验报告-网络五子棋 计算机学院 实验报告 课程名称: C++程序设计课程设计 开课学期: 2010-2011学年第2学期 院 班: 计算机学院 093 指导老师: 项目题目: ...

  5. 华中农业大学C语言实验5答案,物理实验报告册(上册)-华中农业大学实验.pdf

    物理实验报告册(上册)-华中农业大学实验 物理实验报告册 (上册) 专业班级__________________________ 学 号__________________________ 姓 名__ ...

  6. java类与对象实验报告心得体会_java上机实验心得体会报告(大全五篇)

    北京联合大学信息学院 "面向对象程序设计"课程上机实验报告 题目: JAVA上机实验心得体会 姓名(学号): 专业:计算机科学与技术 编制时间: 2012年12月19日 版本: 1 ...

  7. labview 霍夫曼树_哈夫曼树编码实验报告_信息论与编码实验2 实验报告_信息论与编码报告...

    huffman编码C语言实验报告 今日推荐 180份文档 2014...4页 1下载券 安卓版100 doors 2攻略1... 3页 1下载券 <逃脱本色>doors....语文教育实习 ...

  8. 计算机操作系统存储管理实验报告,《操作系统》存储管理实验报告

    <操作系统>存储管理实验报告 ____大学____学院实验报告课程名称: 计算机操作系统 实验名称: 存储管理实验 实验日期: 班级: 姓名: 学号: 仪器编号: XX 实验报告要求:1. ...

  9. 计算机组装与维护预实验报告,计算机组装与维护实验报告.doc

    计算机组装与维护实验报告计算机组装与维护实验报告 江西公安专科学校 实 验 报 告 课程名称 年级专业 学 号 姓 名 \ 实 验 报 告 说 明 1.实验项目名称:要用最简练的语言反映实验的内容.要 ...

  10. 一阶电路实验报告心得_一阶电路实验报告5篇

    1..测量时间常数 2..微分电路,积分电路 (a)微分电路 (b)积分电路 时间常数 的测量 R=4K R=1K R=6K C=0.22U R=1K R=1K 三.误差分析 1)实验过程中的读数误差 ...

最新文章

  1. vue组件级路由钩子函数介绍,及实际应用
  2. 如何统统扩充loop设备的size(linux loop resize2fs)
  3. Python 3.5将支持Async/Await异步编程
  4. angr学习笔记(2)
  5. 红帽子linux开启telnet,RedHat linux 9下配置telnet服务 | 技术部落
  6. RabbitMq初探——安装
  7. spring-注解---IOC(3)
  8. (C#)Winform修改DateTimePicker控件的背景色和边框色
  9. 【文献阅读】Self-Normalizing Neural Networks
  10. 一种手机保密桌面的想法
  11. 动易cms聚合空间最近访客访问地址错误解决方法
  12. 阿里云OSS上传图片慢的处理方案
  13. OSPF区域类型及详解
  14. 求职过程中展示您的社交技巧
  15. 计算机专业英语2013单词翻译,计算机专业英语课后单词翻译
  16. Leetcode237之删除链表中的节点
  17. 网站建设就是要大胆创新
  18. Android开发自定义短视频系统源码全局悬浮按钮
  19. python输出课程表
  20. 【ROS2原理11】C++编程的要点

热门文章

  1. 国外最近突然爆火的「Wordle」是什么鬼?
  2. Mysql 数据库中怎么实现分页?
  3. 学python人工智能电脑要什么配置_没有基础能不能学人工智能 首选语言是Python吗...
  4. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(二)
  5. 遇到问题: 文字输入后面的字就删除了
  6. 互联网运营面试题_互联网公司的用户运营面试,一般都有哪些建议呢?
  7. 智能电表软件测试,智能电能表软件测试技术概述
  8. 4.4 求解同余方程
  9. 海思NB-IOT芯片,Hi2115处理器介绍
  10. 电脑电子版文件怎么弄_电脑上怎么制作pdf格式的文件?