全国防水十大品牌-华帝燃气灶单灶价格

智能住宅安防报警系统设计
2023年4月21日发(作者:品牌橱柜排名前十名)

1 引言

在当今高速发展的社会中,人们对自身所处的环境越来越关切,居家平安已成

为当今小康之家优先考虑的问题。当上班家中无人,或者仅有老人孩子在家,或晚

上在家熟睡,都必需确保家庭成员和财产的肯定平安。

[1]

中国安居工程须要大力发展平安文明小区建设,严峻的社会治安形势,须要建

立并完善平安文明小区防盗报警网络系统体系。如何解决在当前每个家庭经济承

[2]

受实力有限的状况下,建设满意防范功能及牢靠性需求的平安文明小区防范防盗报

警网络系统,是当前急需解决的课题。本方案是在考虑以上因素的基础上,所设计

的可行性实施方案。在当前,随着经济的发展,人民的生活日益改善,人们对家庭

生命财产平安越来越重视,实行了很多措施来爱护家庭的平安。以往的做法是安

装防盗门、防盗网,但也存在有碍美观,不符合防火要求,不能有效地防止坏人的

入侵。现在,全国各地都在如火如荼地开展建设平安文明小区的活动,而且很多地

方都提出取消防盗网的口号,家庭电子防盗报警系统也就应运而生。因为大多数家

庭都是双职工,白天家里通常没有人,发生报警后,必须要有专人来处理,因此,

必需设立报警中心。而且因为国内住宅区大多数是密集型分布,一个住宅区往往有

几百上千户,并且都有自身的保安队伍,因此当用户防盗报警系统报警时,除了在

现场报警外,还须要向当地派出所或公安分局进行报警联网外,也须要向住宅小区

的保安中心进行联网报警,以便警情得到快速处理。另外,考虑到国内普遍收入

[4]

水平较低,对于每一户家庭的防盗报警系统成本不行太高,但因为用户数量多,也

不能采纳质量差的产品,以免误报频繁造成不良影响。依据以上分析,住宅小区对

防盗报警系统的要求如下:1.广泛性——即要求小区内每个家庭都能得到爱护。2.

好用性——即要求每个家庭的防范系统能在实际可能发生受侵害的状况下刚好报

警,并要求操作简便,环节少,易学。3.系统性——即要求每个家庭的防范系统在

案情发生时,除能自身报警外,必需刚好传到保卫部门,并同时上报当地公安报警

中心。4.牢靠性——即要求系统所设计的结构合理产品经久耐用、系统是牢靠。5.

投资可行性------即要求系统投资或造价能限制在小区家庭能承受的范围之内。

[5]

智能住宅安防报警系统起源于20世纪80年头初的美国,它利用高科技手段供

应应人们舒适、环保、平安和节能的服务功能。近几年随着科学技术的日新月异,

[7]

1 55

[3]

特殊是计算机技术和建筑电子产业的发展,智能住宅已在世界各地逐步普及。随着

生活节奏的加快,人们忙于工作、学习,在家中的时间越来越少,家中的安防就显

得重要和必要了,针对这一特点,本设计介绍的报警系统,能对住宅中的报警信号

进行检测,当出现警情时可通过公用电话网实现自动报警。

[8]

智能住宅安防报警系统是智能小区实现平安管理的重要系统,主要包括防盗报

警、煤气泄漏报警、消防报警等。小区管理极为重要的内容是确保住宅,住户平

[9]

安,生活中,人人都可能出现一些意想不到的求助状况,现代居住的格局,邻里常

年不来往已是常事,家庭生活稳密性、封闭性越来越强。因此,小区平安防范及

[10]

报警系统是具有先进的设计和设备,并为小区住户的平安供应保障的必要系统。

[11]

我国的安防自动报警限制系统经验了从无到有、从简洁到困难的发展过程,

智能化程度也越来越高。在小区内的每个住户单元安装一台报警主机,住户可选择

安装在住户门口、窗户处安装声检、紧急求助、烟雾/煤气探头、瓦斯探头等报警

感知设备,报警主机通过总线与管理中心的电脑连接,进行安防信息管理。假如发

生盗贼闯入、抢劫、火灾、燃汽泄露等紧急事故,传感器就会马上获知并由报警系

统即刻触发光警报以有效地恫吓企图行窃的盗贼;系统还会快速向报警中心传送报

警信息;报警中心接到警情后马上自动进行辨别处理,快速识别判定警报类型、地

点、用户,中心据此派出机动力气实行相应解救措施;系统具备24小时防破坏等

并自我监视,一旦有任何被破坏的迹象也会即刻报警。

[12]

2 55

2 系统功能及方案选择

2.1 系统框图

依据设计任务,该电路的总体模块可以分成以下几个基本模块,系统框图如图

2-1。系统能够设置查询输入设置当前的状态,用户通过人机界面能够很便利的设

置系统工作,并且通过指示灯指示当前系统的工作状态或者危急信号指示灯,系统

正式工作后假如采集到传感器的信号,能够快速在指示灯处予以显示并且给指定的

电话拨号报警。

[13]

系统开关限制系统起先/结束工作,系统起先工作后须要先设定当前时间,确

认后系统正式起先工作,系统可检测来自气体传感器的信号以及光敏传感器的信号

以供推断是否有险情,一旦测到险情,先读取当前时间写入数组,并触发报警电路

自动拨号报警。 用户回来后,可利用查询键查询何时发生何种险情。

[14]

2.1 系统框图

2.2 方案选择

2.2.1 MCU的选择

MCU的选择主要从功能的完成实力、功耗、效率、成本等方面考虑。当前市场

运用比较广泛的MCU有以下几类:

.CPLDFPGA为代表的一类困难可编程逻辑器件,这类MCU的特点是功能强

大、处理实力较强、支持特别高的处理频率,但是这类MCU的操作比较困难,而且

相对于一个较小的系统MCU的利用率不高,功耗也比较大、成本较高。

[15]

3 55

.ARMDSP为代表的一类强大的嵌入式数据处理限制器,这类MCU具有强大

的处理实力,多用于困难的数据处理,或者生产智能手持设备等,这类MCU的处理

实力虽然强大,但是成本以及功耗都相对较大,而且相对于本次设计的学习及探讨

目的来看不行取。

[16]

.51系列单片机为代表的一类8MCU处理器,这类处理器的特点有功耗低、

处理实力较强、支持较高的工作频率,但是这类MCU对于高频的实时数据采集以及

大容量数据处理时会出现错误活不精确。

基于以上分析结合本设计的一些要求,采纳51单片机作为MCU是比较明智以

及合理的选择。其一本系统所占用的系统资源并不多51单片机足够运用,而其他

两者运用在本设计上则显得有些奢侈;其二本系统的数据采集及处理上并不须要特

别高的速率以及特别大的容量;其三51单片机的处理上相对其他二者有独到的优

势,其对于C语言的兼容性确定了设计的开发周期可以大大的压缩。依据本设计的

具体功能分析,具体将采纳STC89C52作为主控芯片。

2.2.2 人机界面的选择

所谓人机界面是指系统运用者在对系统进行相应的初始化设置时,和系统进行

信息交换的一个可视化界面,本设计的人机界面主要是为了显示一些相对简洁的提

示语以及记录下的危急信息。人机界面的设计可以采纳接口将系统和上位机通信,

通过上位机的软件面来实现,但是这种实现方案比较困难,而且必需保证拥有一台

电脑,从设计及成本的角度上予以否定;另外一种方案是采纳1602液晶来作为人

机界面,鉴于本设计人机交互信息比较少,故采纳本方案。

2.2.3 设置、查询输入模块选择

系统上电启动后须要设置相应的参数以待工作,系统检测到危急后记录下后,

用户可以通过查询装置查询历史危急记录。以上操作应当有一个输入装置来实现,

鉴于以上操作都是触发了的动作,故很简洁联想到运用一些按键装置来实现。本设

计应当有以下按键:开/关键、设置时间键、加键、减键、显示下组信息键。这些

按键可以通过续流二极管再通过两个反相器在外部中断口上,然后再将这些按键分

别连接一些I/O上,这样可以比较精确的推断按键。

4 55

3 STC89C52简介

3.1 STC89C52外形及引脚

STC89C52是一种带4K字节闪耀可编程可擦除只读存储器

FPEROMFalsh Programmable and Erasable Read Only Memory的低电压,

高性能CMOS8位微处理器,俗称单片机。STC89C52是一种带8K字节闪耀可编

程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除上万次。

该器件与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8CPU

和闪耀存储器组合在单个芯片中,STC89C52是一种高效微限制器,STC89C52

是它的一种精简版本。STC89C单片机为很多嵌入式限制系统供应了一种敏捷性高

且价廉的方案。外形及引脚排列如图3-1所示。

[17]

3.1 主要特性:

·MCS-51 兼容

·4K字节可编程闪耀存储器

·寿命:1000/擦循环

·数据保留时间:10

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

5 55

·128×8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

[18]

3.2 管脚说明:

VCC:供电电压。

GND:接地。

P0P0口为一个8位漏级开路双向I/O口,每脚可汲取8TTL门电流。当

P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,

它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当

FIASH进行校验时,P0输出原码,此时P0外部必需被拉高。

P1P1口是一个内部供应上拉电阻的8位双向I/O口,P1口缓冲器能接收

输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外

部下拉为低电平常,将输出电流,这是由于内部上拉的原因。在FLASH编程和校验

时,P1口作为第八位地址接收。

P2P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输

4TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输

入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上

拉的原因。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,

P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八

位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH

编程和校验时接收高八位地址信号和限制信号。

P3P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4TTL

门电流。P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,

由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的原因。

P3口也可作为AT89C51的一些特殊功能口,如下列所示:

6 55

口管脚 备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0

P3.3 /INT1(外部中断1

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪耀编程和编程校验接收一些限制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平

常间

ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地

位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平常,ALE端以不变的

频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出

的脉冲或用于定时目的。然而要留意的是:每当用作外部数据存储器时,将跳过一

ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执

MOVXMOVC指令是ALE才起作用。另外,该引脚被略微拉高。假如微处理器在

外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机

器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将

不出现。

/EA/VPP/EA保持低电平常,则在此期间外部程序存储器0000H-FFFFH

不管是否有内部程序存储器。留意加密方式1时,/EA将内部锁定为RESET;当/EA

端保持高电平常,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加

12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

[19]

7 55

4 系统各功能模块设计

4.1 单片机最小系统的设计

单片机在本设计担当的任务比较繁重既要实现对限制传感器输入的检测,要对

案件的监测,要实时记录险情,还要限制液晶的现实。

[20]

单片机要能正常的工作,必要的条件是供电及晶振。以下是单片机的晶振及复

位电路:

4.1 单片机晶振及复位电路

4.2 液晶接口设计

在上章节的方案选择里面我们已经确定了用1602液晶来实现系统的显示部

分,下面介绍下1602液晶的一些属性以及运用方法。

[21]

1602字符型LCD通常有14条引脚线或16条引脚线的LCD多出来的2条线是

背光电源线,下面是1602的实物图及引脚图及其管脚说明表:

8 55

4.2 1602液晶实物图及引脚图

4.1 1602液晶管脚说明表

下面介绍下1602液晶的操作相关学问。

1602的寄存器选择限制表如下表所示:

9 55

4.2 1602液晶寄存器选择限制表

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵

字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假

名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是

01000001B41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能

看到字母“A

因为1602识别的是ASCII码,试验可以用ASCII码干脆赋值,在单片机编程

中还可以用字符型常量或变量赋值,如'A

1602通过D0~D78位数据端传输数据和指令。

.显示模式设置:(初始化)

0011 0000 [0x38] 设置16×2显示,5×7点阵,8位数据接口;

.显示开关及光标设置:(初始化)

0000 1DCB D显示(1有效)C光标显示(1有效)B光标闪耀(1有效)

0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1

N=0(读或写一个字符后地址指针减1 &光标减1

S=1 N=1 (当写一个字符后,整屏显示左移)

s=0 当写一个字符后,整屏显示不移动

.数据指针设置:

数据首地址为80H,所以数据地址为80H+地址码(0-27H40-67H

.其他设置:

1H(显示清屏,数据指针=0,全部显示=002H(显示回车,数据指针=0

.通常举荐的初始化过程:

延时15ms

写指令38H

延时5ms

10 55

写指令38H

延时5ms

写指令38H

延时5ms

(以上都不检测忙信号)

(以下都要检测忙信号)

写指令38H

写指令08H 关闭显示

写指令01H 显示清屏

写指令06H 光标移动设置

写指令0cH 显示开及光标设置

完毕

[22]

4.3 1602液晶写数据时序图

依据以上资料可以比较便利的对液晶进行操作,下面是1602液晶接口原理图:

4.4 1602液晶接口图

11 55

4.3 系统输入设计

本设计的输入包括传感器信号的输入及按键输入,传感器输入将作为单独的一

节在4.6节中具体探讨,本节将具体探讨按键模块的设计。

依据上章节的探讨,本设计须要5个按键,每个按键的一段反向通过通过续流

二极管再通过两个反相器后接到单片机的INT1口,并且该端分别与P2口的端口相

连,按键另外一段干脆与地相接。

这样当有按键被按下后,单片机的INT1端产生一个低电平,触发外部中断1

中断函数,然后读取P2口的值,通过分析可以推断出按下的是哪个按键。

系统输入模块的原理图如下:

4.5 系统输入模块原理图

12 55

4.4 系统输出设计

系统的输出包括系统指示灯、危急指示灯已经智能拨号报警模块,其中的智能

拨号报警模块将在下一节中具体介绍,这里不作探讨。本节主要介绍各个指示灯的

简洁驱动,本设计对于指示灯部分要求比较简洁,干脆采纳电平驱动法,即给一个

低电平灯亮,反之灯灭。

下面是系统输出原理图:

4.6 系统输出模块原理图

4.5 拨号报警模块设计

本设计的拨号报警模块将采纳技术成熟新锐科技公司生产的EX-1智能拨号报

警模块,该模块是基于holtekMCU开发的一个集成智能拨号模块。

[23]

13 55

EX-1拨号模块是集DTMF信号接收、存储、发送为一体的通讯电路。模块内置

的单片机和拨号管理程序能为用户供应多种信号输入输出端口,可在安防警报、

号采集、自动化限制、远程通讯信息传递等领域敏捷应用。

[24]

4.5.1 智能拨号报警模块的外形图及引脚定义

该模块的外形图如下所示:

4.7 EX-1智能拨号报警模块外形图

该模块的引脚定义如下表所示:

引脚号 描述 名称 功能

1 接电话线外线 PHA 接电话线

2 接电话线外线 PHB 接电话线

3 5V直流电源正极 VCC 电源正极

4 当引脚出现高电平常,模块起先拨号 HTO 高电平触发

5 ON/OFF 允许 / 禁止

6 ERR 电话线故障

7 READY 拨号完毕 当预设号码发送完毕时输出高电平

8 EXA 音频输入 输入要传送的音频信号

9 LED 状态指示输出

10 LTO 断路触发 当引脚与负极断路时,模块起先拨号

11 GND 电源负极 5V直流电源负极

双稳方式工作,接高电平打开拨号设定,再次

接高电平关闭拨号设定

集电极开路输出端,当电话线出现短路、断路

时输出截止

接指示灯。和板载指示灯同步工作,表示模块

当前所处的的工作状态

4-3 EX-1智能拨号报警模块引脚定义表

4.5.2 智能拨号报警模块的功能介绍

EX-1智能拨号报警模块具有以下功能:

15组手机或7组市话号码存储,掉电不丢失;

2、增加信息传递通路,供应外部音频信号输入端;

3、板载/外部信号输入方式可预置;

14 55

4、电话机/外部开关两种拨号状态限制方式;

5、电话线路状态检测功能,自动输出故障信号;

6、工作状态指示输出;

7、拨号完毕自动输出提示信号;

8、触发一次,循环九遍拨打预置号码;

9、远程中断、复位功能;

10、独立工作,独立拨号,不依靠电话机等外部设备;

11、标准SIP引脚封装,PCB装配敏捷。

4.5.3 智能拨号报警模块的号码录入

想要拨号模块正确拨打欲通知的电话号码必需把要拨打的电话号码预先录入

拨号模块,在录入之前您须要做完以下准备工作:

[25]

1)、检查拨号模块,把第1011脚连通,以确保模块处于未触发状态;

2)、把电话线连接到PHAPHB

3)、一部与模块连接在同一条电话线上的双音频电话机;

4)、为模块接通5V直流电源;

以上准备工作请严格按步骤完成,如接通电源后指示灯出现常亮,请拿起听筒

按“#”键使其熄灭。

准备工作完成后就可以进行正式的录入操作了,操作时请拿起电话机听筒(为

保证录入顺当,请不要运用免提),然后按以下步骤执行:

步骤 操作 模块指示

1

长按“ * ”键待指示灯亮起指示灯由不亮变为常亮,表示已进入号码接

后松开 收状态,等待输入电话号码

输入欲通知的电话号码 2

每按一个数字指示灯熄灭一次表示输入有

按“#”键指示灯熄灭一次,同时听筒传出

如需输入另外几组电话号码“嘀”的确认音,表示可以起先输入下一组

电话号码;按“*”键指示灯由亮变为熄灭,3 按“#,如不须要输入其他

号码请按“*”结束录入操作 同时听筒传出“嘀”的确认音表示录入操作

结束,模块自动退出录入状态。

15 55

4 输入另外一组电话号码

5 操作同第3 同第3

6

每按一个数字指示灯熄灭一次表示输入有

在操作过程中按“*”键或者当输入号码组数达到存储极限时,模块会自

动退出录入状态,同时状态指示灯自动熄灭,听筒传出“嘀”的确认音。

当需输入新的电话号码以替代原预置的号码时,请按以上步骤重新录入即

可,结束录入操作后原号码自动被删除并替换为新输入的号码。

4-4 EX-1智能拨号报警模块录入号码操作步骤表

7

4.5.4 智能拨号报警模块的应用电路

4.8 EX-1智能拨号报警模块应用电路图

如上应用电路图所示,当系统录入号电话号码后,依据上图的连接,当HTO

出现一个高电平(或者LTO端出现一个低电平)后系统自动触发拨号功能,据此我

们可以将MCU得输出口输出的低电平通过反相器输出到HTO端口,这样很便利的实

现了MCU对拨号报警模块的限制。

[26]

16 55

4.6 传感器模块设计

本设计的传感器模块主要用于检测火灾、煤气泄漏、盗贼进入危急信号进行监

测。

[27]

经过分析及查阅相关资料,准备采纳TX05D型的红外放射式传感器对盗情信号

进行监测。基本原理是,改传感器具有一对红发放射接收装置,放射装置不断发出

红外线,当有人经过时,接收端接收到放射的红外立马输出一个低电平给MCU处理。

而对于火灾、煤气泄漏将采纳基于QM-N5的气体业务传感器来实现,QM-N5

感器在接触到可燃性气体及烟雾时,其阻值降低,使555时基电路复位端即4脚电

压上升,当电压达到555时基电路电源电压的1/3时,其输出端即3脚输出高电平

再通过一个反相器变成低电平送给MCU处理。

[28]

传感器模块的原理图如下所示:

4-9 传感器模块原理图

17 55

5 系统软件设计

5.1 系统程序框图

5.1.1 主程序框图

5.1 主程序框图

5.1.2 外部中断1中断程序框图

中断起先

读取P2值,关闭中断。

时间键?

Y

Tempfalg赋为0

N

A

B

18 55

A

Y

B

按下“加”

键?

Tempfalg赋为1

N

按下“减”

键?

Y

Tempfalg赋为2

N

关”键?

Y

Tempfalg赋为3

N

急信号?

Y

Tempfalg赋为4

N

急信号?

Y

Tempfalg赋为5

N

换”键?

N

Y

Tempfalg赋为6

C

19 55

C

Y

Flag=0

系统当前为关机状

态,依据前面推断按

键是否为起先,并进

行相关动作。

N

Y

Flag=1

系统当前为设置时

间阶段,依据前面推

断按键是否关机、

加、减,并进行相关

动作。

N

Y

Flag=2

系统当前为设置工

作状态,依据前面推

断按键是否关机、

换或者是否有危急

信号,并进行相关动

作。

N

开启中断,返回。

5.2 外部中断中断程序框图

20 55

5.2 液晶显示程序及按键中断程序设计

本设计的程序设计的难点在于液晶显示以及按键检测及危急信号检测上,故本

节将具体介绍这两个模块。

5.2.1 液晶显示程序设计

本设计中对于1602液晶的操作主要是将一些固定的字符写入1602的寄存器

中,以达到在液晶上显示的效果。

结合4.2节的探讨,我们可以定义出液晶的写指令以及写数据函数,定义好这

两个函数后,在后面的程序中可以很便利的调用来达到在指定位置显示指定内容的

效果。

#define uchar unsigned char

#define uint unsigned int

//定义液晶限制端口

sbit lcdrs = P1^0;

sbit lcdrw = P1^1;

sbit lcden = P1^2;

void delayms(uint z) //毫秒延时函数

{

uint i,j;

for(i=z;i>0;i--)

for(j=124;j>0;j--);

}

void lcd_write_com(uchar com) //液晶写指令函数

{

lcdrw = 0;

lcdrs = 0;

P0 = com;

delayms(5);

lcden = 1;

delayms(5);

lcden = 0;

}

21 55

void lcd_write_dat(uchar dat) //液晶写数据函数

{

lcdrw = 0;

lcdrs = 1;

P0 = dat;

delayms(5);

lcden = 1;

delayms(5);

lcden = 0;

}

void lcd_init() //液晶初始化函数

{

lcden = 0;

lcd_write_com(0x38);

lcd_write_com(0x0c);

lcd_write_com(0x06);

lcd_write_com(0x01);

lcd_write_com(0x80);

}

5.2.2 按键中断程序设计

本设计的按键输入以及危急信号都经过处理编程低电平输入,通过了续流二极

管以及两个反相器接入INT1端,这样当有输入时,INT1可以产生一个很稳定的低

电平触发信号,然后进入外部中断1的中断函数里面处理相关信号。

下面是简化了的外部中断函数处理输入信号的程序:

uchar flag; //用于记录系统当前状态,可用于推断系统状态及设置时间

uchar num,tempnum;//用于记录当前险情组数,设置系统只存5组,重启系统复

void int0() interrupt 2

{

uchar tempdat = P2;

uchar tempflag,i;

EX0 = 1;

switch(tempdat)

{

22 55

case 0x0fe: //设置时间

tempflag = 0;break;

case 0x0fd: //时间加

tempflag = 1;break;

case 0x0fb: //时间减

tempflag = 2;break;

case 0x0f7: //系统开关

tempflag = 3;break;

case 0x0bf: //火警信号

tempflag = 4;break;

case 0x0df: //盗情信号

tempflag = 5;break;

case 0x0ef: //切换下组险情

tempflag = 6;break;

}

switch(flag)

{

case 0:

{

if(tempflag==3)

{

//系统在关机状态下按下开机键,进入设置时间状态

}

break;

}

case 1:

{

if(tempflag==3)

{

//系统在设置时间状态下按下关机键,进入关机状态

}

if(tempflag==0)

{

//系统起先设置时间

}

break;

23 55

}

case 2:

{

if(tempflag==3)

{

//系统关机

}

if(tempflag==0)

{

//系统又设置时钟进入设置分钟

}

if(tempflag==1)

{

//时钟加

}

if(tempflag==2)

{

//时钟减

}

break;

}

case 3:

{

if(tempflag==3)

{

//系统关机

}

if(tempflag==0)

{

//系统设置好时间后进入监控状态

}

if(tempflag==1)

{

//分钟加

}

if(tempflag==2)

24 55

{

//分钟减

}

break;

}

case 4:

{

if(tempflag==3)

{

//系统关机

}

if(tempflag==0)

{

//系统重新进入设置时间状态

}

break;

}

case 5:

{

if(tempflag==3)

{

//系统关机

}

if(tempflag==0)

{

//系统重新进入设置时间状态

}

if(tempflag==4)

{

//遇到盗情危急,将当前时间及危急类型记入数组

}

if(tempflag==5)

{

//遇到火情危急,将当前时间及危急类型记入数组

}

25 55

if(tempflag==6)

{

//显示下组危急记录

}

break;

}

}

EX1 = 1;

}

26 55

6 总结

高校四年就这样匆忙忙忙的过去了,真正让高校四年得到升华是这次毕业设

计,这次毕业设计让自己把所学的内容以及须要学的东西都应用进来了,也把自己

的不足全都表现出来了。

这次毕业设计我选的题目是智能安防报警系统设计,该题目的核心是对于环境

危急信号的检测以及输出限制智能拨号模块通过电话网拨号报警。本次设计我采纳

STC89C52作为系统的限制核心,其他的各个功能模块都是通过综合比较分析得出

的方案。

本次设计中也出现了不少问题,软件、硬件层面都出现了问题,这些问题也反

映了我在某些方面的欠缺。

软件上来说,一起先设定的软件流程图纯在一些逻辑上的错误,导致自己在做

这套系统的时候走了很多弯路,辗转几次才确定最终方案,这主要是阅历欠缺以及

思索局限性导致的;然后由于自己的马虎大意导致一些拼法错误,当然这类错误比

较好修改,通过编译器的提示很简洁发觉错误。

硬件上来说,出现的错误也比较单一,主要是因为自己的马虎大意,导致某些

线路连接错误,但凡这类错误,解决的方法只有一个,逐条逐条线路检查并解除错

误。

毕设是一次特别好的提升自身实力的机会,通过这次毕业设计我真的感觉到自

己的进步。在以后的学习、工作生活中,我会吸取这次毕设的阅历,做事细致、分

析要全面,出现错误时也不能灰心大意,要有志气、有信念去解决它。

27 55

附录A 仿真及硬件实物结果

仿真图:

28 55

29 55

实物图:

30 55

31 55

附录B 系统原理图

32 55

附录B 最终PCB

33 55

附录D 程序清单

/****************************************************

工程名:智能住宅安防报警系统

者:付江云

明:系统开关限制系统起先/结束工作,

系统起先工作后须要先设定当前时间,

确认后系统正式起先工作,系统可检测

来自气体传感器的信号以及光电传感器

的信号以供推断是否有险情,一旦测到

险情,先读取当前时间写入数组,并触

发报警电路自动拨号报警。

用户回来后,可利用查询键查询何时发

生何种险情。

***************************************************/

#include

#define uchar unsigned char

#define uint unsigned int

//定义液晶限制端口

sbit lcdrs = P1^0;

sbit lcdrw = P1^1;

sbit lcden = P1^2;

//限制输出信号端口

sbit sys = P1^3;

sbit tohuo = P1^4;

sbit todao = P1^5;

sbit tophone = P1^6;

//定义几个变量

uchar flag; //用于记录系统当前状态,可用于推断系统状态及设置时间

uchar num,tempnum; //用于记录当前险情组数,设置系统只存5组,每次重

启系统又复位

bit disdanger; //显示灾情标记位

uchar temphour,tempmin,tempsec,secnum;

34 55

//定义存储时间的二维数组

uchar info[10][4];

//预设液晶显示的内容

uchar code dat1[12] = " System is";

uchar code dat2[12] = " setting!";

uchar code dat3[14] = " not working!";

uchar code dat4[14] = " Fire Danger!";

uchar code dat5[15] = " Theft Danger!";

uchar code dat6[15] = " Setting Time!";

uchar code dat7[6] = " Time:";

uchar code dat8[10] = "";

uchar code dat9[12] = " working!";

uchar code dat10[15] = " Setting Hour!";

uchar code dat11[15] = " Setting Min! ";

uchar code dat12[15] = " Setting Sec! ";

uchar code dat13[13] = " Fire Danger!";

uchar code dat14[14] = " Theft Danger!";

uchar code dat15[13] = " No Danger!";

uchar code huan[32] = {

0xe0,0xff,0xe4,0xff,0xe4,0xe4,0xff,0x00,

0xe0,0xff,0xe4,0xee,0xf5,0xe4,0xe4,0x00, //汉字"

"

0xe2,0xe4,0xec,0xf4,0xe4,0xe4,0xe4,0x00,

0xe2,0xff,0xe2,0xea,0xea,0xe2,0xee,0x00 //汉字"

"

};

void delayms(uint z) //毫秒延时函数

{

uint i,j;

for(i=z;i>0;i--)

for(j=124;j>0;j--);

35 55

}

void lcd_write_com(uchar com) //液晶写指令函数

{

lcdrw = 0;

lcdrs = 0;

P0 = com;

delayms(5);

lcden = 1;

delayms(5);

lcden = 0;

}

void lcd_write_dat(uchar dat) //液晶写数据函数

{

lcdrw = 0;

lcdrs = 1;

P0 = dat;

delayms(5);

lcden = 1;

delayms(5);

lcden = 0;

}

void lcd_init() //液晶初始化函数

{

lcden = 0;

lcd_write_com(0x38);

lcd_write_com(0x0c);

lcd_write_com(0x06);

lcd_write_com(0x01);

lcd_write_com(0x80);

}

void system_init()

{

36 55

sys = 1;

tohuo = 1;

todao = 1;

tophone = 1;

flag = 0;

num = 0;

disdanger = 0;

temphour = 23;

tempmin = 59;

tempsec = 59;

secnum = 0;

tempnum = 0;

TR0 = 0;

}

void main()

{

uchar i;

system_init();

lcd_init();

EA = 1;

ET0 = 1;

TMOD = 0x01;

TH0 = 0x3c;

TL0 = 0x0bc;

EX1 = 1;

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

while(1);

/* 测试显示汉字。By Cloud.

uchar i;

lcd_init();

37 55

lcd_write_com(0x01);

lcd_write_com(0x40);

for(i=0;i<32;i++)

lcd_write_dat(huan[i]);

lcd_write_com(0x80+5);

for(i=0;i<2;i++)

lcd_write_dat(i);

while(1);

*/

}

void int0() interrupt 2

{

uchar tempdat = P2;

uchar tempflag,i;

EX0 = 1;

switch(tempdat)

{

case 0x0fe: //设置时间

tempflag = 0;break;

case 0x0fd: //时间加

tempflag = 1;break;

case 0x0fb: //时间减

tempflag = 2;break;

case 0x0f7: //系统开关

tempflag = 3;break;

case 0x0bf: //火警信号

tempflag = 4;break;

case 0x0df: //盗情信号

tempflag = 5;break;

case 0x0ef: //切换下组险情

tempflag = 6;break;

}

switch(flag)

{

case 0:

38 55

{

if(tempflag==3)

{

flag = 1;

sys = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat2[i]);

}

break;

}

case 1:

{

if(tempflag==3)

{

flag = 0;

sys = 1;

tohuo = 1;

todao = 1;

tophone = 1;

num = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

}

if(tempflag==0)

{

flag = 2;

39 55

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat10[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

break;

}

case 2:

{

if(tempflag==3)

{

flag = 0;

sys = 1;

tohuo = 1;

todao = 1;

tophone = 1;

num = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

}

40 55

if(tempflag==0)

{

flag = 3;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat11[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==1)

{

if(temphour==23)

temphour = 0;

else

temphour++;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat10[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

41 55

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==2)

{

if(temphour==0)

temphour = 23;

else

temphour--;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat10[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

break;

}

case 3:

{

if(tempflag==3)

{

flag = 0;

sys = 1;

tohuo = 1;

42 55

todao = 1;

tophone = 1;

num = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

}

if(tempflag==0)

{

flag = 4;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat12[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==1)

{

if(tempmin==59)

tempmin = 0;

else

tempmin++;

43 55

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat11[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==2)

{

if(tempmin==0)

tempmin = 59;

else

tempmin--;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat11[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

44 55

lcd_write_dat(dat8[tempsec%10]);

}

break;

}

case 4:

{

if(tempflag==3)

{

flag = 0;

sys = 1;

tohuo = 1;

todao = 1;

tophone = 1;

num = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

}

if(tempflag==0)

{

flag = 5;

TR0 = 1;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<12;i++)

lcd_write_dat(dat9[i]);

}

if(tempflag==1)

{

45 55

if(tempsec==59)

tempsec = 0;

else

tempsec++;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat12[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==2)

{

if(tempsec==0)

tempsec = 59;

else

tempsec--;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat12[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

46 55

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

break;

}

case 5:

{

if(tempflag==3)

{

flag = 0;

sys = 1;

tohuo = 1;

todao = 1;

tophone = 1;

num = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<12;i++)

lcd_write_dat(dat1[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<14;i++)

lcd_write_dat(dat3[i]);

}

if(tempflag==0)

{

flag = 2;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<15;i++)

lcd_write_dat(dat10[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

47 55

lcd_write_dat(dat8[temphour/10]);

lcd_write_dat(dat8[temphour%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempmin/10]);

lcd_write_dat(dat8[tempmin%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[tempsec/10]);

lcd_write_dat(dat8[tempsec%10]);

}

if(tempflag==4)

{

num++;

info[num-1][0] = temphour;

info[num-1][1] = tempmin;

info[num-1][2] = tempsec;

info[num-1][3] = 1;

tohuo = 0;

todao = 1;

tophone = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<14;i++)

lcd_write_dat(dat4[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[info[num-1][0]/10]);

lcd_write_dat(dat8[info[num-1][0]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[num-1][1]/10]);

lcd_write_dat(dat8[info[num-1][1]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[num-1][2]/10]);

lcd_write_dat(dat8[info[num-1][2]%10]);

}

if(tempflag==5)

48 55

{

num++;

info[num-1][0] = temphour;

info[num-1][1] = tempmin;

info[num-1][2] = tempsec;

info[num-1][3] = 2;

todao = 0;

tohuo = 1;

tophone = 0;

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<14;i++)

lcd_write_dat(dat5[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[info[num-1][0]/10]);

lcd_write_dat(dat8[info[num-1][0]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[num-1][1]/10]);

lcd_write_dat(dat8[info[num-1][1]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[num-1][2]/10]);

lcd_write_dat(dat8[info[num-1][2]%10]);

}

if(tempflag==6)

{

if(tempnum==0)

tempnum = num;

else

tempnum--;

if(tempnum==0)

{

lcd_write_com(0x01);

lcd_write_com(0x80);

for(i=0;i<13;i++)

49 55

lcd_write_dat(dat15[i]);

}

else

{

if(info[tempnum-1][3]==1)

{

tohuo = 0;

todao = 1;

tophone = 1;

lcd_write_com(0x01);

lcd_write_com(0x80);

lcd_write_dat(dat8[tempnum]);

for(i=0;i<13;i++)

lcd_write_dat(dat13[i]);

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[info[tempnum-1][0]/10]);

lcd_write_dat(dat8[info[tempnum-1][0]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[tempnum-1][1]/10]);

lcd_write_dat(dat8[info[tempnum-1][1]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[tempnum-1][2]/10]);

lcd_write_dat(dat8[info[tempnum-1][2]%10]);

}

if(info[tempnum-1][3]==2)

{

todao = 0;

tohuo = 1;

tophone = 1;

lcd_write_com(0x01);

lcd_write_com(0x80);

lcd_write_dat(dat8[tempnum]);

for(i=0;i<14;i++)

lcd_write_dat(dat14[i]);

50 55

lcd_write_com(0x80+0x40);

for(i=0;i<6;i++)

lcd_write_dat(dat7[i]);

lcd_write_dat(dat8[info[tempnum-1][0]/10]);

lcd_write_dat(dat8[info[tempnum-1][0]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[tempnum-1][1]/10]);

lcd_write_dat(dat8[info[tempnum-1][1]%10]);

lcd_write_dat('-');

lcd_write_dat(dat8[info[tempnum-1][2]/10]);

lcd_write_dat(dat8[info[tempnum-1][2]%10]);

}

}

}

break;

}

}

EX1 = 1;

}

void int1() interrupt 1

{

TH0 = 0x3c;

TL0 = 0X0b0;

if(secnum==14)

{

secnum = 0;

if(tempsec==59)

{

tempsec = 0;

if(tempmin==59)

{

tempmin = 0;

if(temphour==23)

{

temphour = 0;

51 55

}

else

temphour++;

}

else

tempmin++;

}

else

tempsec++;

}

else

secnum++;

}

52 55

参考文献

[1] 李广弟等,单片机基础,北京航空航天出版社, 2001.721~40

[2] 楼然苗等,51系列单片机设计实例,北京航空航天出版社,2003.3: 13~19

[3] 唐俊翟等,单片机原理与应用,冶金工业出版社, 2003.9: 15~20

[4] 刘瑞新等,单片机原理及应用教程,机械工业出版社, 2003.7 15~23

[5] 吴国经等,单片机应用技术,中国电力出版社, 2004.1 45~49

[6] 李全利,迟荣强,单片机原理及接口技术,高等教化出版社,2004.1 :16~23

[7] 侯媛彬等,凌阳单片机原理及其毕业设计精选 科学出版社, 2006.8:15~34

[8] 刘骁. 多功能防盗报警测试系统. 油气田地面工程, 2005, 7:6~19

[9] 黄祖华, . 智能化住宅与将来家庭网关. 2004 ,21 (B10) 3~18

[10] 林康琴. 程控交换原理. 北京: 北京邮电高校出版社, 200111~24

[11] 李传南,王剑刚,李宝华. 单片机与DTMF 信号收发芯片MT8880 的干脆接口.

1999 :10~23

[12] GB3380 82 ,电话自动交换网铃流和信号音.34~45

[13] 岳云天,刘军伟, . 基于一体化DTMF 收发IC PSTN 通信接口的实现.

电脑应用技术,2002 , (54) :10 ,21.

[14] ,袁小平. 基于电话线的远程报警器的设计. 山东电子, 2004

14~23

[15] 蒋焕文,孙续. 测量和仪器领域的新进展. 电子科技导报,1995 :12~16

[16] 沈兰荪. 数据采集技术. 合肥:中国科学技术高校出版社,1990 13~41

[17] 吴石增,黄鸿.传感器与测控技术.北京:中国电力出版社,2003 14,18,19

[18] 何希才,等.传感器及其应用实例.北京:机械工业出版社,2004 15~17

[19] 黄肾武,等.传感器原理与运用.成都:电子科学技术出版社,1995 23~28

[20] 王俊峰,孟令启,等.现代传感器应用技术.北京:机械工业出版社,2006

13~17

[21] 刘畅生,等.传感器简明手册及应用电路.西安:西安电子科技高校,2005

7~16

53 55

[22

[

23] M . Herry. Analog Integrate Circuits WILEY.2001.67

[24] YE SM, L ID L. Design of PWM constant current division drive circuit of stepper

motor [ J ]. Mechanical & Electrical Engineering Magazine, 2004, 21 (12) : 20 - 22.

[25] WANG Y L. High and low voltage exchange for stepper motor drive [ J ].

Mechanical & Electrical Engineering Magazine, 2005, 22 (10) : 35 - 37.

[26] YU S Z, L IL X, CHENW H. Calculation of step motor’s speed-up /down curve

for a kind of variable load[ J ]. Mechanical & Electrical Engineering Magazine, 2004,

21(4) : 20 - 22.

[27] SUN R. The step motor driver based on PIC16F73/PIC16F873 MCU[J ].

Mechanical & Electrical EngineeringMagazine,2003, 20 (6) : 8 - 10.

[28] Isao Takahashi, Toshihiko Noguchi. A new quick-response and high-efficiency

control strategy of an induction motor [ J ]. IEEE Trans on Ind App l, 1986, 22(5) :

45,56

54 55

致谢

本毕业设计是基于51单片机开发的一个只能限制系统。在选本课题作为毕业

设计题目的时候我特别兴奋,因为我觉得我所学的东西最终可以再本次设计中有所

发挥了。我特别感谢我的微机原理、单片机接口技术、计算机限制技术老师余红英

老师,是她为我奠定了坚实的基础,是她让我在学习中找到了自己的爱好及爱好,

也是她在这次毕业设计中对于我供应了很多的指导以及帮助。另外我要感谢我的C

语言老师樊永生老师,是他启蒙了我的编程基础,是他让我能够特别轻松的将C

言学问运用到我们的单片机开发中。

高校的四年很短,假如我们不好好把握这短暂的四年,那么高校只能在荒废中

度过。我很感谢我的寝室挚友们,他们和我一起努力,一起奋斗四年,我们都没虚

度四年光阴,我们都在学生生活中有所收获。

我还要感谢一位是我将用一生去敬重的人,他是我去年九月份参与电子设计大

赛的指导老师,是他勾起了我对嵌入式、单片机行业的狂热的追崇,是他让我知道

了自己欠缺很多,是他让我更加坚决了自己的人生目标。

请容许我再次感谢我的指导老师樊永生老师以及这次毕业设计供应技术支持

以及督促我们按进度完成任务的余红英老师,是你们让我在高校最终的一个学期没

有虚度,是你让我学会了刻苦专研的精神。

最终我要感谢的是我的父母,你们辛辛苦苦把我培育这么大,你们不仅教化我

怎么做事,更教会我怎么为人。在今后的道路上我肯定会做好每一件事,肯定不让

你们悲观。

55 55

全球顶级进口艺术漆品牌-电磁炉哪个牌子的质量好

智能住宅安防报警系统设计

更多推荐

外推窗防盗网效果图