A/D模数转换——微机原理实验

一、实验目的
1.在完成前置实验,掌握微机系统的基本原理、EDA软件使用方法、以及实验室硬件资源的基础上,完成本次设计型实验;
2.提高课程知识的综合运用能力;
3.培养分析工程问题、提出设计方案、以及设计微机应用系统的能力。
二、实验内容
监测报警系统:使用ADC采集数据,数码管或屏幕显示电压,高于40v或低于1.0v发出告警声。
三、实验设备
1.计算机( Windows10 64位操作系统);
2.Protues8.7
四、实验原理
1.实验电路连线
在这里插入图片描述
2.具体模块功能原理:

(1)电源模块:通过调节电位器改变输入电阻
(2)ADC0809(仿真使用ADC0808):采集电压数据,将之转化为8位二进制。
(3)8253:PB端信号输出给四位共阳数码管显示
(4)报警模块:与非门控制,当PA端输出信号高于204,或者低于51,则二极管过电,由于NPN工作于饱和区,此时蜂鸣器发出警报声。
五、实验步骤
1.打开Windows10系统,运行Protues8.7仿真软件,开始进行仿真。
2.调节输入电压,仿真工作时,数码管会显示此时的输入电压具体数值
3.当输入电压调节至4V以上,数码管正常显示,蜂鸣器警报;
当输入电压调节至1V以下,数码管只显示小数点后两位数,蜂鸣器警报。

六、实验结果与分析
1.正常电压工作
在这里插入图片描述
2.高于 4V时
在这里插入图片描述
3.低于1V时,显示小数点后两位
在这里插入图片描述
七、实验总结与建议
通过本次的实验,我深入理解ADC0809的工作方式以及工作原理,也使用了8253A以及0809接受信号、处理并传输到数据总线。在进行报警展示时,源于模电知识的不牢固,对于平时习惯连接的三极管和蜂鸣器部分的工作原理解释不到位,只知道高低电
平下三极管起到开关作用。本次实验的完成过程中,我也巩固了之前的知识,培养分析工程问题、提出设计方案、以及设计微机应用系统的能力。

DATAS SEGMENT
    ;此处输入数据段代码  
    IOYO EQU 0C400h;对应的端口地址
    A8255 EQU IOYO+00H*4;A端口
    B8255 EQU IOYO+01H*4;B端口
    C8255 EQU IOYO+02H*4;C端口
    M8255 EQU IOYO+03H*4;8255控制字
    ADC0808 EQU 0C420H;对应的ADC0808的端口  
	TABLE DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
		  DB 80h,90h,88h,83h,0c6h,0a1h,86h,8eh
	RESULT DB 5 DUP(?)
	BUF DB 5 DUP(?)
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
    DB 200 DUP(0)
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;准备工作写控制字
    LEA DI,RESULT;用来保存计算后转换的结果
    MOV DX,M8255
    MOV AL,99H;1001 1001
    OUT DX,AL
    MOV DX,B8255
    MOV AL,0FH
    OUT DX,AL
    ;相当与单片机的while(1)部分
	;这里是0808测量部分部分,这里测量得到al的结果为1010 1000
LOOP1:
	MOV DX,ADC0808
	MOC AL,0
	OUT DX,AL
	MOV DX,C8255
EOC:
	IN AL,DX
	TEST AL,01H;00表示还在转换
	JZ EOC
	JMP FINISH	
FINISH:
	MOV DX,A8255
	IN AL,DX
	;计算转换结果
	MOV AH,00H;将ah中的内容清零
	MOC BX,01F4H;500的16进制
	MUL BX;将al和500相乘,高位放到dx中,低位存在ax中
	MOV BX,0FFH
	DIV BX;除以255得到的结果,ax中结果为0000 0001 0100 1001
	MOV CX,AX;cx中备份数据
	;显示结果
	;将数据转换为十进制
	mov bx,10
	mov si,2;三位
toDec:
	mov dx,0
	div bx;(dx,ax)/bx中的数据除以bx
	mov [buf+si],dl;余数为该位上的值,第一次循环为个位,第二次为十位
	dec si
	cmp ax,0;商为0表示算法结束
	ja toDec
	;计算个位
	inc si
	mov al,[buf+si]
	inc si
	mov bx,offset table
	xlat
	and al,7fh;加上小数点
	mov [di],al
	;计算第一个小数点位
	mov al,[buf+si]
	inc si
	xlat table
	mov [di+1],al
	;计算第二个小数点位
	mov al,[buf+si]
	xlat table
	mov [di+2],al
	;完成数码管动态扫描刷新
	mov dx,b8255;8255芯片
	or dx,0800h;;0000 1000 0000 0000
	mov al,[di+2]
	out dx,al
	call delay_2ms
	mov dx,b8255
	or dx,1000h;0001 0000 0000 0000
	mov al,[di+1]
	out dx,al
	call delay_2ms
	mov dx,b8255
	or dx,1800h;0001 1000 0000 0000
	mov al,[di]
	out dx,al
	call delay_2ms
	jmp LOOP1;循环
    MOV AH,4CH
    INT 21H

delay_2ms proc near
	push bx
	mov bx,1ffh
LP2:
	pushf
	popf
	dec bx
	jnz lp2
	pop bx
	ret
delay_2ms endp
CODES ENDS
    END START
  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猛汉轻敲乱码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值