研究声光报警器 的内容.docx
- 文档编号:10431302
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:30
- 大小:273.78KB
研究声光报警器 的内容.docx
《研究声光报警器 的内容.docx》由会员分享,可在线阅读,更多相关《研究声光报警器 的内容.docx(30页珍藏版)》请在冰点文库上搜索。
研究声光报警器的内容
题目:
声光报警器的设计
一、目的
熟悉可编程并行接口芯片8255的使用,学习开关、扬声器、LED等I/O设备的控制方法,并进一步掌握简单的微机接口应用系统的设计。
二.内容:
设计一个声光报警器的硬件电路和控制程序。
一旦按下SW3按钮开关,发光二级管按规律闪烁,同时扬声器发出声音;当按下SW2按钮开关,发光二级管停止闪烁,声音停止。
硬件设备包括一台微机、一个MIFID微机实验箱、插线若干。
控制程序采用Intel8088宏汇编语言编写。
三.要求:
1.针对设计内容,提出两种设计方案,要求分别采用查询方式和中断方式接受SW3的开关信号。
(采用中断方式时,使用IRQ10接受中断信号。
)
2.针对每种设计方案进行硬件设计和软件设计:
画出每种设计方案的硬件连接图;并按照硬件连接设计相应的控制程序。
3.在MIFID微机实验箱上调试,并通过验收。
4.撰写课程设计报告,报告中应该包括以下内容:
设计中使用的关键技术和方法,设计方案说明(包括硬件设计和软件设计),调试及评估,遇到的问题及思考以及改进的设想。
四.进度安排:
序号
内容
所用时间
1
整体方案设计
1天
2
接口电路连线/编写程序
2天
3
软硬件调试
1天
4
撰写课程设计报告
1天
合计
5天
声光报警器的设计
一、系统描述:
1.课程设计的目的
熟悉可编程并行接口芯片8255的使用,学习开关、扬声器、LED等I/O设备的控制方法,并进一步掌握简单的微机接口应用系统的设计。
2.问题域描述
[1]课程设计内容
设计一个声光报警器的硬件电路和控制程序。
一旦按下SW3按钮开关,发光二级管按规律闪烁,同时扬声器发出声音;当按下SW2按钮开关,发光二级管停止闪烁,声音停止。
硬件设备包括一台微机、一个MIFID微机实验箱、插线若干。
控制程序采用Intel8088宏汇编语言编写。
[2]设计要求
b)针对设计内容,提出两种设计方案,要求分别采用查询方式和中断方式接受SW3的开关信号。
(采用中断方式时,使用IRQ10接受中断信号。
)
c)针对每种设计方案进行硬件设计和软件设计:
画出每种设计方案的硬件连接图;并按照硬件连接设计相应的控制程序。
d)在MIFID微机实验箱上调试,并通过验收。
e)撰写课程设计报告。
[3]设计思路
a)基于查询方式的设计
声-光报警器模块板电路原理如下图所示。
模块板上包括4种简单的I/O外设:
扬声器、8个LED彩灯、8位DIP开关及按钮开关SW3。
它们都是并行接口的对象,虽然功能单一,结构简单,但都必须通过接口电路才能进入微机系统,接受CPU的控制,发挥相应的作用。
b)基于中断方式的设计
引用1.19318MHz时钟信号输入给Intel8253通道2,通道2的输出信号OUT2接扬声器的音调。
从Intel8255的A口向发光二极管输出相关信号,控制其闪烁。
OE#端接地。
置8255的C口的高四位输出,由PC6控制扬声器的门控信号,同时控制GATE2。
编写程序,针对上述要求,对实验箱中Intel8253(通道0端口地址为304h,A1A0作为片内寻址)、Intel8255(A口地址为300h,A1A0作为片内寻址)及PC机中的2片Intel8259(主片偶地址为20h,从片偶地址为a0h)进行配置,主程序通过对8253和8255的初始化、控制中断以及对各子程序的调用控制实现对发光二极管和扬声器的开关控制。
二、使用平台说明
1.硬件平台
本次课程设计的硬件设计连接在MFID微机实验平台上进行,所编写的汇编语言程序在与之相连的PC机上的汇编语言环境下进行编译连接运行。
其总体布局如下图:
本次实验主要用到了其中的8255,8253以及LED灯,SW3,SW2键,IRQ10接口。
2.软件平台
MASMforWindows集成实验环境6.0。
3.主要芯片的地址范围
本平台系统提供的I/O地址范围是300H~30FH,目前已使用的I/O地址有:
(1)8255A:
300H~303H
(2)8253A:
304H~307H
三、设计中所用器件的详细说明
1.8255的工作原理
8255共有两个控制字,即工作方式控制字和相对C口进行置位或复位的控制字。
8255工作原理图如下:
它包含数据端口A,B,C。
每一个端口都是8位,都可以选择作为输入或输出,但功能上有着不同的特点:
(1)端口A:
一个8位数据输出锁存和缓冲器;一个8位数据输入锁存器。
(2)端口B:
一个8为数据输入/输出、锁存/缓冲器;一个8位数据输入缓冲器;
(3)端口C:
一个8为数据输出锁存/缓冲器;一个8位数据输入缓冲器(输入没有锁存);
通常端口A或B作为输入/输出的数据端口,而端口C作为控制或状态信息的
端口,它在“方式”字的控制下,可以分成两个四位的端口。
每个端口包含一个四位锁存器。
它们分别与端口A和B配合使用,可用作为控制信号输出,或作为状态信号输入。
8255有三种基本的工作方式:
(1)方式0:
基本输入/输出;
(2)方式1:
选通输入/输出;
(3)方式2:
双向传送;
8255的控制字格式如下:
控制字端口地址:
303h
端口A的地址:
300h
端口B的地址:
301h
端口C的地址:
302h
2.8253的工作原理:
对CLK信号进行减1计数。
首先,CPU将控制字写入控制寄存器,将计数初始值写入初值寄存器。
计数从初值开始,,在GATE控制下,每当CLK信号出现一次,计数值减1。
当计数值减到0,从OUT端输出规定的信号。
CLK信号出现时,计数器是否减1,由门控信号GATE控制。
功能如下:
⏹8253具有三个独立的16位计数器(0#~2#通道);
⏹每个通道有6种工作方式;
⏹可以进行二进制或十进制计数,计数方式为减1计数。
⏹最高计数频率2.6MHZ
内部结构图如下:
包括三个计数器,以及一个控制字寄存器。
三个计数器相互独立。
每个计数器可以独立的选择0~5共6种工作方式。
本次课程设计用到了计数器1设置为工作方式0,以及计数器2选择工作方式3。
其控制字格式如下:
计数器0地址:
304h
计数器1地址:
305h
计数器2地址:
306h
控制字地址:
307h
3.8259的工作原理:
中断就是指CPU响应中断请求,暂停现行的主程序,转去执行中断服务子程序,完成中断事件处理后,返回断点继续执行主程序的过程。
8259内部结构如下:
8259A的具体中断请求,响应过程分步详述如下:
c)8259A的一条或几条IRI信号线高电平有效表示请求中断,使IRR的DI位置位;
d)8259A对这些请求进入进行分析,如果中断允许则向CPU发出INT信号;
e)CPU在允许可屏蔽中断状态时对INTR作出响应,产生中断响应周期;
f)8259A收到第一个INTA\有效信号后,使最高优先权的ISR位置位,对应的IRR位复位;
g)8259A在第二个INTA\有效时,把中断向量号送上数据总线,供CPU读取;
h)利用向量号转至中断服务程序,直到执行IRET指令返回。
与此同时,若8259A工作在自动结束方式在最后一个INTA\时,发生中断的ISR相应位复位,8259A认为中断已完成。
如果8259A工作在非自动中断结束方式,就等待CPU发中断结束命令,该命令使ISR复位。
四、详细的设计过程
1.基于查询的设计
硬件连线图如下图所示:
排线接法如右图:
程序流程图
根据此流程图写的程序如下:
datasegment;parapublic'data'
messagedb'pressSW3tostart!
',0ah,0dh;系统提示
db'ifyouwanttoquit,pleaseswitchSW2!
',0ah,0dh,'$'
tdw0;初始化延时变量为0
numdw0;初始化数字变量为0
data7db01h,03h,07h,0Fh,1Fh,3Fh,7Fh,0FFh;显示灯首先只亮一个,然后逐渐增加到8个
dataends
codesegment;parapublic'code'
assumecs:
code,ds:
data;ss:
stack1,
slprocfar
start:
;movax,stack1
;movss,ax
movax,data
movds,ax
movah,09h;显示系统提示
movdx,segmessage
movds,dx
movdx,offsetmessage
int21h
movdx,303h;初始化8255
moval,10000011b
outdx,al
movdx,300h;LED全灭
moval,0ffh
outdx,al
movdx,303h;关闭SPK,pc6控制喇叭
moval,00001100b
outdx,al
wait1:
movdx,302h;查SW3按下?
pc2接收SW3的信号由于检测
inal,dx;(PC2=0?
)
andal,04h
jnzwait1;未按下,等待
begin:
callledflash;已按下,调用LED发光子程
movbx,2000
movt,0ffffh;控制声音时长
highson:
calloutspk;调用喇叭发声子程(高频)
decbx
jnzhighson
movdx,300h;LED全灭
moval,0ffh
outdx,al
movbx,2000
movt,0afh;控制声音时长
lowson:
calloutspk;调用喇叭发声子程(低频)
decbx
jnzlowson
calldelay2
movdx,302h
inal,dx
andal,02h;SW2接pc1,检测通过pc1的值检测SW2是否按下
jzquit;有SW2按下,退出
jmpbegin;SW2未键按下,继续
quit:
movdx,300h;LED全灭,A口接LED显示灯
moval,0ffh
outdx,al
movdx,303h;关闭SPK
moval,0ch;pc6控制喇叭开关
outdx,al
movah,4ch
int21h;返回DOS
slendp
delay1proc;延时子程1
pushbx
movbx,t
dl1:
decbx
jnzdl1
popbx
ret
delay1endp
delay2proc;延时子程2
pushcx
pushbx
movcx,04ffh
dl4:
movbx,0ffffh
dl3:
decbx
jnzdl3
deccx
jnzdl4
popbx
popcx
ret
delay2endp
outspkproc;喇叭发声子程
movdx,303h;从PC6输出方波
moval,00001101b;置PC6=1;打开8253
outdx,al
movdx,303h
moval,00001100b;置PC6=0;关闭8253
outdx,al
calldelay1
ret
outspkendp
ledflashproc;LED发光子程序
movsi,offsetdata7;LED的点亮代码
;addsi,num
next:
moval,[si]
movdx,300h;从8255的A口输出LED点亮代码
outdx,al
calldelay2
incsi
incnum
cmpnum,08h
jnenext
movnum,00h
ret
ledflashendp
codeends
endstart
2.基于中断的设计
硬件连线图如下:
程序流程图如下:
按照此程序流程图所写的代码如下:
DATASSEGMENT
messagedb'pressSW3tostart!
',0ah,0dh;系统提示
db'ifyouwanttoquit,pleasepressSW2!
',0ah,0dh,'$'
tdw0;初始化延时变量为0
numdw0;初始化数字变量为0
data7db81h,42h,24h,18h,81h,42h,24h,18h
DATASENDS
STACKSSEGMENT
dw200dup(?
)
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,STACKS
MOVSS,AX
MOVAX,DATAS
MOVDS,AX
MOVAH,09H;显示系统提示
MOVDX,segmessage
MOVDS,DX
MOVDX,offsetmessage
int21H
moval,0b6h;8253初始化
movdx,307h
outdx,al;写入初值
movax,0533H
movdx,306h
outdx,al
moval,ah
outdx,al
MOVDX,303H;初始化8255
MOVAL,83H
OUTDX,AL
MOVDX,300H;LED全灭
MOVAL,00H
OUTDX,AL
MOVDX,303H;关闭SPK
MOVAL,0CH
OUTDX,AL
MOVAL,72H;获取原中断向量
MOVAH,35
INT21H
PUSHES;保存原中断向量
PUSHBX
PUSHDS
CLI;关中断
MOVAX,SEGVOICELIGHT
PUSHDS
MOVDS,AX
MOVDX,OFFSETVOICELIGHT
MOVAL,72H;设置新的中断向量
MOVAH,25H
INT21H
POPDS
STI;开中断
INAL,0A1H;打开IRQ10
ANDAL,0FBH
OUT0A1H,AL
INAL,21H;打开IRQ2
ANDAL,0FBH
OUT21H,AL
L1:
movdx,302h;查SW2按下?
inal,dx;(PC3=0?
)
andal,08h;按下,PC3=0,退出
JZEXIT
NEXT0:
PUSHCX
MOVCX,0FFH
LOOP1:
LOOPLOOP1
POPCX
INAL,DX
ANDAL,04H
JNZL1
L2:
movdx,302h;查SW2按下?
inal,dx;(PC3=0?
)
andal,08h;按下,PC3=0,退出
JZEXIT
MOVDX,303H;按下SW3,则PC4=1申请中断
MOVAL,09H
OUTDX,AL
PUSHCX
MOVCX,100
WT:
LOOPWT
POPCX
MOVDX,303H;置PC4=0
MOVAL,08H
OUTDX,AL
JMPL2
EXIT:
movax,4c00h
int21h
VOICELIGHTPROCNEAR
PUSHDS
PUSHAX
PUSHCX
PUSHDX
begin:
CALLledflash;已按下,调用LED发光子程
MOVBX,200
MOVt,0ffffh
HISON:
CALLoutspk;调用喇叭发声子程(高频)
DECBX
JNZhison
MOVDX,300H;LED全灭
MOVAL,00h
OUTDX,AL
MOVBX,200
MOVt,0afh
LOSON:
CALLoutspk;调用喇叭发声子程(低频)
DECBX
JNZloson
CALLdelay2
movdx,302h;查SW2按下?
inal,dx;(PC3=0?
)
andal,08h;按下,PC3=0,退出
JZquit
JNZbegin;无任意键按下,继续
quit:
MOVDX,300H;LED全灭
MOVAL,00H
OUTDX,AL
MOVDX,303H;关闭SPK
MOVAL,0CH
OUTDX,AL
movax,2572h;恢复原中断向量
POPDX
POPDS
INT21H
popds
inal,0a1h;屏蔽IRQ10
oral,04h
out0a1h,al
inal,21h;屏蔽IRQ2
oral,04h
out21h,al
MOVAH,4CH
INT21H;返回DOS
VOICELIGHTENDP
delay1proc;延时子程1
pushbx
movbx,t
dl1:
decbx
jnzdl1
popbx
ret
delay1endp
delay2proc;延时子程2
pushcx
pushbx
movcx,04ffh
dl4:
movbx,0ffffh
dl3:
decbx
jnzdl3
deccx
jnzdl4
popbx
popcx
ret
delay2endp
outspkPROC
movdx,303h;从PC6输出方波
moval,0dh;置PC6=1;打开8253
outdx,al
calldelay1
movdx,303h
moval,0ch;置PC6=0;关闭8253
outdx,al
calldelay1
ret
outspkENDP
ledflashproc;LED发光子程序
movsi,offsetdata7;LED的点亮代码
addsi,num
moval,[si]
movdx,300h;从8255的A口输出LED点亮代码
outdx,al
incnum
cmpnum,08h
jnenext
movnum,00h
next:
ret
ledflashendp
CODESENDS
ENDSTART
五、调试结果
1.程序运行结果
首先调试运行基于查询方式的声光报警器的调试。
执行程序,按下SW3键,发出报警声,以及LED灯按规律闪烁。
从一边开始,第一次有一个登闪烁,每闪烁一次,增加一个灯闪烁,待八个灯一起闪烁后,重复该过程,一直到按下SW2程序结束运行为止。
然后调试运行基于中断方式的声光报警器,运行结果同上。
2.程序调试过程中遇到的问题
刚开始的时候,运用PA口来查询SW3是否按下,遇到了没有按下SW3而就进行发出报警声以及LED灯闪烁。
而按下SW2终止程序没有问题。
后经过查询得知PA0的初始值就为低电平,而SW3键的按下同时产生一个低电平因此即使不按下SW3键也会产生低电平,因此会造成不能正确的接受SW3信号。
后改为PC4查询SW3键的按下,程序运行正确。
六、设计心得
这次课程设计让我学习和巩固8253,8255,8259这三个芯片。
特别是8259,有关中断的以前没有做过实验,上课学的都没有在实际中运用过,只是懂得基本的原理,具体的运用并不是很了解,在一开始构思的时候有些困难。
通过分析一些实际运用的例子,再结合8259中断的原理,逐渐的思路清晰了。
结合以前做的接口实验,再加上中断控制部分就大概对基于中断的程序设计有了一个很清晰的思路。
在这次试验中学到了不少以前不懂的知识,最重要映像最深的是中断不是由电平控制的,而是你给它先设置一个地电位。
当中断条件满足时就把它置为高电位,由低到高的脉冲就触发了中断,这时候就调用了发声子程序,发声想起。
刚开始设计的时候有很大的困难,比如怎么样让音乐循环的发声,怎样让LED花样闪烁,还有中断时怎么样触发的,每次触发中断后如何控制发声等等,后来想到了各种办法,一一解决。
七、参考文献
[1]洪志全、荣莹著,现代微机原理与接口技术,机械工业出版社,2008年10月
[2]沈美明、温东婵著.IBM-PC汇编语言程雪设计第2版.清华大学出版社.2001年8月
本科生课程设计成绩评定表
班级:
0703 姓名:
杨柳 学号:
0120710340334
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性
20
4
设计结果正确性
40
5
设计报告的规范性
10
6
设计验收
10
总得分/等级
评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
2010年 月 日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 研究声光报警器 的内容 研究 声光 报警器 内容