电子报警器设计.docx

上传人:b****3 文档编号:4140388 上传时间:2022-11-28 格式:DOCX 页数:17 大小:1.18MB
下载 相关 举报
电子报警器设计.docx_第1页
第1页 / 共17页
电子报警器设计.docx_第2页
第2页 / 共17页
电子报警器设计.docx_第3页
第3页 / 共17页
电子报警器设计.docx_第4页
第4页 / 共17页
电子报警器设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

电子报警器设计.docx

《电子报警器设计.docx》由会员分享,可在线阅读,更多相关《电子报警器设计.docx(17页珍藏版)》请在冰豆网上搜索。

电子报警器设计.docx

电子报警器设计

基于微机原理电子报警器的设计

摘要

随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基于微机原理与接口技术的简单应用。

运用所学的微机原理和接口技术知识完成电子报警器系统。

通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了现代电子系统密码安全问题的现状,结合密码安全的实际情况阐述了电子报警器控制系统的工作原理,给出了一种简单实用的电子报警器控制系统的硬件、软件电路设计方案。

该系统适用于各类电子防盗系统,能有效防止非法盗用密码等问题!

 

 

一、设计要求与设计方案

1.1电子报警器方案的论证与比较

设想制作一个防盗器件。

具体要求:

采用手动输入密码方式进行,按动键盘6位密码,对输入的密码是否正确进行判别,如果不正确,则再次输入,可进行连续三次的密码输入,若都不正确,则会有报警器发出频率为5HZ的报警声响,并伴有红绿黄三个灯的闪耀,并通过液晶显示器显示相关警报信息。

按动键盘6位密码,如果密码正确,8个LED不停光闪,呈现走马灯,同时在液晶显示器上显示相应的警报信息。

1.2电子报警器的功能与要求

在设计发声报警时利用了8253可编程定时定时记数器。

在设计发光报警时利用了8255芯片,在一个时间间隔里小灯循环闪动代表输入正确,想起警报声并且有红绿蓝三灯在闪动表示正在报警。

1.3电子报警器设计方案的确定

根据设计任务和要求,在设计前必须对微机原理与接口技术中的8255和8253芯片熟悉了解和掌握。

设计中主要采用手动输入密码方式进行,按动键盘6位密码,对输入的密码是否正确进行判别,同时内扬声器发出警报声,且在屏幕上显示警报信息。

在设计发声报警时利用了8253可编程定时定时记数器。

在设计发光报警时利用了8255芯片。

在程序设计中利用INT09H实现在屏幕上显示相关的警报信息。

 

二、硬件设计

2.1电子报警器设计所需硬件

1.8253定时计数器。

2.并行接口电路芯片8255。

3.扬声器。

2.2硬件连接

1.定时/计数器8253A芯片模块的GATE2接+5V,提供高电平。

2.定时/计数器8253A芯片模块的OUT1接扬声器。

3.定时/计数器8253A芯片模块的CLK0接500KHZ的分频频率。

4.并行接口电路芯片8255的PA0~PA7分别接入LED的D0~D7。

 

8253接线图

 

 

8255线路图

2.3硬件引脚功能

8255是可编程I/O口扩展芯片。

对8255输入不同的指令可改变I/O口的工作方式。

8255与单片机系统连接方式简单,工作方式由程序设定,图2为8255的引脚图。

8255内部有4个寄存器:

分别为寄存器A、B、C和控制寄存器。

A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、PC7~PC0上输入或输出的数据。

而控制寄存器的数据则表明PA、PB、PC的工作方式。

通过CS、A0、A1、RD和WR对4个寄存器进行操作。

1)CS为低电平时选通8255;2)A1、A0为地址选通;3)RD和WR为读、写信号:

RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。

4)D0~D7为数据口。

向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。

这里只介绍应用最多的方式0。

方式0下8255的PA、PB及PC口上半部分(PC7~PC4)和下半部分(PC3~PC0)中任何一个端口都可以设定为输入或输出,PC口还可以进行位操作。

控制寄存器各位的含义如图3所示。

SLPC-24中8255工作在方式0。

PA、PB为输入口、PC为输出口,对控制寄存器写入的数据为10010010B,即92H。

8255引脚功能:

RESET:

复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

CS:

片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。

RD:

读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

WR:

写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。

D0~D7:

三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

PA0~PA7:

端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

PB0~PB7:

端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

PC0~PC7:

端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

8253引脚功能:

8253具有3个独立的16位计数器,6种不同的工作方式。

1.方式0——计数到终点输出变为高电平

当将某计数器设置成方式0后,其输出OUT变低电平,装入初值后,仍保持低电平。

门控为高电平开始计数。

每来一个计数脉冲CLK,计数器的值减1,当计数到达终点即计数器的值变成0时,OUT变为高电平。

在计数期间可用门控信号暂停计数(即门控为低电平时,计数暂停)。

2.方式1——可编程单稳态触发器

  所谓单稳,是指这样的电路,它有两种状态,但只能稳定在一种状态。

在一定的外界作用下,它能从这一种状态进入到另一种状态,但经过一定时间后,又自动恢复到原来的状态。

这个时间参数一般是由外加电阻、电容的值决定的。

8253的方式1就是模拟单稳电路,其处于非稳定状态的时间可通过程序进行设置。

3.方式2——分频脉冲发生器(分频器)

  方式2用来对输入脉冲(即计数脉冲CLK)N分频(N为预置的初值),在输出信号周期中低电平的时间为一个CLK周期。

  设置此方式后,OUT变高电平,装入初值后便自动开始计数,减到1时OUT变低电平。

经过一个CLK周期,OUT恢复高电平,且计数器又自动装入初值,重新开始计数。

如此循环下去。

如图6.23所示是工作在方式2的示意图。

在上述过程中GATE应一直保持高电平。

若GATE变低电平将禁止计数,并使输出为高电平。

在GATE再次变高电平时,计数器将重新装入预置的初值,并开始计数。

4.方式3——方波发生器

方式3类似于方式2,输出是周期性的。

不同的是方式3输出方波。

如果预置的初值N为偶数,则输出周期中高电平和低电平的宽度相等;如果N为奇数,则输出周期中高电平比低电平多一个CLK周期的时间,当N相当大时,也可认为是方波。

当然,一般采用方式3时,置初值为偶数。

设置成方式3后,OUT变高电平,装入初值后便自动开始计数。

如初值为偶数,每个CLK使计数器减2,计到终点改变电平。

如初值为奇数,则输出为高电平时第一个CLK使计数器减1,随后每个CLK使计数器减2;输出为低电平时第一个CLK使计数器减3,随后每个CLK使计数器减2。

每当计数到终点都会改变电平,初值又被重新装入,并开始计数。

如此循环下去。

5.方式4——软件触发选通

设置成方式4后,OUT变高电平,写入计数值后自动开始计数(所以称之为软件触发),计数到终点输出一个CLK周期的低电平脉冲。

GATE变低可暂停计数,用GATE的上升沿可重新赋初值,并开始计数。

6.方式5——硬件触发选通

设置成该方式后,OUT变高电平,写入计数值后需等待GATE上升沿的到来才开始计数(所以称之为硬件触发)。

计数到终点也输出一个CLK周期的低电平脉冲。

计数过程中不受GATE电平的影响。

此后,用GATE的上升沿可重新赋初值,并开始计数。

计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。

当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。

当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号。

三、软件设计

3.1主程序流程图

 

NN

YY

 

3.2三次密码输入程序设计

movcl,00h

movah,01h

int21h;等待一个输入

cmpal,'2';这里判断输入的数是否是密码的第一位

jnzhjj1

inccl;如果是,则将cl加1

hjj1:

movah,01h

int21h;等待一个输入

cmpal,'0';这里判断输入的数是否是密码的第二位

jnzhjj2

inccl

hjj2:

movah,01h

int21h;等待一个输入

cmpal,'1';这里判断输入的数是否是密码的第三位

jnzhjj3

inccl

hjj3:

movah,01h

int21h;等待一个输入

cmpal,'3';这里判断输入的数是否是密码的第四位

jnzhjj4

inccl

hjj4:

movah,01h

int21h;等待一个输入

cmpal,'1';这里判断输入的数是否是密码的第五位

jnzhjj5

inccl

hjj5:

movah,01h

int21h;等待一个输入

cmpal,'4';这里判断输入的数是否是密码的第六位

jnzhjj6

inccl

hjj6:

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

cmpcl,6;这里判断六位密码是否全部正确

3.3正确之后走马灯程序设计

leadx,[Y]

movah,09h;输出字符串到屏幕

int21h

xorax,ax;把AX寄存器清零

Moval,80h

Movdx,io8255b

Outdx,al

Stc;进位位置为指令

Moval,00h

Movdx,io8255a

ok:

rclal,1;RCL通过进位的循环左移

Outdx,al

Pushf

Calldelay

Popf

Jmpok;循环使跑马灯亮起

Delayprocnear

3.4三次输入错误之后程序设计

movdx,io8253k;向8253写控制字

moval,36h;使0通道为工作方式3

outdx,al

movax,1000;写入循环计数初值1000

movdx,io8253a

outdx,al;先写入低字节

moval,ah

outdx,al;后写入高字节

movdx,io8253k

moval,76h;设8253通道1工作方式2

outdx,al

movax,250;写入循环计数初值250

movdx,io8253b

outdx,al;先写低字节

moval,ah

outdx,al;后写高字节

movdl,0ah

movah,02h

int21h

leadx,[N]

movah,09h;输出字符串到屏幕

int21h

movah,01

int21h;等待一个输入

四、系统的安装与调试

五、设计体会与小结

通过这次的课程设计,我回忆了好多以前已经忘怀的微机原理知识,也重新学习了相当多的汇编语言知识,真可以用温故而之心来形容,使我对以前所学过的知识印象更加深刻,也更加熟练的掌握了8253,8255的功能特性,相关知识原理等。

实验中也遇到了相当多的问题,还好在同组同学的共同努力下,以及在老师的细心,耐心的指导下,才一步一步的解决了问题。

真的好好感谢老师的帮助。

起初程序并不像我们想象的那样的显示出来,红灯没有闪烁,只是齐刷刷的亮了,我们一开始摸不着头绪,后来在程序中找到了原因。

因为我们只是让8255芯片实现了小灯的亮,没有用程序去解决各个灯延时闪亮的问题。

后来我们加入了新的内容便成功了。

这次的课程设计是基于上个学期对微机原理课程学习的基础上的一个提高,通过对8255,8253芯片的编程更好的理解了其内在的原理。

也是对书面知识的一种巩固与更新。

在这次的设计中,我们用了一个星期的时间去做相关知识的搜索,关于报警器的原理有了整体的认识之后才去上机试验。

起初因为程序的一些错误,只实现了相关的一小部分内容,只是就闪烁问题得到解决,但是我们又通过请教老师解决了报警这部分的设计,用了另外一个灯显示报警信息。

通过试验—出错—再试验的过程,才得以完成。

当我们完成这个程序时,发现脑中关于微机原理的知识更加清晰。

这才让我们相信,只有不断的试验,不断的动手去演练,基础知识才能转化成真正在生活中能够实现的东西。

我想我们以后无论在什么方面,特别是在研究设计方面。

动手加动脑才是成功的关键,一味的在理论上追根问底根本不可能在现实中实现。

这是我从这次课程设计中得到的最大的体会。

 

六、参考文献

[1].杨素行.1994年.《微机原理及应用》.[M]. 清华大学出版社

[2].郑学,周斌.1994.《微型计算机原理及应用》.[M].清华大学出版社

[3].周明德.2002.《微机原理与接口技术实验指导与习题集》.[M].人民邮电出版社

[4].李芷.2002.《微机原理与接口技术》.[M].电子工业出版社

七、附录

实验程序:

ioportequ0ff00h-0280h

io8255aequioport+288h

io8255bequioport+28bh

io8255cequioport+28ah

io8253aequioport+280h

io8253bequioport+281h

io8253kequioport+283h

datasegment

SDB'pleaseenterthepassword:

$'

YDB'************Correct************$'

NDB'************Error************$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax;把数据放到数据段里面

movbl,4

sc4:

decbl

cmpbl,0

jzsc5

leadx,[S]

movah,09h

int21h;在屏幕上显示出pleaseenterthepassword字样

movcl,00h

movah,01h

int21h;等待一个输入

cmpal,'2';这里判断输入的数是否是密码的第一位

jnzhjj1

inccl;如果是,则将cl加1

hjj1:

movah,01h

int21h;等待一个输入

cmpal,'0';这里判断输入的数是否是密码的第二位

jnzhjj2

inccl

hjj2:

movah,01h

int21h;等待一个输入

cmpal,'1';这里判断输入的数是否是密码的第三位

jnzhjj3

inccl

hjj3:

movah,01h

int21h;等待一个输入

cmpal,'3';这里判断输入的数是否是密码的第四位

jnzhjj4

inccl

hjj4:

movah,01h

int21h;等待一个输入

cmpal,'1';这里判断输入的数是否是密码的第五位

jnzhjj5

inccl

hjj5:

movah,01h

int21h;等待一个输入

cmpal,'4';这里判断输入的数是否是密码的第六位

jnzhjj6

inccl

hjj6:

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

cmpcl,6;这里判断六位密码是否全部正确

jnzsc4

sc5:

cmpbl,0;判断是否bl由4减到0,即密码是否输入三次

jzsc

leadx,[Y]

movah,09h;输出字符串到屏幕

int21h

xorax,ax;把AX寄存器清零

Moval,80h

Movdx,io8255b

Outdx,al

Stc;进位位置为指令

Moval,00h

Movdx,io8255a

ok:

rclal,1;RCL通过进位的循环左移

Outdx,al

Pushf

Calldelay

Popf

Jmpok;循环使跑马灯亮起

Delayprocnear

Movbx,04ffh

X2:

movbp,0ffffh

X1:

decbp

Jnzx1

Decbx

Jnex2

Ret

Delayendp;输出正确到屏幕上

sc:

movdx,io8253k;向8253写控制字

moval,36h;使0通道为工作方式3

outdx,al

movax,1000;写入循环计数初值1000

movdx,io8253a

outdx,al;先写入低字节

moval,ah

outdx,al;后写入高字节

movdx,io8253k

moval,76h;设8253通道1工作方式2

outdx,al

movax,250;写入循环计数初值250

movdx,io8253b

outdx,al;先写低字节

moval,ah

outdx,al;后写高字节

movdl,0ah

movah,02h

int21h

leadx,[N]

movah,09h;输出字符串到屏幕

int21h

movah,01

int21h;等待一个输入

movah,4ch;否则返回

int21h

codeends

endstart

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1