实验三 ADC0809+DAC0832实验

2020-07-13  本文已影响0人  Redcarp

⚠本篇文章参考网址1:https://wenku.baidu.com/view/e04ce53c42323968011ca300a6c30c225901f099.html
⚠本篇文章参考网址2:
https://blog.csdn.net/qq_43207916/article/details/101175695

目测应该是个17级的大佬?
⚠感谢我可爱的室友们在实验过程中对我的帮助 + 一部分学习资料的提供
⚠感谢ZYLXGG
⚠感谢大佬们在实验课程中的扶贫工作

害,不赞同你们单纯的抄袭行为嗷,希望能帮你们解决一些实际问题,但不希望你们的实验报告完全照搬嗷,还是要看懂原理,不然考试咋搞啊,这也是我头秃的问题,唉😔

关于这些代码,其实可以把网址存在txt文本里,然后就可找到这个专题啦,接着搬搬代码就可以啦(啊,我什么都没说,要自己肝代码!💪),也不用每次都提前搞代码,或者手机看网页,手动抄代码,电脑大屏 + ctrl c/v 香香甜甜😏!

啥都别说,感觉要写不完作业了....jpg

一、实验题目:

1.利用0809完成1个通道的模拟量采集,并利用8255输出二进制码。(参考书上309页)
2.利用0832产生锯齿波输出,并在直流电机上观察结果。(参考书上301页例10.1 + 书上304页例10.3)
3.利用0832产生三角波输出,并在直流电机上观察结果。(参考书上301页例10.2 + 书上304页例10.3)

二、实验目的:

熟悉汇编语言编程环境,掌握0809及0832芯片工作原理、电路设计及利用汇编语言编写接口软件。

三、实验电路图

I/O译码地址选择接口:

0809芯片:片选信号为Y0
280H -> IN0
281H -> IN1
282H -> IN2
283H -> IN3
284H -> IN4
...
287H -> IN7
实验中我们选择:IN4接入直流信号0~5V,拧下方旋钮来调节电压

8255芯片:片选信号为Y2
Y7:290H-297H
290H -> A口
291H -> B口
292H -> C口
293H -> 控制口
实验中我们选择:PA7低电平时作为输入,B口作为输出

0832芯片:片选信号为Y0
Y0:280H-287H
280H -> A口
281H -> B口
282H -> C口
283H -> 控制口
实验中我们选择:A口、B口作为输入,C口作为输出

实验3-1:利用0809完成1个通道的模拟量采集,并利用8255输出二进制码
按照电路图红色的地方接线就可,其余线不用接
可观察到的现象:拧下方旋钮,直流信号越大,LED表示的数值越大
IN4接直流信号0~5V,拧下方旋钮来调节电压
Y0接ADC0809的CS片选信号接口,Y2接8255的CS片选信号接口

实验3-1电路图.png
3张实物图,接线一样,只求清晰😉
实验3-1实物图1.jpg 实验3-1实物图2.jpg 实验3-1实物图3.jpg

实验3-2:利用0832产生锯齿波输出,并在直流电机上观察结果(与 实验三中 的 实验3-3 电路图相同)
按照电路图红色的地方接线就可,其余线不用接
可观察到的现象:转 -> 停 -> 转 -> 停...
Y0接ADC0832的CS片选信号接口
Ua 0~5V 的这个接口接入直流电机

实验3-2电路图.png 实验3-2实物图.jpg

实验3-3:利用0832产生三角波输出,并在直流电机上观察结果(与 实验三中 的 实验3-2电路图相同)
按照电路图红色的地方接线就可,其余线不用接
可观察到的现象:转 -> 停 -> 转 -> 停...
Y0接ADC0832的CS片选信号接口
Ua 0~5V 的这个接口接入直流电机

实验3-3电路图.png 实验3-3实物图.jpg

四、软件设计程序流程图

实验3-1:利用0809完成1个通道的模拟量采集,并利用8255输出二进制码

实验3-1程序流程图.jpg

实验3-2:利用0832产生锯齿波输出,并在直流电机上观察结果

实验3-2程序流程图.jpg

实验3-3:利用0832产生三角波输出,并在直流电机上观察结果

实验3-3程序流程图.jpg

五、实验软件代码(加注释)

实验3-1:利用0809完成1个通道的模拟量采集,并利用8255输出二进制码

CODE SEGMENT
     ASSUME CS:CODE
START:
     MOV DX,293H;8255初始化,I/O译码选择Y2
     MOV AL,10010000B;A口输入,B口和C口输出
     OUT DX,AL
XX:  MOV DX,284H;ADC0809I/O译码选择Y0,启动转换,IN4作为可变电压的输入端口
     OUT DX,AL
NO:  MOV DX,290H;读入8255A口状态,ADC0809将EOC中的脉冲给到8255A口
     IN  AL,DX
     TEST AL,80H;检测8255的PA7是否为高电平
     JZ NO;是,继续循环等待
     MOV DX,284H;否,PA7处于低电平状态时,读入数据
     IN  AL,DX
     MOV DX,291H;8255B口输出
     OUT DX,AL
     JMP XX;循环检测该代码
CODE ENDS
     END START

实验3-2:利用0832产生锯齿波输出,并在直流电机上观察结果

CODE SEGMENT
     ASSUME CS:CODE
START:
;锯齿波
BO:     MOV AL,0
AGAIN:  INC AL;AL=AL+1
        MOV DX,280H
        OUT DX,AL;数据打入输入寄存器,启动D/A转换
        MOV BX,100
DELAY:  MOV CX,10005;双层循环延时,软延时程序
LOOP1:  LOOP LOOP1;CX=CX-1
        DEC BX
        JNZ DELAY
        CMP AL,0
        JNZ AGAIN;AL不为0,继续循环,为零则退出
        OUT DX,AL;数据打入输入寄存器
        JMP BO;循环检测该代码
CODE    ENDS
        END START

实验3-3:利用0832产生三角波输出,并在直流电机上观察结果

CODE SEGMENT
     ASSUME CS:CODE
START:
     MOV AL,44H;下限值1.292V
UP:  MOV DX,280H;接口是Y0
     OUT DX,AL;D/A转换
     INC AL;数值增1
     MOV DI,20H;双层循环延时
     MOV CX,65535
     CALL DELAY
     CMP AL,81H;超过上限了嘛?
     JNZ UP;否,跳转UP
     DEC AL;超过了,数值减量
DOWN:MOV DX,280H;接口是Y0
     OUT DX,AL
     DEC AL;AL自减1
     MOV DI,20H;双层循环延时
     MOV CX,65535
     CALL DELAY
     CMP AL,43H;低于下限了嘛?
     JNZ DOWN;否,跳转DOWN
     JMP START;转下一个周期
DELAY:
NEXT:LOOP NEXT;CX自减1
DEC DI;DI自减1
JNZ DELAY
RET;DELAY这段程序的终结标志,101页
CODE ENDS
     END START

六、实验结果

  1. 实验3-1结果:利用0809完成了1个通道的模拟量采集,并利用8255输出了二进制码。
  2. 实验3-2结果:利用0832输出了锯齿波,并在直流电机上观察了结果。
  3. 实验3-3结果:利用0832输出了三角波,并在直流电机上观察了结果。

七、实验小结

实验虽然来源于书上,但是还是在中途遇到了一些小问题,但大部分都是自己粗心,接线口没插对等等,嘿嘿嘿,马上就要结束啦!(实验的“快乐”无法想象😭)

上一篇下一篇

猜你喜欢

热点阅读