计算机原理实验报告
一、实验目的
1、学习D/A及A/D转换的基本原理。
2、掌握D/A及A/D转换器DAC0832、ADC0809的使用方法。
3、综合汇编语言及I/O接口的知识,提高实际应用的能力。
二、实验准备
1、复习有关D/A及A/D转换,DAC0832及ADC0809的有关知识。
2、对照DAC0832、ADC0809的工作原理及时序,看懂实验接线图,理解实现D/A及
A/D转换的工作过程。
3、按实验内容要求编写汇编语言源程序并加注释。
三、实验内容
1、D/A转换
用DAC0832实现D/A转换,使产生的模拟电压波形分别为锯齿波、三角波和正弦波。
用示波器观察DAC0832的双极性输出Ub,运行用汇编语言编写的程序产生连续的电压波形。程序有简单的提示信息,能接受用户的按键。运行程序后Ub产生锯齿波并等待键入:
若键入“1”Ub产生锯齿波;
若键入“2” Ub产生.三角波;
若键入“3” Ub产生正弦波;
若键入“4” 退出用户程序,返回DOS。
用户程序运行过程中没有新键入别的数字则维持原状不变。不要求识别“1、2、3、4”以外的其他键。
程序流程图如上图。
程序中定义了一个变量MENU来存储当前波形选择的数字,按照实验内容的要求,其初始值应该是“1”,对应输出锯齿波。程序每次循环输出一个周期相应的波形,然后返回来处理键盘的输入,若输入了1-4中的某一个数字,则更新MENU或者退回DOS。
锯齿波和三角波都采用实时计算的方式输出,而正弦波则采用查表的方式输出,每个
周期取了256个点。
源程序如下:
NAME DAC0832
DATA SEGMENT
WELMSG DB 'PLEASE INPUT 1~4 : ',0DH,0AH,'$'
NEWLINE DB 0DH,0AH,'$'
PORT DW 0C400H
MENU DB '1'
Sin_table DB 128,131,134,137,140,143,146,149,152,155,158,162,165,167,170,173
DB 176,179,182,185,188,190,193,196,198,201,203,206,208,211,213,215
DB 218,220,222,224,226,228,230,232,234,235,237,238,240,241,243,244
DB 245,246,248,249,250,250,251,252,253,253,254,254,254,255,255,255
DB 255,255,255,255,254,254,254,253,253,252,251,250,250,249,248,246
DB 245,244,243,241,240,238,237,235,234,232,230,228,226,224,222,220
DB 218,215,213,211,208,206,203,201,198,196,193,190,188,185,182,179
DB 176,173,170,167,165,162,158,155,152,149,146,143,140,137,134,131
DB 128,124,121,118,115,112,109,106,103,100,97,93,90,88,85,82
DB 79,76,73,70,67,65,62,59,57,54,52,49,47,44,42,40
DB 37,35,33,31,29,27,25,23,21,20,18,17,15,14,12,11
DB 10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0
DB 0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9
DB 10,11,12,14,15,17,18,20,21,23,25,27,29,31,33,35
DB 37,40,42,44,47,49,52,54,57,59,62,65,67,70,73,76
DB 79,82,85,88,90,93,97,100,103,106,109,112,115,118,121,124
DATA ENDS
STACK SEGMENT PARA STACK
DB 100 DUP(?)
STACK