⚠本篇文章参考网址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张实物图,接线一样,只求清晰😉
实验3-1实物图1.jpg 实验3-1实物图2.jpg 实验3-1实物图3.jpg
实验3-2:利用0832产生锯齿波输出,并在直流电机上观察结果(与 实验三中 的 实验3-3 电路图相同)
按照电路图红色的地方接线就可,其余线不用接
可观察到的现象:转 -> 停 -> 转 -> 停...
Y0接ADC0832的CS片选信号接口
Ua 0~5V 的这个接口接入直流电机
实验3-3:利用0832产生三角波输出,并在直流电机上观察结果(与 实验三中 的 实验3-2电路图相同)
按照电路图红色的地方接线就可,其余线不用接
可观察到的现象:转 -> 停 -> 转 -> 停...
Y0接ADC0832的CS片选信号接口
Ua 0~5V 的这个接口接入直流电机
四、软件设计程序流程图
实验3-1:利用0809完成1个通道的模拟量采集,并利用8255输出二进制码
实验3-2:利用0832产生锯齿波输出,并在直流电机上观察结果
实验3-3:利用0832产生三角波输出,并在直流电机上观察结果
五、实验软件代码(加注释)
实验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
六、实验结果
- 实验3-1结果:利用0809完成了1个通道的模拟量采集,并利用8255输出了二进制码。
- 实验3-2结果:利用0832输出了锯齿波,并在直流电机上观察了结果。
- 实验3-3结果:利用0832输出了三角波,并在直流电机上观察了结果。
七、实验小结
实验虽然来源于书上,但是还是在中途遇到了一些小问题,但大部分都是自己粗心,接线口没插对等等,嘿嘿嘿,马上就要结束啦!(实验的“快乐”无法想象😭)
网友评论