好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机DA转换实验报告.doc

5页
  • 卖家[上传人]:s9****2
  • 文档编号:424353047
  • 上传时间:2024-02-07
  • 文档格式:DOC
  • 文档大小:191.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验九 D/A 实验报告㈠ 实验目的1. 掌握单片机与 D/A 的接口及编程方法;2. 通过 D/A 动态波形输出进一步理解 D/A 的工作原理;3. 结合实验六中的 A/D 来检验软硬件的正确性4. 进一步了解单片机系统地址分配概念㈡ 实验器材1.G6W 仿真器一台2.MCS—51 实验板一台3.PC 机一台4.信号发生器一台5.示波器一台㈢ 实验内容及要求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 的参考电压值㈣ 实验步骤1. 接 ILE 至高电平( +5V ),根据 CS2 与高位地址线的连接情况, 确定 0832 在系统中的地址2. 将微机与伟福仿真系统及 51 实验板相连接3. 编写双向锯齿波或三角波输出的 D/A 程序,利用伟福仿真系统及计算机汇编成目标码,运行并调试程序,用示波器观察实验结果4. 编写送 A/D 数据至 D/A 转换程序,并将在实验六中所编写 A/D 采样程序与之连接组合,运用伟福仿真系统及计算机汇编成目标码,运行并调试程序,用示波器观察对照 A/D 输入端和 D/A 输出端的波形㈤ 实验框图开 始寄存器置转换初值送 D/A寄存器数加 1产生双向锯齿波的程序流程图开 始调 A/D 转换子程序采样 N 个数据键盘调用 D/A 并置初值取数据送 D/A数据地址加 1N 个数据是否否送完?是A/D+D/A 程序流程图㈥ 思考题1. 在实验步骤 4 中,对比了 A/D 输入端和 D/A 输出端的波形, 它们有什么不同?为什么?A/D 输出端是正弦波形,而 D/A 输出端是一段直流加一段正弦波形2. D/A 的转换时间对动态输出波形有何影响? D/A 的转换时间会使动态波形产生一段直流空档。

      3. D/A 参考电源极性与 D/A 转换输出结果有什么关系?输入的数字均视为正数即二进制数的所有位都为数值位 根据电路形式或参考电压的极性不同,输出电压或为 0V 到正满度值,或为 0V 到负满度值, 这种工作方式称为单极性输出方式采用单极性输出方式时,数字输出量采用自然二进制码实验一代码:ORG0000HAJMPMAINORG0050HMAIN:MOVDPTR,#0DFFFH;寄存器置转换初值MOVA, #00HJ:MOVX@DPTR,A;送 D/AINCA;寄存器数加 1AJMPJ实验二:ORG 0000HLJMP STARTORG 0013H;中断入口地址LJMP INT_1ORG 0040HSTART:;AD 转换MOV SP,#60HMOV R7,#0FFH;读取数据个数初始化MOV R1,#0B0H;存放数据地址MOV R0,#00HMOV DPTR,#7FFFH;选中 A_D 芯片MOV A,#00H;送通道号MOVX @DPTR,A;启动 A_DSETB IT1; 开中断SETB EASETB EX1AA:;MOV A,R7;JZ MAIN;SJMP AA;等待中断CJNE R7, #00H, $;判断数据是否传送完毕CLR EA;关中断LJMP MAININT_1:MOVX A,@DPTR;读 A_D数据MOV DPH,R1MOV DPL,R0MOVX @DPTR,A;送 A_D 数据INC R0;存放数据地址加一DEC R7;读取数据个数减一MOV DPTR,#7FFFHMOV A,#00HMOVX @DPTR,A;启动 A_DRETIMAIN:;DA 转换MOV R7,#0FFH;需转换的数据个数;MOV DPTR,#0EFFFH;设置 DA 口地址;MOV A,#00H; 输入数字量到 A (初值为00H);MOVX @DPTR,AMOV R0,#0B0H;设置需读取数据地址MOV R1,#00HNEXT:MOV DPH,R0;将读取数据地址送入 DPTRMOV DPL,R1MOVX A,@DPTR;将数据读到 A 中MOV DPTR,#0EFFFHMOVX @DPTR,A;将数据送往 DA 口INC R1;读取数据地址加一DJNZ R7,NEXT;数据未读完 ,转向 NEXT 继续读取SJMP START本次实验比较大的问题是在判断FF 个数据经过A/D 转换之后,要跳入 MAIN 程序进行D/A 转换,我们本身的程序是在中断程序中间判断R7 是否为 0,然后为 0 的话跳到 MIAN程序执行, 当时没有意识到是从中断程序中跳转出去后还是中断程序的一部分,所以导致程序不能实时采样。

      后来我们采用了下面红色的代码,将判断语句放到中断外来执行, 但是我们忽略了一点,如果判断等待过程中中断来临,可能会没有机会, 而且这段代码中没有关中断所以最后我们采用了后三行语句来判断数据是否转换完并跳转AA:;MOV A,R7;JZ MAIN;SJMP AA; 等待中断CJNE R7, #00H, $CLR EALJMP MAIN。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.