北京理工大学微机原理实验报告四.docx
- 文档编号:23988049
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:18
- 大小:994.29KB
北京理工大学微机原理实验报告四.docx
《北京理工大学微机原理实验报告四.docx》由会员分享,可在线阅读,更多相关《北京理工大学微机原理实验报告四.docx(18页珍藏版)》请在冰豆网上搜索。
北京理工大学微机原理实验报告四
本科实验报告
实验名称:
A/D和D/A转换
课程名称:
实验时间:
任课教师:
实验地点:
实验教师:
实验类型:
□原理验证
■综合设计
□自主创新
学生姓名:
学号/班级:
组号:
学院:
同组搭档:
专业:
成绩:
实验四A/D和D/A转换
一、实验目的
1、了解A/D转换的基本原理,掌握ADC0809的使用方法。
2、了解D/A转换的基本原理,掌握DAC0832芯片的使用方法。
3、了解直流电机控制的基本方法。
二、实验内容与步骤
(一)A/D转换部分
1、接线:
2、实验电路原理图下图
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换:
Out298H
读取转换结果:
In298H
3、用万用表测量CLOCK、ADD-C、ADD-B、ADD-A在实验系统上如何联系的。
4、编程按中断方式采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
5、考虑如果采用IN7输入的电压,启动开始转换和读取转换结果的地址应该是多少。
6、按查询方式采集IN0输入的电压,软硬件如何实现。
编程方案
1、ADC0809的IN0口地址为298H。
2、IN0单极性输入电压与转换后数字的关系为:
其中Ui为输入电压,UREF为参考电压,这里的参考电压为+5V电源。
3、一次A/D转换的程序可以为
MOVDX,Port
OUTDX,AL;启动转换
;延时
INAL,DX;读取转换结果放在AL中
(二)D/A转换部分
1、接线:
CS/0832接Y2/IO地址
用万用表测量WR2和XFER在实验系统上如何联系的。
2、实验电路原理如图2,DAC0832采用单缓冲方式,具有单双极性输出端(图中的Ua、
Ub),利用debug输出命令(Out290数据)输出数据给DAC0832,用万用表测量单极性输出端
Ua及双极性输出端Ub的电压,验证数字与电压之间的线性关系。
3、编程产生以下波形(从Ub输出,用示波器观察)
(1)锯齿波
(2)正弦波
编程方案
1、8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:
(UREF表示参考电压,N表示数据),这里的参考电压为+5V电源。
2、产生锯齿波只须将输出到DAC0832的数据由0循环递增。
产生正弦波可根据正弦函
数建一个下弦数字量表,取值范围为一个周期,表中数据个数在16个以上。
3、流程图:
(三)直流电机转速控制
1、按图5线路接线:
CS/0832接Y2/IO地址
UB/0832接直流电机DJ
CS/8255接Y1/IO地址
PC7~PC0/8255接K7~K0/逻辑电平开关
2、编程利用DAC0832输出一串脉冲,经放大后驱动小直流电机,利用开关K0~K5控
制改变输出脉冲的电平及持续时间,达到使电机加速,减速之目的。
实验原理简述
小直流电机的转速是由Ub输出脉冲的占空比来决定的,正向占空比越大转速越快,反
之越慢。
见图6例:
在本实验中,模拟量输出Ub为双极性,当输入数字量小于80H时输出为负,输入等于80H时为0V,输入大于80H时输出为正。
因而本实验中,DAC0832输入数字量只有2个(80H和FFH),通过不同的延迟时间达到改变小电机转速的目的。
程序框图
编程方案
通过给DAC0832输入80H时,Ub为0V,给DAC0832输入FFH时,Ub为5V,来控制加给小电机的脉冲电平,通过控制两段延迟时间,来控制占空比。
例如,我们给两段延迟系数都为0400h,来得到占空比接近于1的脉冲。
三、实验代码及注释
1、AD转换
DATASEGMENT
INT0BDW2DUP(?
)
IMRDB?
P_ADDW298H
TABDB'0123456789ABCDEF'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCPAR
MOVAX,DATA
MOVDS,AX
CLI;关闭中断为修改中断向量表准备
PUSHES;保护ES和BX中的向量,防止程序出错
PUSHBX
MOVAH,35H;读取0B中断向量。
35H是INT21H中读取中断向量表的中断类型号
MOVAL,0BH;使用的是0B中断,所以就读取0B中断,以上两步都是为了保护原有的0B中断
INT21H
MOVINT0B,ES;将得到的中断向量储存起来,方便后面的恢复
MOVINT0B+2,BX
POPBX
POPES
PUSHDS;保护原有的DS和DX
PUSHDX
MOVDX,OFFSETADPRO
PUSHBX
MOVBX,SEGADPRO;seg是段地址
MOVDS,BX;将段地址给DS
POPBX
MOVAX,250BH
INT21H
POPDX
POPDS
INAL,21H;从8259中读取屏蔽字
MOVIMR,AL;将读取的屏蔽字储存起来,为了后面的恢复
ANDAL,0F7H
OUT21H,AL;将新的屏蔽字写入到8259中
NEXT:
MOVDX,P_AD
MOVAL,0
OUTDX,AL;输出到ad0809
PUSHCX;延时等待AD转换,并检测是否有按键
MOVCX,100;循环100次
LOOP$
POPCX
STI;开中断,进行AD转换
MOVAH,1
INT16H
JZNEXT
CLI;关闭中断
MOVAL,IMR;将之前的8259的屏蔽字恢复
OUT21H,AL;将原屏蔽字输出到8259中
PUSHDX
PUSHDS
MOVDX,INT0B;将原有的0B中断向量的段地址恢复到DS中
MOVDS,DX
MOVDX,INT0B+2;将原有的0B中断向量的偏移量恢复到DX中
MOVAX,250BH;和之前一样,写入0B中断向量表
INT21H
POPDS
POPDX
MOVAX,4C00H;结束程序
INT21H
MAINENDP
ADPROPROCFAR
PUSHAX
PUSHDX
MOVDX,P_AD;读入AD转换结果
INAL,DX
LEABX,TAB
MOVAH,0
PUSHAX
SHRAX,
ANDAX,0FH;
MOVSI,AX;
MOVDL,[BX+SI];将对应的字母的ASCII的码值给DL
MOVAH,2;显示16进制的高位的字母表示
INT21H
POPAX
ANDAL,0FH;
MOVSI,AX;;后面与高位的显示一样
MOVDL,[BX+SI]
MOVAH,2
INT21H
MOVDL,0DH;输出回车
MOVAH,2
INT21H
MOVDL,0AH;输出换行
MOVAH,2
INT21H
MOVDX,50
DELAY:
;延时的时间是50*65536个指令周期
MOVCX,0
LOOP$;与之前的延时相同
DECDX
CMPDX,0
JNZDELAY
MOVAL,20H;中断子程序结尾要告知8259,中断子程序结束了
OUT20H,AL
POPDX
POPAX
IRET
ADPROENDP
CODEENDS
ENDMAIN
2、DA转换
DATAsegment
PORT8255EQU288h
DAPROTDW290H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
MOVAX,DATA
MOVDS,AX
MOVDX,PORT8255+3
MOVAL,10001001B
OUTDX,AL
NEXT:
MOVDX,DAPROT
MOVAL,80H
OUTDX,AL
MOVAH,1
INT16H
JNZDONE;有输入则DA转换结束
MOVDX,PORT8255+2
INAL,DX;读入PC0-PC7的状态
MOVAH,0;使AH的高位置0,方便与BX进行加减运算
MOVBX,400H
ADDAX,AX;将输入的数扩大4倍
ADDAX,AX
PUSHAX
SUBBX,AX;占空比为1,则0V延时为0,所以相减
GOSUB:
MOVCX,0
LOOP$;本指令跳转到本指令起到延时作用
CMPBX,0
JNZGOSUB
MOVDX,DAPROT;是0832输出+5V的电压
MOVAL,0FFH
OUTDX,AL;输出到0832
MOVBX,0H;为输出+5V的延时准备
POPAX;得到之前进行了4倍扩大后的8255C口的值
ADDBX,AX;作为延时控制使用
GOADD:
MOVCX,0;与之前对于0V输出的操作延时一样
LOOP$
CMPBX,0
JNZGOADD
JMPNEXT;继续下一次的DA转换过程
DONE:
MOVAH,4CH
INT21H
MAINENDP
CODEENDS
ENDMAIN
3、DA转换之锯齿波
DATASEGMENT
DAPROTDW290H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
MOVAX,DATA
MOVDS,AX
MOVDX,DAPROT
MOVAL,0;用于转换的DA的数字大小
NEXT:
OUTDX,AL;向DA送数据
ADDAL,5;每次加5
CMPAL,255
JNEGO
MOVAL,0
GO:
MOVCX,50000;延时50000个指令周期
LOOP$
MOVAH,1
INT16H
JZNEXT
MOVAH,4CH
INT21H
MAINENDP
CODEENDS
ENDMAIN
4、DA转换之正弦波
DATASEGMENT
DAPROTDW290H
SIN_DATADB80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH
DB0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96H
DB80H,66H,4EH,38H,25H,15H,09H,04H
DB00H,04H,09H,15H,25H,38H,4EH,66H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
MOVAX,DATA
MOVDS,AX
MOVDX,DAPROT
BEGIN:
MOVBH,32
LEASI,SIN_DATA
NEXT:
MOVAL,[SI]
OUTDX,AL
INCSI
DECBH
MOVCX,10000
LOOP$
CMPBH,0
JZBEGIN
MOVAH,1
INT16H
JZNEXT
MOVAH,4CH
INT21H
MAINENDP
CODEENDS
ENDMAIN
四、实验结果
1、实验时,转动旋钮,观察程序运行时数字的变化,并用万用表检测板子的电压值。
①当数字为16进制的B6即2进制的182时,电压值为3.49V。
3.49×256÷5=178.688,与182基本相同。
②当数字为16进制的32即2进制的50时,电压值为0.96V。
0.96×256÷5=49.152,与50基本相同。
2、DA转换时,示波器上显示出的锯齿波和正弦波的图形分别如下:
五、实验心得与体会
这次实验是关于模/数转换的,在以前的基础上,又借助了示波器和万用表来测量实验数据及结果。
通过这次实验,我了解了A/D、D/A转换的基本原理,掌握了ADC0809、DAC0832芯片的使用方法,了解直流电机控制的基本方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 微机 原理 实验 报告