HUNAN CITY UNIVERSITY 微机原理与接口课程设计报告
设计课题名称:声-光报警系统2(远程触发报警)班级:
学号:
姓名:
指导老师:
2012 年06 月 15 日
一、
设计时间
2012年 06月11日—06月15日
二、 设计地点
湖南城市学院新校区一实验楼321机房
三、 设计目的
熟悉可编程并行接口芯片8255的使用和学习开关量接口电路及其控制程序
的设计方法。
四、 设计小组成员 五、 指导老师
李正华老师、阳俊老师
六、 设计课题
声-光报警系统2(远程触发报警)
七、基本思路及关键问题的解决方法
利用MFID 实验平台和声-光报警器模块进行硬件电路连接,利用MF2KI 集成
开发环境进行声光报警器软件控制程序设计、调试,直到报警器正常工作。 1、硬件连线: 单线连法如右图:
2、将平台的电源开关拔到“内”的位置上。在配套集成环境下进行硬件检测,达到初始化芯片的目的.
3、打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM 文件或者使用集成环境自带的C++/ASM 参考程序进行调试、运行。
4、观看实验现象得出结论。
八、算法及流程图
F 区
PA0
PA7 PC6
PC2
M 区
Q 区 SW3 L1
L8 OE#74LS37
控制(音调) T 区 GND
开始
8255初始化
熄灭LED
关闭SPK
N
SW按下?
Y
LED发光
Call LED flash
SPK 发声(高)
Call outSPK
LED全灭
SPK发声(低)
Call outSPK
N
任意键按下?
Y
熄灭LED
关闭SPK
结束
九、调试过程出现的问题及相应解决办法
1、在调试过程中,当取出模块电源L区的JP7和JP8时,LED灯熄灭,
警报解除,这时只有用单线将模块电源L区JP7和JP8跳接或用排线将模块电源L区JP8跳接才能使实验正常运行,得到预期的目的。
2、在调试过程中,当接线错误时,此时不会出任何现象。所以,解决的唯
一方法就是重新接线,理清思路,结合源程序与硬件连线将线连接好。
3、刚开始的时候,运用PA口来查询SW3是否按下,遇到了没有按下SW3
而就进行发出报警声以及LED灯闪烁。而按下SW2终止程序没有问题。后
经过查询得知PA0的初始值就为低电平,而SW3键的按下同时产生一个低
电平因此即使不按下SW3键也会产生低电平,因此会造成不能正确的接受
SW3信号。后改为PC4查询SW3键的按下,程序运行正确。
4、首先调试运行基于查询方式的声光报警器的调试。执行程序,按下SW3
键,发出报警声,以及LED灯按规律闪烁。从一边开始,第一次有一个登
闪烁,每闪烁一次,增加一个灯闪烁,待八个灯一起闪烁后,重复该过程,
一直到按下SW2程序结束运行为止。然后调试运行基于中断方式的声光报
警器,运行结果同上。
十、课程设计心得体会
通过此次实验我感觉到:在做微机接口实验时,必须先读懂有关实验
箱的使用说明书,和试验箱上的各芯片的使用说明书,不能完全的按课本
上的说明进行编写程序,比如:像课本上给的8255A的编程接口地址是
200H,但试验箱的给的却是300H。在硬件连线的时候要完全按照自己所设
计电路图进行连接,并且把相应跳线接口连接好。在试验中出现问题要对
照自己所设计的过程,一步一步进行认真的查找,要学会自己独立的对问
题进行思考和解决
十一、源程序及参考文献
实验源程序
stack1 segment
dw 200 dup (?)
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 dw 0 ;初始化延时变量为0
num dw 0 ;初始化数字变量为0
data7 db 81h,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
int 21h
mov dx,303h ;初始化8255
mov al,83h
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 ;调用喇叭发声子程(低频) dec bx
jnz loson
call delay2
mov ah,0bh ;查任意键按下?
int 21h
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
int 21h ;返回DOS
sl endp
delay1 proc ;延时子程1
push bx
mov bx,t
dl1: dec bx
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;打开8253
out dx,al
call delay1
mov dx,303h
mov al,0ch ;置PC6=0;关闭8253
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
参考文献
[1]夏士兵,钱江.构建基于COM+的分布式Web应用.微型机与应用,2001.20(6):8-9
[2][美]Richard Anderson, Chris Blexrud著.ASP3高级编程[M].张立民等译.北京:机械工业出版社,2000:408-458.