声光报警器实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8255A 并行实验(一)选做
一、实验目的
进一步熟悉可编程并行接口芯片8255的使用和学习开关量接口电路及其控制程序的设计方法。
二、实验内容
编写程序控制音乐发生器和LED 工作使他们组成声光报警装置,自己设置按键来控制音乐发生器启停。
三、实验要求
利用MFID 实验平台和声-光报警器模块进行硬件电路连接,利用MF2KI 集成开发环境进行声光报警器软件控制程序设计、调试,直到报警器正常工作。
四、实验原理
1.声-光报警器模块板电路原理如图4.1所示。
模块板上包括4种简单的I/O 外设:扬声器、8个LED 彩灯、8位DIP 开关及按钮开关SW3。
它们都是并行接口的对象,虽然功能单一,结构简单,但都必须通过接口电路才能进入微机系统,接受CPU 的控制,发挥相应的作用。
2.声-光报警器接口的设计原理与方法,参考计算机接口技术相关参考书。
图4.1 声-光报警器模块板电路原理框图
五、实验步骤:
1.准备工作
将实验平台的电源开关拔到“内”的位置。
启动“MF2KI ”集成环境,对8255芯片进行测试,确保工作正常。
2.硬件连线:
(1)跳线设置:如果采用单线连接,则将模块电源L 区JP7和JP8跳接;如果采用排线连接,则将模块电源L 区JP8跳接。
26 芯 并 行 口 插 座
50 芯 扩 展 总 线
(2)单线连法如右图:
(3)排线接法如右图:
3.程序设计、编译、连接、运行
在“虚拟课堂”——“参考程序”页面中,下载8255并行实验(一):soundl.asm程序到本地机器的E盘目录下,对照实验原理和程序流程图把相应空格处的代码填写好,然后对程序进行调试、运行。
4.实验观察
记录实验现象,对照实验现象分析参考程序,得出结论。
附:
(1)程序流程图:
(2)参考程序:stack1 segment
dw200dup (?)
stack1 ends
data segment para public 'data'
message db 'press SW3 to start !',0ah,0dh;系统提示
db 'if you want to quit, please hit Any Key!',0ah,0dh,'$'
t dw0;初始化延时变量为0 num dw0;初始化数字变量为0
data7 db81h,42h,24h,18h,81h,42h,24h,18h
data ends
code segment para public 'code'
assume ss:stack1,cs:code,ds:data
sl proc far
start: mov ax,stack1
mov ss,ax
mov ax,data
mov ds,ax
mov ah,09h;显示系统提示
mov dx,seg message
mov ds,dx
mov dx,offset message
int21h
mov dx,303h;初始化8255
mov al,083h
out dx,al
mov dx,300h;LED全灭
mov al,00h
out dx,al
mov dx,303h;关闭SPK
mov al,0ch
out dx,al
wait1: mov dx,302h;查SW3按下?
in al,dx;(PC2=0?)
and al,04h
jnz wait1 ;未按下,等待
begin: call ledflash ;已按下,调用LED发光子程mov bx,200
mov t,0ffffh
hison: call outspk ;调用喇叭发声子程(高频)dec bx
jnz hison
mov dx,300h;LED全灭
mov al,00h
out dx,al
mov bx,200
mov t,0afh
loson: call outspk ;调用喇叭发声子程(低频)
jnz loson
call delay2
mov ah,0bh;查任意键按下?
int21h
cmp al,0ffh
je quit ;有任意键按下,退出
jmp begin ;无任意键按下,继续quit: mov dx,300h;LED全灭
mov al,00h
out dx,al
mov dx,303h;关闭SPK
mov al,0ch
out dx,al
mov ah,4ch
int21h;返回DOS
sl endp
delay1 proc;延时子程1
push bx
mov bx,t
jnz dl1
pop bx
ret
delay1 endp
delay2 proc;延时子程2 push cx
push bx
mov cx,04ffh
dl4: mov bx,0ffffh
dl3: dec bx
jnz dl3
dec cx
jnz dl4
pop bx
pop cx
ret
delay2 endp
outspk proc;喇叭发声子程
mov dx,303h;从PC6输出方波
mov al,0dh;置PC6=1;
out dx,al
call delay1
mov dx,303h
mov al,0ch;置PC6=0;
out dx,al
call delay1
ret
outspk endp
ledflash proc;LED发光子程序
mov si,offset data7 ;LED的点亮代码
add si,num mov al,[si]
mov dx,300h;从8255的A口输出LED点亮代码
out dx,al
inc num
cmp num,08h
jne next
mov num,00h
next: ret ledflash endp
code ends
end start。