实验5、D/A转换实验

news/2024/11/29 0:46:22/

实验内容
基础部分:
1、编写程序,产生周期的锯齿波、矩形波、三角波和阶梯波,经D/A转换,显示在软件模拟示波器上。(要求:每种波形的周期数、阶梯波的阶梯数可通过参数设置。)
拓展部分:
2在软件模拟示波器上显示锯齿波、矩形波、三角波和阶梯波,并使用单脉冲开关KK1在四中波形间进行切换。

代码
基础

A0832 EQU 0600H  CODE SEGMENTASSUME  CS:CODESTART:;产生锯齿波MOV CX, 07H       ;锯齿波周期数
JUCHI:MOV DX, A0832     ;DAC0832接IOY0,0600H为控制端口地址MOV AL, 00H       ;AL为数字量
JC1: OUT DX, AL        ;转换为模拟量CALL DELAY1       ;延时,此为短延时CMP AL ,0FFHJE JC2INC AL            ;AL步加1,直到等于0FFHJMP JC1
JC2:LOOP JUCHI;产生矩形波MOV CX, 05H       ;矩形波周期数
JUXING:MOV DX, A0832MOV AL, 00H       ;先输出00H的波形OUT DX, ALCALL DELAY2       ;长延时MOV AL, 0FFH      ;再输出0FFH的波形OUT DX, ALCALL DELAY2       ;长延时LOOP JUXING;产生三角波MOV CX, 05H     ;三角波周期数
SANJIAO:
SJ1:MOV DX, A0832OUT DX, ALCALL DELAY1       ;短延时CMP AX, 0FFHJE SJ2           INC AL            ;将AL从00H步加0FFHJMP SJ1
SJ2:MOV DX, A0832OUT DX, ALCALL DELAY1       ;短延时CMP AL, 00HJE SJ3DEC AL            ;将AL从0FFH步减至00HJMP SJ2
SJ3:LOOP SANJIAO;产生阶梯波MOV CX, 0FFFFH     ;产生阶梯波的周期数为0FFFF次,如果想改变阶梯波产生周期请修改这里MOV AX, 0FEH       ;波形振幅最大值为0FFH;考虑到8086的DIV除法可能会出现余数为负导致加起来之后的最大值大于0FFH,故使用0FEH作最大值MOV BL,05H         ;阶梯波中的阶梯数,如果想改变阶梯波中的阶梯数请修改这里DIV BL             ;用最大振幅除以阶梯数,得到每个台阶的高度MOV BL, AL         ;将上述除法的商保存在BL中MOV BH, 00H        ;BH置0
JIETI:MOV AX,0000H       ;AX初始化0000H
JT1:MOV DX, A0832OUT DX, ALCMP AX, 00FFH      ;判断AX是否达到幅度上线JAE JT2            ;达到上限,表示一次阶梯波完整生成,开始新一次生成CALL DELAY2        ;长延时ADD AX, BX         ;用当前解体高度加上每个阶梯的高度得到下一阶梯的高度JMP JT1
JT2:    LOOP JIETIDELAY1:                ;短延时PUSH CXMOV CX, 01FFH
D1: PUSH AXPOP AXLOOP D1POP CXRETDELAY2:               ;长延时PUSH CXMOV CX, 0FFFFH
D2: PUSH AXPOP AXLOOP D2POP CXRETCODE ENDSEND START

拓展

DATA SEGMENTSIGN DB 00H  
DATA ENDSCODE SEGMENTASSUME  CS:CODE,DS:DATASTART:MOV AX,0000H        MOV DS,AX           ;设置数据段地址;设置中断向量MOV AX,OFFSET MIR7MOV SI,003CHMOV [SI],AXMOV AX,CSMOV SI,003EHMOV [SI],AXCLI  ;关中断;设置ICW1~ICW4和OCW1MOV AL, 11H     OUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 04HOUT 21H, ALMOV AL, 07HOUT 21H, ALMOV AL, 2FHOUT 21H, ALSTI  ;关中断MAIN:CMP SIGN,00HJE JUCHICMP SIGN,01HJE JUXINGCMP SIGN,02HJE SANJIAOCMP SIGN,03HJE JIETI0JMP MAIN;产生锯齿波MOV CX,05H
JUCHI:CMP SIGN,0HJNE MAINMOV DX, 0600H     ;DAC0832接IOY0,0600H为控制端口地址MOV AL, 00H       ;AL为数字量
JC1: OUT DX, AL        ;转换为模拟量CALL DELAY1       ;延时,此为短延时CMP AL ,0FFHJE JC2              INC AL            ;AL步加1,直到等于0FFHJMP JC1
JC2:LOOP JUCHI;产生矩形波MOV CX, 05H       ;产生矩形波的周期数为5次,如果想改变三角波产生周期请修改这里
JUXING:CMP SIGN,01HJNE MAINMOV DX, 0600HMOV AL, 00H       ;先输出00H的波形OUT DX, ALCALL DELAY2       ;长延时MOV AL, 0FFH      ;再输出0FFH的波形OUT DX, ALCALL DELAY2       ;长延时  LOOP JUXINGZHONGJIAN:JMP MAIN;产生三角波MOV CX, 05H     ;产生三角波的周期数为5次,如果想改变三角波产生周期请修改这里
SANJIAO:
SJ1:CMP SIGN,02HJNE MAINMOV DX, 0600HOUT DX, ALCALL DELAY1       ;短延时CMP AL,0FFHJE SJ2           INC AL            ;将AL从00H步加0FFHJMP SJ1
SJ2:MOV DX, 0600HOUT DX, ALCALL DELAY1       ;短延时CMP AL,00HJE SJ3     DEC AL            ;将AL从0FFH步减至00HJMP SJ2
SJ3:LOOP SANJIAO;产生阶梯波
JIETI0:MOV CX, 05H     ;产生阶梯波的周期数为0FFFF次,如果想改变阶梯波产生周期请修改这里MOV AX, 0FEH       ;波形振幅最大值为0FFH;考虑到8086的DIV除法可能会出现余数为负导致加起来之后的最大值大于0FFH,故使用0FEH作最大值MOV BL,05H         ;阶梯波中的阶梯数,如果想改变阶梯波中的阶梯数请修改这里DIV BL             ;用最大振幅除以阶梯数,得到每个台阶的高度MOV BL, AL         ;将上述除法的商保存在BL中MOV BH, 00H        ;BH置0
JIETI1:CMP SIGN,03HJNE ZHONGJIANMOV AX,0000H       ;AX初始化0000H
JT1:MOV DX, 0600HOUT DX, ALCMP AX, 00FFH      ;判断AX是否达到幅度上线JAE JT2            ;达到上限,表示一次阶梯波完整生成,开始新一次生成CALL DELAY2        ;长延时ADD AX, BX         ;用当前解体高度加上每个阶梯的高度得到下一阶梯的高度JMP JT1
JT2:    LOOP JIETI1
MIR7:PUSH AXCMP SIGN,03HJE SET0INC SIGNJMP QUIT
SET0:MOV SIGN,0H
QUIT:POP AXIRETDELAY1:                ;短延时PUSH CXMOV CX, 01FFH
D1: PUSH AXPOP AXLOOP D1POP CXRETDELAY2:               ;长延时PUSH CXMOV CX, 0FFFFH
D2: PUSH AXPOP AXLOOP D2POP CXRETCODE ENDSEND START

http://www.ppmy.cn/news/261254.html

相关文章

机械臂D-H坐标系的建立

正解与逆解的求解需要相应的机器人运动方程,其中关键的就是DH参数表 DH参数表用来描述机器人各关节坐标系之间的关系,有了DH参数表就可以在机器人各关节之间进行坐标转换 求解正解就是从关节1到关节5的坐标转换 基本知识 : 关节&#xff1a…

H无穷控制学习笔记——H无穷/H2控制

一、 H ∞ / H 2 H_{\infty}/H_2 H∞​/H2​控制问题 实际设计过程中,人们常常需要系统满足多项性能要求。 对于这样的系统: x ˙ A x B u B 1 w 1 B 2 w 2 z 1 C 1 x D 10 u D 11 w 1 z 2 C 2 x D 20 u D 22 w 2 \dot xAxBuB_1w_1B_2w_2\\ …

df -h无响应问题解决

一、问题描述 1、linux下执行df -h 查看已挂在各分区的空间和目录情况,但执行后无反馈 二、影响 1、由于脚本程序调用df -h 判断磁盘空间情况进行日志等清理,故障导致磁盘空间占满不能清理,服务器不能访问。 三、问题分析 1、df -h和分区…

机器人运动学_不同D-H矩阵的对比

机器人运动学_不同D-H矩阵的对比 edit by XZF 在机器人学的运动学分析中,D-H矩阵是正运动学分析的基础,而对于如何建立D-H举证的连杆坐标系,有不同的方法,本文主要介绍其中的两种,并对这两种方法做下对比与分析。 …

hwd分别是长宽高_W H D在尺寸上代表什么??

展开全部 W是width的简62616964757a686964616fe58685e5aeb931333431366334写,就是宽度的意思;D是depth的简写,就是深度的意思;H是hight的简写,就是高度的意思。 Width *Depth* Height表示宽度 * 深度*高度 。 根据箱体…

如何判断视频数据是H264编码

H264详细介绍&#xff1a;H264编码总结 u8 is_h264_file(char *filename) {AVFormatContext *ifmt_ctx NULL;int ret 0;if ((ret avformat_open_input(&ifmt_ctx, filename, 0, 0)) < 0) {printf( "Could not open input file.");return 0;}// printf(&quo…

深度哈希-DHN

Deep Hashing Network for Efficient Similarity Retrieval AAAI 2016 源码&#xff1a;https://github.com/zhuhan1236/dhn-caffe 与上一篇文章类似&#xff0c;通过设计损失函数&#xff0c;使得最后全连接层的输出分布近似于二值{-1&#xff0c;1}分布。不过这篇论文从理论…

机器人导论 学习笔记2 - 运动学(D-H模型)

D-H模型 &#xff08;Denavit-Hartenberg&#xff09; 两种D-H模型&#xff08;标准D-H模型和改进D-H模型&#xff09;比较 1 将连杆坐标系的原点建立在连杆的关节首端 &#xff08;改进型DH&#xff09; 这种建立D-H坐标系的方法的步骤是&#xff1a; 画出各关节轴…