- 1- 实验十 D/A 转换实验一. 实验要求利用 DAC0832 ,编制程序产生锯齿波、三角波、正弦波。三种波轮流显示,用示波器观看。二. 实验目的 1. 了解 D/A 转换的基本原理。 2. 了解 D/A 转换芯片 0832 的性能及编程方法。 3. 了解单片机系统中扩展 D/A 转换的基本方法。三. 实验电路及连线四. 实验说明 D/A 转换是把数字量转换成模拟量的变换,从本书 D/A 电路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。产生锯齿波和三角波的表格只需由数字量的增减来控制, 同时要注意三角波要分两段来产生。要产生正弦波, 较简单的手段是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。这样做虽然简单, 但是费时费力, 没有充分发挥单片机的能力。利用嵌入式定点、浮点运算子程序库可方便的完成正弦波的波形表生成工作。有关子程序库的详细使用方法请查阅《爱迪克仿真器 51/98/96 汇编运算子程序库使用手册》。注意汇编子程序的每个子程序名应为% 开头的字符串, 汇编程序在汇编时会自动将子程序链入。 CALCL51/96 禁止用户对此改写,否则会导致调用出错。 D/A 转换取值范围为一个周期,采样点越多,精度越高些。本例采用的采样点为 256 点/ 周期。五. 实验框图程序框图: - 2- 入口查表读波形数据启动D/A 改变计数器及表指针显示完毕返回置计数器初值 NY 开始产生锯齿波数据 256个数据否产生三角波上升部数据 128个数据否产生三角波下降部数据 128个数据否产生正弦波数据 128个数据否显示锯齿波256次显示三角波256次显示正弦波256次 N Y Y NN Y N Y 主程序框图- 3- 读2π/256的浮点数 ASCII码并转换成浮点数产生振幅的浮点数H 产生自变量X的浮点数 A与X相乘计算Sin(A*X) 计算H*Sin(A*X) 把结果转换成两字节无符号数峰值否结果存表峰值处理计算H*Sin(a*(X+π)) 结果存表 128个 SIN 波形 N Y SIN 计算结束 Y N - 4- STACKS SEGMENT STACK ; 堆栈段 DW 128 DUP(?) ; 注意这里只有 128 个字节 STACKS ENDS DATAS SEGMENT ; 数据段 SHUJU DB 67,70,73,76,80,83,86,88,91,94,97,100,102,105,107,109,111, 113,115,117 DB 119,120,122,123,124,125,126,127,127,128,128,128,128,128,127,127,126,125,124,123 DB 122,120,119,117,115,114,111,109,107,105,102,100,97,94,91,89,86,83,80,77 DB 73,70,67,64,61,58,55,52,49,46,43,40,37,34,31,29,26,23,21,19 DB 17,15,13,11,9,8,6,5,4,3,2,1,1,0,0,0,0,0,1,1 DB 2,3,4,5,6,7,9,11,12,14,16,19,21,23,26,28,31,
实验十DA转换实验 来自淘豆网m.daumloan.com转载请标明出处.