家庭智能紧急呼救系统的设计 - 图文

更新时间:2024-02-26 13:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西北民族大学本科生毕业设计

西北民族大学 2011级毕业设计(论文)

家庭智能紧急呼救系统的设计

年 级: 学 号: 姓 名: 专 业: 指导老师:

二零一五年六月

西北民族大学本科生毕业设计

摘 要

随着经济的飞速发展和人们生活水平的不断提高,各种花式别墅和其它住宅如雨后春笋遍布祖国的大江南北。但是家庭的各种状况也不断出现,如:入室盗窃、火灾、易燃易爆物品发生爆炸、有毒气体泄漏,独自一人在家时出现紧急事故无法求助等。所以设计出一款保障人们生命和财产安全而且经济实用的家庭智能紧急呼救系统是非常有必要的。

基于单片机家庭智能紧急呼救系统的设计,是采用STC12C5A32S2单片机作为整个系统的控制核心,利用人体红外传感器对一定范围内的人体进行监测,烟雾传感器对室内烟雾值进行检测,温度传感器实时监测室内温度否超过设定最大值,紧急呼救按键用于紧急情况呼救,LCD液晶显示屏实时显示各种监测数据,蜂鸣器用于发声报警,利用可靠且成熟的GSM移动网络对家庭中出现的状况以短信形式及时发送到住户手机上。

关键词:GSM模块; 单片机; 紧急呼救按键; 人体红外传感器

I

西北民族大学本科生毕业设计

ABSTRACT

With the economic development and the improvement of people's living

standards, and all kinds of fancy villas are springing up throughout everywhere of our motherland, but there are also a variety of problems appearing for the families such as: burglary, fire, explosion of inflammable and explosive articles , leak of toxic gas, and staying at home alone, and cannot ask for help when an emergency occurs. So it is necessary to design a kind of affordable intelligent emergency call system to protect people's lives and property safety.

The design of SOS system is adopting STC12C5A32S2 microcontroller as the the core of control for the whole system. Making use of infrared sensor to monitor illegal invaders and smoke sensor to detects the smoke values indoor whether it exceeds a set maximum. Also, collecting indoor temperature information by temperature sensors as well as the SOS button for emergency call for help. LCD liquid crystal display shows all kinds of monitoring date in real time. Besides, buzzer is for audible alarm which adopts reliable and mature GSM mobile network to send a text message to a people’s phone when there are any problems appearing in the family.

Key Words:GSM module; SCM; SOS button; PIR Sensor

II

西北民族大学本科生毕业设计

目 录

摘 要............................................................. I ABSTRACT........................................................... II 第1章 绪 论........................................................ 1

1.1 课题研究的背景 .............................................. 1 1.2 课题研究目的和意义 .......................................... 1 1.3 本设计的主要内容 ............................................ 1 1.4 课题设计研究进度计划 ........................................ 2 1.5 本章小结 .................................................... 2 第2章 设计功能指标要求............................................. 3 第3章 设计方案..................................................... 4

3.1 基本设计思路 ................................................ 4 3.2 整体方案概述 ................................................ 4 3.3 系统方案论证 ................................................ 5 3.4 本章小结 .................................................... 5 第4章 具体设计..................................................... 6

4.1 硬件电路设计 ................................................ 6

4.1.1 单片机最小系统电路设计................................. 6 4.1.2 防盗报警电路设计....................................... 7 4.1.3 火灾报警电路设计....................................... 7 4.1.4 紧急呼救电路设计....................................... 8 4.1.5 无线报警设计........................................... 8 4.1.6 LCD显示电路设计 ....................................... 9 4.1.7 报警器电路设计......................................... 9 4.2 元器件选择 ................................................. 10

4.2.1 单片机选择............................................ 10 4.2.2 人体红外热释传感器选择................................ 10 4.2.3 烟雾传感器选择........................................ 11 4.2.4 温度传感器选择........................................ 11 4.2.5 GSM模块选择 .......................................... 11 4.2.6 LCD显示器选择 ........................................ 12 4.3 系统总体软件程序设计 ....................................... 12

4.3.1 烟雾传感器程序设计.................................... 13 4.3.2 蜂鸣器程序设计........................................ 13 4.3.3 人体红外传感器程序设计................................ 14 4.3.4 温度传感器程序设计.................................... 14 4.3.5 紧急呼救按键程序设计.................................. 15 4.3.6 LCD液晶显示程序设计 .................................. 15 4.4 本章小结 ................................................... 16 第5章 设计调试及遇到的问题处理.................................... 17

5.1 设计的调试方案和安排 ....................................... 17 5.2 调试过程说明 ............................................... 17

III

西北民族大学本科生毕业设计

5.3 调试遇到的问题和解决方法 ................................... 19 5.4 本章小结 ................................................... 20 第6章 系统的测试结果及分析........................................ 21

6.1 测试方案 ................................................... 21 6.2 测试数据 ................................................... 21 6.3 测试结果分析 ............................................... 23 6.4 本章小结 ................................................... 23 第7章 总结与展望.................................................. 24

7.1 总结 ....................................................... 24 7.2 展望 ....................................................... 24 致 谢........................................... 错误!未定义书签。 参考文献........................................................... 26 附 录 1........................................................... 27 附 录 2........................................................... 28

IV

西北民族大学本科生毕业设计

第1章 绪 论

1.1 课题研究的背景

现在看新闻,经常会看到某某地方的住宅因不明原因起火,房子烧成灰烬,死伤尚未确定,或者是高龄老人突发疾病因家中无人送医而导致昏倒甚至身亡等等住宅突发事件[1]。现在的一般住宅各种状况很多,比如突发火灾,入室盗窃,煤气泄漏,以及老人在家突然疾病得不到及时救助等等问题[2]。这些问题一旦发生,后果不堪设想,轻则丢失财物,重则失去性命。这些事故造成后果特别严重,是因为现在大多数住宅缺乏家庭智能紧急呼救系统,或者所用的紧急呼救系统不够完善。因此,我们需要利用科学技术防患于未然,设计一个自动报警系统来实现住宅高度自动化来保障我们的人身和财产安全。

1.2 课题研究目的和意义

家庭智能紧急呼救系统的设计的目的,就是利用科学技术来保障人们的人身和财产安全。家庭智能紧急呼救系统的设计可以减少人们的经济损失,保障人们的人身安全,是家庭的安全卫士[4]。家庭智能紧急呼救系统利用烟雾传感器实时检测住宅烟雾值;利用人体红外线检测有无非法闯入情况;利用温度传感器监测室内温度是否过高;设计一个紧急呼救按钮防止老人或者小孩独自在家突发紧急情况时能够及时呼救。然后利用单片机控制GSM发短信模块,可以实现各种突发状况的自动报警[3]。当老人或者小孩独自在家身体突发不适时,只需按下紧急呼救按钮,家人就能知道并及时报警和回家救助,实现真正的家庭安全智能化。家庭紧急呼救系统可以让保障家庭安全,还能让住户外出时更加放心。最重要的是当家里出现事故时,家庭智能紧急呼救系统能够及时报警,这样事故会得到及时处理,降低事故对人身的伤害和减少财产损失。随着物联网的发展,智能家居将成为每家每户的标准配置。所以,家庭智能紧急呼救系统的设计能给未来智能家居的扩展和研究起到铺路的作用,具备一定的研究价值。

1.3 本设计的主要内容

本设计的内容是设计烟雾传感器搭配温度传感器,对室内烟雾值和温度进行检测,设计人体红外传感器对非法入侵者进行监测,设计紧急呼救按键的设计可以在家中老人或者孩子以及独一人在家发生突发事件时,可以及时呼救。以单片

第 1 页 共 49 页

西北民族大学本科生毕业设计

机作为系统的控制核心,对紧急呼救按键以及各个传感器检测到的信息进行分析处理,然后控制蜂鸣器发出声音报警和GSM通信模块向住户发出报警短信[5]。系统中设计了烟雾传感器搭配温度传感器检测以及人体红外传感器,再加上紧急呼救按键的设计,大大的增加了本系统的检测环节的可靠性和有效性。而蜂鸣器和GSM通信模块的设计,大大提高了整个系统的实用性和可靠性[6]。本设计的GSM模块设计的是向三位住户连续发短信,大大提高了发出的报警短信被住户及时看到的几率。

1.4 课题设计研究进度计划

第一阶段:

2014年11月10日-2015年1月10日:尽可能多的收集家庭智能紧急呼救系统相关资料并将收集的各种资料进行分类整理,掌握国内外关于课题方向的研究动态及最新进展,完成开题报告。 第二阶段:

2015年1月20日-2015年4月10日: 通过图书、视频等资料学习STC系列单片机,C语言软件编程,了解各个元器件的原理以及画出原理图,焊接出实物,实物的调试。 第三阶段:

2015年4月10日-2015年5月1日:参考国内外与家庭智能紧急呼救系统相关的文献,撰写毕业论文,准备毕业论文答辩。 第四阶段:

2015年5月:毕业论文答辩。

1.5 本章小结

本章主要介绍家庭紧急呼救系统的研究实际背景,介绍具体想达到的目和研究具有什么样的意义还有主要研究内容,对各个元器件的功能模块的功能指标进行介绍,明确了本设计的研究计划进度。

第 2 页 共 49 页

西北民族大学本科生毕业设计

第2章 设计功能指标要求

本设计利用温度传感器和烟雾传感器搭配监测形成家庭防火灾报警部分,人体红外传感器起到防盗报警作用,而且本设计添加了紧急呼救按键和GSM发短信报警功能,使得系统的功能更加完善和可靠。具体各个模块功能指标要求如下: (1)温度传感器:设定温度上限值为50°C,当室内温度超过50°C时,系统发出警报;

(2)人体红外传感器:人体红外的监测距离为7米,当入侵者进入7米监测范围内,系统发出警报;

(3)烟雾传感器:主要检测室内烟雾值以及火焰,当室内烟雾值达到一定值或者火焰达到一定程度时,系统发出警报;

(4)紧急呼救按键:如果有紧急情况发生,当紧急呼救按键按下,系统发出警报;

(5)GSM模块:当各个模块检测到异常,单片机控制GSM模块向3位住户发出报警短信。

第 3 页 共 49 页

西北民族大学本科生毕业设计

第3章 设计方案

3.1 基本设计思路

通过对国内外家庭智能紧急呼救系统的研究现状和方法的分析,同时结合我国总体生活水平和居住条件等各个方面情况。所以,本设计既要考虑到系统的可行性,也要考虑到设计的成本代价。元器件的选择要符合设计要求,不能盲目选择[7]。通过分析,要设计一款安全可靠又合适家庭智能紧急呼救系统需要具备以下条件:

(1)系统需具备人体红外线传感器以达到防盗报警效果;

(2)系统需具备烟雾传感器以达到防气体泄漏和防火灾报警效果; (3)系统需具备温度传感器对室内温度检测以达到高温(火灾)报警效果; (4)系统需具备家庭紧急呼救按键以达到突发事件及时报警效果; (5)系统需具备液晶显示器来直观反馈个检测器件是否正常工作; (6)系统需具备GSM模块在事故时及时发出报警短信,同时向3位住户发送短信保证报警短信能够及时被看到,第一时间对事故作出处理。

3.2 整体方案概述

本设计主要是以STC12C5A32S2单片机为控制核心。利用烟雾传感器和温度传感器搭配检测形成火灾报警部分,防盗报警部分利用的是人体红外传感器,紧急呼救部分设计成按键形式,显示部分利用LCD液晶显示,报警部分蜂鸣器和GSM模块组成,GSM模块在报警时向3位住户发送报警短信,系统总体原理框图如下图3-1所示:

3-1系统总体原理框图

第 4 页 共 49 页

西北民族大学本科生毕业设计

3.3 系统方案论证

本系统主要是利用一个微控制器采集来自传各个感器器检测到的信息和紧急呼救按键的信息,然后微控制器GSM通信模块发出报警短信[8]。所以微控制器的的选择,是整个设计的重中之重,通过分析和总结,提出了三种方案。

方案一:本设计的微控制器采用51系列单片机; 方案二:本设计的微控制器采用PIC单片机; 方案三:本设计的微控制器采用ARM系列的单片机。

以上三种方案均可用于本设计,经过综合考虑和分析得出结论:51系列单片机在学习生活中接触比较多,编程相对容易也比较了解其性能,可查询资料也较多,而且价格便宜。PIC单片机兼容性强,但是指令较少,控制指令编写相对较难,价格比较贵[9]。而ARM单片机功能强大,但是有很多它提供的功能在本设计中无法用到,可查询资料也相对较少,价格也相对较贵[10]。通过各个方面的比较和分析和基于设计预算成本的考虑,决定使用第一套方案。

3.4 本章小结

本章主要对家庭智能紧急呼救系统的设计方案进行介绍,首先介绍对本设计

的基本设计思路。然后是总体设计的概述,对系统需要的元器件和实现的功能进行了阐述。最后是对设计的微控制的选择的方案进行具体论证,选择最适合本设计的方案。

第 5 页 共 49 页

西北民族大学本科生毕业设计

第4章 具体设计

4.1 硬件电路设计

4.1.1 单片机最小系统电路设计

单片机最小系统主要是由单片机、晶振电路、复位电路,电源组成[11]。本系统的用STC12C5A32S2单片机作为控制核心,+5V电源供电。时钟电路作为单片机最小系统最基本也最重要的组成部分之一,用来给单片机提供时钟信号,电路受时钟电路对的影响随时钟电路参数的变化而变化。时钟电路的输入接口分别是单片机的引脚XTAL1和引脚XTAL2,时钟周期随着使用不同的晶振大小会产生变化,所以指令周期的不同[12]。复位电路可以保证电路安全可靠的工作,是电子产品中不可或缺的电路元件,系统在启动运行时都需要进行复位,因为复位之后系统启动后寄存器中的数据都处于初始状态值,而且系统必须从这个初始状态开始启动工作。本系统中复位操作方式设计为按键复位。进行复位操作时,如果在RST引脚上是高电平复位信号,而且保持两个周期以上,这个时候单片机就进行复位操作[13]。单片机最小系统电路图如图4-1所示。

图4-1 单片机最小系统电路图

第 6 页 共 49 页

西北民族大学本科生毕业设计

4.1.2 防盗报警电路设计

本设计的防盗报警模块利用的是人体红外热释传感器。家庭智能紧急呼救系统设计,也是基于原有的家庭防盗系统加上各种传感器模块和紧急呼救按键的设计组成的更加全面且可靠的家庭安防系统,所以人体红外传感器模块是本系统不可或缺的模块。人体红外热释传感器有3个引脚,1号引脚接+5V电源,2号引脚接单片机,3号引脚接地。人体红外热释传感器电路图如图4-2所示。

图4-2 人体红外热释传感器电路图

4.1.3 火灾报警电路设计

一般说到家庭的安全问题,一般谈论的焦点问题都是防火防盗。火灾是家庭事故的主要原因之一,设计一个火灾报警电路是防止火灾对家庭造成重大损失的重点措施。烟雾传感器既能检测烟雾值,又能检测各种可燃气体的泄漏,绝对是家庭防火系统中的最佳选择[14]。因此本系统设计一个烟雾传感器模块,型号为MQ-2。MQ-2烟雾传感器有4个引脚,1号引脚接AO口,2号引脚接单片机,3号引脚接地,4号引脚接+5V电源。MQ-2烟雾传感器电路图如图4-3所示。

图4-3 烟雾传感器电路图

上面介绍了烟雾传感器的设计能够很好的防止家庭火灾,但是为了使系统更加稳定可靠,本设计决定在防火灾这一环节加上一个模块,那就是温度传感器,选用的型号为DS18B20。

一般情况下,正常的室温一般不会超过40°C,只有发生火灾或者其他造成温度过高的特殊情况时室内温度才会达到40°C以上。但是有些地方夏天偶尔也

第 7 页 共 49 页

西北民族大学本科生毕业设计

会出现40°C的高温天气,所以为了保证温度传感不误报警,所以本设计温度传感器设置的温度上限值为50°C,只有当室内温度超过50°C,系统才会发出报警。温度传感器的电路图如图4-4所示。

图4-4 温度传感器的电路图

4.1.4 紧急呼救电路设计

现在的家庭,年轻人大多数时间都在外面工作,而在留在家里的一般都是年迈的老人或者小孩。老人如果突然疾病或者小孩在家遇到突发状况而自己又无法解决,一旦出现这样的问题,轻则是救治不及时导致病情加重或者加大经济损失,重则是失去生命。因此在本设计中,特别设计一个紧急呼救按键。当人们独自在家时,一旦突然疾病和紧急情况且自己无法解决,可以立即按下紧急呼救按键,系统会马上发出蜂鸣声报警而且通过GSM模块向家发出紧急呼救信息,紧急呼救按键引脚接单片机P1.7口。紧急呼救按键设计接口如图4-5所示。

图4-5 紧急呼救按键电路图

4.1.5 无线报警设计

为了让家庭紧急呼救系统的报警功能更加完善,系统设计了无线报警功能,就是利用GSM模块向住户发送短信报警。本设计的GSM模块的型号是SIM900A。单片机对SIM900A进行控制,通过TTL接口对SIM900A模块进行控制,将单片机的TXD连接到SIM900A的RXD,将单片机的RXD链接到SIM900A的TXD上,实现串数据的接收和发送,GND连接到GND上[15]。GSM接口电路如图4-6所示。

第 8 页 共 49 页

西北民族大学本科生毕业设计

图4-6 GSM接口电路图

4.1.6 LCD显示电路设计

本设计的液晶显示是利用LCD液晶显示屏。显示屏上需要清晰直观的显示室内实时温度、烟雾传感器是否报警、人体红外传感器是否报警、是否在布防状态,以及系统是否发出紧急呼救报警,可以利用液晶显示屏上的显示结果来检查整个系统是否在正常工作。本设计是用12864液晶显示进行显示,12864液晶显示器共有12个引脚,6号引脚接+5V电源,7号引脚接地,其他引脚接单片机。12864液晶显示电路图如图4-7所示。

图4-7 液晶显示屏电路图

4.1.7 报警器电路设计

无论是过去还是现在,报警器是每个家庭紧急呼救系统的必备模块。本设计的报警器用的是蜂鸣器。蜂鸣器在报警信号发出后,发出蜂鸣般刺耳的声音,这样的声音会直接会使入侵者惊慌而逃而且能够引起附近居民的注意。蜂鸣器是利用8550三极管进行放大,基极接单片机,集电极接地,发射极接蜂鸣器正极,蜂鸣器接+5电源。蜂鸣器电路图如图4-8所示。

第 9 页 共 49 页

西北民族大学本科生毕业设计

图4-8 蜂鸣器电路图

4.2 元器件选择

4.2.1 单片机选择

选择一个适合的单片机,是保证系统能够正常工作的前提。由于本设计的实现功能较多,所以程序编写也相对复杂,生成的需要烧入单片机.hex文件内存大小为25k。一般的单片机大多数都是8k内存,根本不能满足要求,所以本设计选择的单片机最基本要求是内存至少要在25k上。

本次设计对于单片机的选择,首先要确保报警的准确可靠和抗干扰性得到保障,而且要求要不增加设计的成本而且又能保证系统能够稳定可靠工作。STC12C5A32S2单片机功能特点以及指令完全兼容传统的单片机,具备传统单片机的各种功能,而且比传统的8051系单片机运行速度要快10倍左右[16]。最重要的是其内存高达32K,符合本设计的程序内存要求。通过对各种能够实现本设计功能的单片机的对比,经过综合分析决定,决定使用STC12C5A32S2单片机做为本设计的微控制器。

4.2.2 人体红外热释传感器选择

本设计系统采用的是型号为HC-SR501的热释电红外传感器。探测波长范围为8~14μm。人体的正常温度一般在37°C左右,因此会发出波长为10μm左右的红外线[17]。当有非法入侵者出现在监测范围内,其能够很有效地监测到非法入侵者。HC-SR501的热释电红外传感器可以不分昼夜,可以连续二十四小时不间断监测。而且HC-SR501红外传感器检测到的信号是不需要再外置A/D转换器进行A/D转换的,原因是其内部拥有BISS0001芯片,可以自身完成A/D转换[18]。当探测范围内有非法入侵者,输出高电平,入侵者离开时经过延时关闭高电输出

第 10 页 共 49 页

西北民族大学本科生毕业设计

低电平,同时触发蜂鸣器报警,并通过GSM模块向住户发短信报警。

4.2.3 烟雾传感器选择

本设计选用的传感器为MQ-2烟雾传感器。此类传感器是众多半导体烟雾传感器的其中一种,有很多优点,例如:能够探测的区域很宽、灵敏度高、非常的耐用、驱动电路不是很复杂,稳定性特别好等[19]。烟雾传感器收集到的信号为模拟信号,需要经过A/D转换成数字信号才能被单片机接收。当室内烟雾和一些可燃气体浓度增加到一定值到一定值,烟雾传感器就会将信息经过处理最后反馈到单片机,发出警报。MQ-2烟雾传感器在测量前需要先预热几分钟,这样做可以减少误报。

4.2.4 温度传感器选择

本设计选用的温度传感器型号为DS18B20。温度传感器是一个可以直接把采集的模拟信号转换成数字信号,而且信号转换速度特别快,仅需1S就可以完成。温度传感器检测到的温度是直接以数字的形式显示在液晶显示屏上,而且检测温度能精确到小数点后一位。其读出的数值宽度可达到9位,能够测量的最低温度为-55°C,最高温度为120°C[20]。DS18B20的结构特别的简单小巧,可以焊接在空间很小的电路板上,除此之外DS18B20还有很多优点,比如测量温度范围很广,测量反应速度很快,购买成本低等。DS18B20还可以设置温度上限,一旦检测到的温度超过上限值,系统就会报警。

4.2.5 GSM模块选择

本设计的GSM通信模块的型号为SIM900A。其采用工业标准接口,是一个2频的GSM模块,工作频段为为EGSM 900MHZ和 DCS 1800MHZ。SIM900A工作电压范围:3.1-4.8V,操作温度范围:-40°C to +85 °C,SM900A采用省电技术设计,在睡眠模式下最低耗流只有1mA。SIM900A的主要特征如下: (1)功能齐全:电话、短信,GPRS网络通信等;

(2)供电多样性:5V引脚和VBTA引脚可以分别用USB配手机充电器供电和直接使用锂电池供电;

(3)保护功能完善:具有电源反接保护和SIM卡保护。

第 11 页 共 49 页

西北民族大学本科生毕业设计

4.2.6 LCD显示器选择

因为液晶显示屏需要的显示的数字和文字比较多,所以此次设计的的LCD液晶显示屏需要有一定的长度和宽度,才能满足对所有数据和文字的清晰显示。基于上述要求,通过对各种LCD液晶显示屏的对比和分析,本电路设计的液晶接口电路采用的是12864液晶显示屏。12864显示屏内置液晶显示模块,可以显示一些简单的中文字库的点阵图形。12864还具有背光功能,可以在夜间正常显示所有数据。12864的最大特点是编程比较简单,而且功耗很小。

4.3 系统总体软件程序设计

家庭智能紧急报警系统主要采用模块化编程,分为主控模块、传感器检测模块、紧急呼救按键模块、GSM通讯模块、供电模块。利用C语言对程序编写。主程序流程图如图4-9所示,由流程图可以看出,当传感器检测到情况或者紧急呼救按键按下时,则表示家中有异常状况发生,蜂鸣器会发出警报,与此同时GSM通讯模块以短信的形式告知户主中发生异常。

图4-9 主程序流程图

第 12 页 共 49 页

西北民族大学本科生毕业设计

4.3.1 烟雾传感器程序设计

当室内烟雾浓度过高或者一些气体泄漏,烟雾传感器就会将信息先通过A/D转换,然后传送给单片机,单片机控制蜂鸣器发出报警声,同时控制GSM通信模块分别向三位住户发送短信告知家中发生异常情况,用户就可以及时做出相应处理。烟雾传感器检测流程图如图4-10所示。

图4-10 烟雾报警流程图

4.3.2 蜂鸣器程序设计

蜂鸣器报警的流程设计,所谓蜂鸣器报警就是单片机控制蜂鸣器放音过程,达到报警功效。当家庭智能紧急呼救系统检测到异常后会把信息反馈给单片机,单片机控制蜂鸣器发出蜂鸣声报警。蜂鸣器工作程序流程图如图4-11所示。

图4-11 蜂鸣器程序流程图

第 13 页 共 49 页

西北民族大学本科生毕业设计

4.3.3 人体红外传感器程序设计

人体红外传感器的作用就是防盗,当有入侵者进入到红外传感器的监测范围内,红外传感器先经过内置设备将收集到的信号进行放大,然后将信息传送给单片机。单片机控制蜂鸣器发出警报声,同时GSM通信模块分别向三位住户发短信告知有人入室盗窃。人体红外程序流程图如下图4-12所示:

图4-12 人体红外传感器程序流程图

4.3.4 温度传感器程序设计

温度传感器主要是检测家庭温度是否过高,当温度传感器检测家庭温度超50°C,首先会将信息传送到单片机,单片机控制蜂鸣器发出报警声,然后通过GSM通信模块分别向三位住户发短信告知家中温度情况异常,以便于住户及时做出相应的处理,保证人身和财产安全。测温度传感器程序流程图如图4-13所示。

图4-13 温度传感器程序流程图

第 14 页 共 49 页

西北民族大学本科生毕业设计

4.3.5 紧急呼救按键程序设计

当家中只有老人或者小孩独子在家时,发生紧急情况且无法拨打电话求救时,只要按下呼救按键,就会直接将信号传送给单片机,单片机控制蜂鸣器发出报警声,同时GSM模块发出报警短信。紧急呼救程序流程图如图4-14所示。

图4-14紧急呼救程序流程图

4.3.6 LCD液晶显示程序设计

当各个传感器检测在检测或者紧急按键按下或者未按下时,都会在LCD液晶显示器上实时显示各个元器件的工作状态。人们可以通过LCD液晶显示器观察元器件的各种数据,可以根据数据和实际情况进行对比,判断各个器件工作是否正常。LCD液晶显示程序流程图如图4-15所示:

图4-15 LCD液晶显示程序流程

第 15 页 共 49 页

西北民族大学本科生毕业设计

4.4 本章小结

本章主要介绍了各个传感器模块的硬件电路设计以及紧急呼救按键的设计,还对系统显示模块和GSM通信模块的电路设计进行了介绍,每个硬件的原理进行详细的介绍。还介绍了各个模块的选择和软件设计,对系统的总体软件设计进行介绍,然后详细说明了各个元器件的软件设计的功能以及工作特点,认真绘制了每个元器件的程序流程图。

第 16 页 共 49 页

西北民族大学本科生毕业设计

第5章 设计调试及遇到的问题处理

5.1 设计的调试方案和安排

硬件调试的方案一般有两种,分别为边焊接安装边调试和整体焊接安装好后再调试。而本次调试采用的方案是整个系统焊接好了之后一次性调试的方法。大致的调试安排如下:

(1)先通电前检查,焊接完毕后一定不要着急接通电源,一定要认真检查接线有没有多接或者少接以及短路等情况;

(2)通电观察:在检查线路正常后通电,然后注意观察是否有没有异常情况,如漏电,元器件烧坏等;

(3)单元电路调试:在观察电路后确认了电路没有异常情况,就可以对单元电路分别进行调试;

(4)联机调整:每个电路单元调试过后,并不代表系统整体也能正常运行,所以需要进行整体电路调试。

5.2 调试过程说明

在调试过程中一定要认真仔细,确保调试结果的准确性,进行通电调试前检查。焊接完毕后绝对不能着急接通电源,一定要认真检查接线有没有多接或者少接以及短路等情况,认真检查各个传感器模块和GSM模块以及其他电路接口是否正确,检查情况如下图5-1所示。

图5-1 系统通电前检查图

常情况,如漏电,元器件烧坏等,观察情况如图5-2所示。

接下来进行通电观察,在检查线路正常后通电,然后注意观察是否有没有异

第 17 页 共 49 页

西北民族大学本科生毕业设计

图5-2 系统通电观察图

通电观察确认电路没有异常后,接下来就可以分别对各个电路单元进行功能调试,具体调试情况如下:

(1)对人体红外传传感器进行调试,当把手放在人体红外传感器的前方7米之内,LCD液晶显示屏上会显示有人,同时系统发出警报,调试结果如图5-3所示。

5-3 人体红外传感器调试图

(2)对紧急呼救按键进行调试,当紧急呼救按键按下,LCD液晶显示屏上会显示呼救,同时系统发出警报,调试情况如图5-4所示。

图 5-4 紧急呼救按键的调试图

第 18 页 共 49 页

西北民族大学本科生毕业设计

(3)对烟雾传感器进行调试,当打火机对烟雾传感器点火或者放气时,LCD液晶显示屏会显示火灾,同时系统发出警报。调试结果如图5-5所示。

图 5-5烟雾传感器的调试图

(4)对温度传感器进行调试,用打火机对温度传感器点火,当温度上升至50°C以上,系统会发出警报,调试结果如图5-6所示。

图 5-6温度传感器的调试图

在调试的过程中,GSM模块正常发短信,蜂鸣器也正常发出报警声,最后也对整个系统联机调试,结果跟设计预期结果一样。虽然顺利完成了调试,但是在调试过程中也出现了一些问题,经过认真排查后,对硬件和软件进行了改善之后才得以最终完成调试。

5.3 调试遇到的问题和解决方法

在初始调试紧急呼救按键时,烧完程序后,按下紧急呼救按键蜂鸣器并有没有报警。因为之前的传感器模块调试时蜂鸣器都是能够正常发出报警声的,所以第一反应是紧急呼救按键电路设计不太合适,所以对紧急呼救按键电路进行测试排查,但是最后都没查出哪出了问题。为了确定问题出在硬件还是软件上,于是

第 19 页 共 49 页

西北民族大学本科生毕业设计

用能够正常发短信的SIM卡换下SIM900A里面的欠费调试SIM卡。经过系统初始化后再次按下紧急呼救按键,发现蜂鸣器依旧没有报警,但是发现短信能够正常发送,可以判断按键电路是正常的,问题肯定出在软件。于是开始对程序进行检查,经过几次认真检查后,终于发现原因,原来是紧急呼救按键部分没有给蜂鸣器赋值(低电平)。加上蜂鸣器赋值语句后,再次烧录程序,再次调试时按键紧急呼救按键,蜂鸣器终于发出了蜂鸣声。

还有一次是调试GSM通信模块时,因为需要发出的短信尽可能快被住户看到,所以设计GSM模块对三位用户发出报警短信。一开始烧入程序,在GSM模块里插入可正常发短信的SIM卡,但是怎么测试都是LCD显示,蜂鸣器也报警,可就是收不到GSM发出的短信。虽然可以判断硬件电路肯定没有问题,但是一次又一次的对程序进行检查后还是没有发现有任何问题。眼看GSM模块设计调试无法完成的时候,突然想起来以前在单片机贴吧里加了一个很热心的单片机爱好者,于是把出现的问题向他求助,正是他的一句:可能是延迟时间没设置对,帮助我完成了GSM模块的设计调试。开始是设定给三位住户发短信延迟3S发送一位,于是尝试性的把延时时间改成5S,可是还是一样收不到短信,但是当把延时时间从5S变成10S,奇迹发生了,设置的三个号码接连收到了报警短信。

5.4 本章小结

本章主要对调试以及调试中遇到的问题和解决方法进行了阐述。首先对系统调试的方案和简单的安排进行了说明,对每个功能模块调试的过程进行了说明和以图片形式进行对调试的结果进行直观的验证,总结了调试过程中所遇到的问题和解决方法。

第 20 页 共 49 页

西北民族大学本科生毕业设计

第6章 系统的测试结果及分析

6.1 测试方案

根据系统的设计要求,合理设置家庭智能紧急呼救系统环境,然后对各个元器件进行多次模拟测试,记录模拟测试结果,对模拟测试的性能参数及误差进行统计。认真观察和分析系统中出现的问题,并想办法进行改善。实物如图6-1所示

图6-1 系统实物图

6.2 测试数据

接通电源,按下电源开关,等待GSM初始化,等到LCD液晶屏显示:GSM Init OK 后,说明GSM初始化完成,就可以对各个模块进行测试。

(1)对烟雾传感器器进行测试,用打火机对着烟雾传感器放气或者点火,可以看见LCD液晶显示屏上显示烟雾传感器报警并且蜂鸣器发出报警声而且GSM通信模块向三位住户发短信,结果如表6-1所示。

第 21 页 共 49 页

西北民族大学本科生毕业设计

表6-1 烟雾传感器测试结果 测试类型 测试次数 是否报警 是否误报或者 漏报 打火机放气 5 是 否 打火机点火

(2) 对人体红外传感器进行测试,由于红外传感器一般监测范围是7米左右,所以我们针对1-7米范围进行测试,结果如表6-2所示。

表6-2 人体红外传感器测试结果 测试距离(米) 测试次数(次) 检测到有人比是否有漏报误例 报情况 1 5 100% 否 2 3 4 5 6 7

(3)对温度传感器进行测试,由于夏季气温有时已经达到40°C,所以在系统设计时把温度传感器的监测温度上限设置为50°C,当温度传感器监测到室内温度超过50°C时,蜂鸣器会发出警报声,同时GSM通讯模块发出报警短信,测试结果如下表6-3所示。

表6-3 温度传感器测试结果 测试温度 是否报警 (°C) 15.3 26.5 37.8 44.3 50.8 否 否 否 否 是 5 5 5 5 5 5 100% 100% 100% 100% 100% 100% 否 否 否 否 否 否 5 是 否 测试次数 第一次 第二次 第三次 第四次 第五次

是否误报或者漏报 否 否 否 否 否 (4)对紧急呼救按键的测试,现在大多人都为上班族,在家中一般是留在家里的来人或者小孩。当老人或者孩子独自留在家中时,一旦发生突发状况,轻

第 22 页 共 49 页

西北民族大学本科生毕业设计

则受伤,重则失去性命。所以设置一个紧急呼救按键是非常有必要的,当出现紧急情况时马上按下紧急按键,蜂鸣器马上回发出警报,而且GSM通讯模块会发出求救短信。紧急呼救按键的测试结果如下表6-4所示。

表6-4 紧急呼救按键测试结果 测试次数 按键按下或者是否报警 是否误报或者(次) 弹上 漏报 5 按下 是 否 5 弹上 否 否 6.3 测试结果分析

根据测试数据看出,本次设计的家庭紧急呼救系统能够有效的对家庭出现的各种异常状况准确的发出警报,并且能够及时的通过GSM模块向住户发送报警短信,体现出本系统的可靠性和有效性。

6.4 本章小结

本章主要对系统的测试结果及分析进行论述。介绍了测试的方案,通过图片

介绍了各个元器件在设计实物中的位置,通过表格的形式说明了测试结果和直观显示了测试数据,对测试结果进行分析。

第 23 页 共 49 页

西北民族大学本科生毕业设计

第7章 总结与展望

7.1 总结

通过坚持不懈的努力,毕业设计和设计报告都已经完成。回头想想开始选题时候的担心,现在或许有些能理解。毕业设计需要利用到各种软件和硬件辅助完成,单靠以前学习的知识远远不够,但是越努力越幸运,通过大量的书籍的查阅学习,终于完成选题,元器件选择和购买,原理图的绘制,焊接,调试,写设计报告。通过本次设计学习,大大提高了自己的动手能力和独立思考能力以及问题的分析和解决能力,而且还积累了大量的专业知识。

本次设计是用AT89S52单片机控制的家庭智能紧急呼救的系统,方案的设计基本正确,各个功能模块的效果也基本实现。本设计利用了烟雾传感器、温度传感器、人体红外传感器,紧急呼救按键等模块,一定程度上提高的家庭住宅的安全性和智能化。

虽然完成了设计,但是由于专业知识积累不够和设计经验的不足,本次设计也存在不够完善的地方,恳请老师们谅解。

7.2 展望

本设计虽然基本达到了家庭智能紧急呼救系统的基本功能,但是只是作为一种设计的尝试,要是实用起来还是有很多不足的,距离产品化更是还有很大的差距。但是本设计能表达未来家庭智能紧急呼救系统的雏形,随着科学技术的飞速发展,家庭智能紧急呼救系统这种家庭安防系统肯定会得到应用并且普遍化,大众化,最终会应用在每家每户,成为家庭的真正的“卫士”。

本设计主要是针对系统的全面化和人性化,利用各种传感器模块,紧急呼救按键以及GSM通信模块。但是随着科技的发展和人们生活水平的提高,家庭智能紧急呼救系统肯定需要不断升级完善,原有的监测设备不再能满足人们对家庭安防系统的期待。现在市场上有的门禁系统,监控系统,甚至已经有远端医疗看护系统的推出,这些系统最终将会和家庭智能紧急呼救系统整合在一起,真正的形成一套完整的智能化家庭安防系统,全方位保障住户的安全。

第 24 页 共 49 页

西北民族大学本科生毕业设计

致 谢

第 25 页 共 49 页

西北民族大学本科生毕业设计

参考文献

[1] 赵文博,刘文涛.单片机语言C51程序设计.人民邮电出版社,2005:33-34 [2] 王秋爽.单片机开发基础与经典设计实例[M].北京:机械工业出版社,2008:

94-96

[3] 贾石峰.传感器原理与传感器技术[M].北京:机械工业出版社,2009:20-24 [4] 谭浩强.C程序设计[M].第3版.北京:清华大学出版社,2005:66-67 [5] 阎石.数字电子技术基础[M].第5版.北京:高等教育出版社,2006:101-103 [6] 童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,第4版,

2006:41-43

[7] 王东峰等.单片机C语言应用100例[M].北京:电子工业出版社,2009:

102-104

[8] 陈海宴.51单片机原理及应用[M].北京:北京航空航天大学出版社,2010:

50-53

[9] 胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,1996:66-47 [10] 高稚允,高岳.光电检测技术[M].北京:国防工业出版社.1983:107-110 [11] 钟富昭等.8051单片机典型模块设计与应用[M].北京:人民邮电出版

社,2007:131-135

[12] 李平等.单片机入门与开发[M].北京:机械工业出版社,2008:19-22 [13] 梁森,王侃夫,黄杭美.自动检测与转换技术[M].北京:机械工业出版

社,2007:111-113

[14] 杨清梅,孙建民.传感器与测试技术[M].哈尔滨:哈尔滨工程大学出版

社,2005:106-108

[15] 康华光.模拟电子技术基础[M].北京:高等教育出版社,2006:55-57 [16] 高吉祥.全国大学生电子设计竞赛培训系列教程[M].北京:电子工业出版

社,2007:104-105

[17] 李增国.传感器与检测技术[M].北京:北京航空航天大学出版,2009:

90-93

[18] 秦龙.MSP430单片机常用模块与综合系统实例精讲[M].北京:电子工业出

版社,2007:71-73

[19] 宋文绪,杨 帆.自动检测技术[M].北京:高等教育出版社,2000:39-41 [20] Yeager Brent.How to troubleshoot your electronic scale[J]. Powder

and Bulk Engineering,1995:23-25

第 26 页 共 49 页

西北民族大学本科生毕业设计

附 录 1

系统原理图:

第 27 页 共 49 页

西北民族大学本科生毕业设计

附 录 2

主程序代码 /*

温度,红外,烟雾,紧急呼救 GSM发送报警 */

#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \

/* BIT位定义 */

#define BIT0 (1 << 0) #define BIT1 (1 << 1) #define BIT2 (1 << 2) #define BIT3 (1 << 3) #define BIT4 (1 << 4)

sbit HW = P2^0; sbit SMOKE = P2^6; sbit BEEP = P2^5; unsigned char SosFlag = 0;

// 红外接口 // 烟雾接口 // 蜂鸣接口 // 紧急呼叫变量

// 为1时系统报警开

// BIT0,1,2,3分别代表不同的报警位 // 0未发送报警短信,1发送过了 // 系统当前温度值 // 报警温度值

unsigned char AdminFlag = 0; unsigned char AlarmFlag = 0; unsigned char GSM_Flag = 0; unsigned int tvalue = 0; unsigned int AlarmTemp = 500; struct timer LCD_Timer;

struct timer DS18B20_Timer; struct timer GSMTimer;

第 28 页 共 49 页

西北民族大学本科生毕业设计

/* 目标电话号码 18219918819(吴) */

unsigned char *pPhoneNum1 \/* 目标电话号码 18689469075 */ //unsigned char *pPhoneNum1 \/* 目标电话号码 18893720874 */ unsigned char *pPhoneNum2 \/* 目标电话号码 18893720924 */ unsigned char *pPhoneNum3 \/* 短信内容: 家里火灾报警请注意 */ unsigned char *pMessage1 \/* 短信内容: 家里防盗报警请注意 */ unsigned char *pMessage2 \/* 短信内容: 家里温度报警请注意 */ unsigned char *pMessage3 \/* 短信内容: 亲人紧急呼求请注意 */ unsigned char *pMessage4 \/*

MS级延时函数 */

void delay_ms(unsigned int ms) {

unsigned int i; while(ms --) {

for(i=0; i < 1100; i++); }

} /*

第 29 页 共 49 页

=

=

=

=

=

=

=

=

西北民族大学本科生毕业设计

蜂鸣器滴滴

*/

void Beep() {

// BEEP = !BEEP; // delay_ms(100); BEEP = 0; } /*

在(x,y)位置上显示温度 */

void LCD_Display_Temp() {

unsigned char buffer[9] = {0}; tvalue = DS18B20_ReadTemp();

if( tvalue/1000 != 0 ){

buffer[0] = tvalue/100 + 0X30; }

else{

buffer[0] = ' '; }

buffer[1] = tvalue00/100 + 0X30; buffer[2] = tvalue0/10 + 0X30; buffer[3] = '.';

buffer[4] = tvalue + 0X30; strcat(buffer,\℃\

LCD_ShowString_GB2312(1,48,buffer); }

/*

发送报警短信,1,2,3,4分别表示不同的报警情况 */

void Send_Alarm_Message(char mode) {

if(GSM_Flag == 0) {

第 30 页 共 49 页

西北民族大学本科生毕业设计

if(mode == 4) // 紧急呼叫报警

{

GSM_SendPduMessage(pPhoneNum1,pMessage4); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum2,pMessage4); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum3,pMessage4); delay_ms(10000); }

if(mode == 3) // 温度报警

{

GSM_SendPduMessage(pPhoneNum1,pMessage3); delay_ms(10000); }

GSM_SendPduMessage(pPhoneNum2,pMessage3); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum3,pMessage3); delay_ms(10000);

if(mode == 2) // 防盗报警 {

GSM_SendPduMessage(pPhoneNum1,pMessage2); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum2,pMessage2); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum3,pMessage2); delay_ms(10000); }

if(mode == 1) // 火灾报警 {

GSM_SendPduMessage(pPhoneNum1,pMessage1); delay_ms(10000);

GSM_SendPduMessage(pPhoneNum2,pMessage1);

delay_ms(10000);

GSM_SendPduMessage(pPhoneNum3,pMessage1); delay_ms(10000);

第 31 页 共 49 页

西北民族大学本科生毕业设计

}

GSM_Flag = 1;

timer_restart(&GSMTimer); } }

/**************************************** 主函数

/****************************************/ void main(void) {

char key_value = 0;

timer_set(&LCD_Timer, CLOCK_SECOND/5); timer_set(&DS18B20_Timer, CLOCK_SECOND/2);

timer_set(&GSMTimer, CLOCK_SECOND*10);

DS18B20_ReadTemp(); // 跳过温度不稳定的状态 DS18B20_ReadTemp(); DS18B20_ReadTemp(); LCD_Init();

LCD_Clear();

LCD_ShowString_GB2312(1,32,\初始化\ UART_Init();

GSM_Init(TEXT); // 初始化GSM为TEXT模式 LCD_ShowString_GB2312(1,1,\温度:\LCD_ShowString_GB2312(3,1,\红外:\LCD_ShowString_GB2312(5,1,\烟雾:\LCD_ShowString_GB2312(7,1,\紧急:\Timer0_Init();

if(AdminFlag)LCD_ShowString_GB2312(7,112,\开\

else LCD_ShowString_GB2312(7,112,\关\ while(1) {

key_value = KEY_Get(); switch(key_value) {

case 1: {

第 32 页 共 49 页

西北民族大学本科生毕业设计

AdminFlag = ++AdminFlag % 2;

if(AdminFlag)LCD_ShowString_GB2312(7,112,\开\ else LCD_ShowString_GB2312(7,112,\关\ break; }

case 2: {

SosFlag = ++SosFlag % 2;

if(SosFlag)LCD_ShowString_GB2312(7,48,\呼救\ else LCD_ShowString_GB2312(7,48,\监测\ break; }

default: break;

}

// GSM发送短信定时器,10S发一次 if(timer_expired(&GSMTimer)) {

if(GSM_Flag)GSM_Flag = 0;

timer_reset(&GSMTimer); }

// 读取温度

if( timer_expired(&DS18B20_Timer) ) {

LCD_Display_Temp(); if(tvalue > AlarmTemp){ AlarmFlag |= BIT2; }

// 温度报警

else{

AlarmFlag &= ~BIT2; }

if(HW){

// 红外报警

AlarmFlag |= BIT0;

LCD_ShowString_GB2312(3,48,\有人\}

第 33 页 共 49 页

西北民族大学本科生毕业设计

else{

AlarmFlag &= ~BIT0;

LCD_ShowString_GB2312(3,48,\监测\}

if(SMOKE == 0){ // 烟雾报警 AlarmFlag |= BIT1;

LCD_ShowString_GB2312(5,48,\火灾\} else{

AlarmFlag &= ~BIT1;

LCD_ShowString_GB2312(5,48,\监测\}

timer_reset(&DS18B20_Timer); }

if(AdminFlag) {

if(AlarmFlag)Beep();

if(SosFlag){

Send_Alarm_Message(4); }

if(AlarmFlag & BIT0){ BEEP = 0;

// 发送报警短信

Send_Alarm_Message(2); }

else if(AlarmFlag & BIT1){ BEEP = 0;

// 发送报警短信

Send_Alarm_Message(1); }

else if(AlarmFlag & BIT2) {

BEEP = 0;

// 红外报警

// 烟雾报警

// 温度报警

第 34 页 共 49 页

西北民族大学本科生毕业设计

Send_Alarm_Message(3);

} else {

BEEP = 1; } } else {

BEEP = 1; }

} }

GSM模块驱动程序

硬件平台: STC12C5A 11.0592MHz 波特率9600 只需调用三个函数即可轻松收发短信 1. GSM_Init();

2. GSM_SendMessage(unsigned char *PhoneNum, unsigned char *Message);

3. GSM_RecvMessage(unsigned char *MessageBuf,unsigned int Length); */

#include #include #include #include \#include \#include \ /*

函数功能:发送中文短信

入口参数:PhoneNum —— 指向电号话号字符串((unicode 编码)) Message —— 指向消息内容的指针((unicode 编码)) 出口参数:无

返回值: 0 —— 发送 1 —— 发送失败 */

unsigned char GSM_SendPduMessage(unsigned char *PhoneNum,unsigned char *Message)

第 35 页 共 49 页

西北民族大学本科生毕业设计

{

unsigned char PhoneNum_Buffer[128] = {0}; AT_DataInit();

strcpy(PhoneNum_Buffer,\ // 发送AT+CMGS=\ strcat(PhoneNum_Buffer,PhoneNum); strcat(PhoneNum_Buffer,\

UART_SendStr(PhoneNum_Buffer); // 发送目标电话号码 if( AT_SmsReady() ) // 发送短信就绪 {

UART_SendStr(Message); // 发送短信内容 UART_SendByte(CTRL_Z); // 发送0X1A UART_SendByte(CTRL_Z); // 发送0X1A return 0; }

return 1; // 短信发送失败 } /*

LCD12864驱动 */

#include #include

sbit LCD_CS =P0^0; //接口定义:LCD_CS就是LCD的CS

sbit LCD_RESET =P0^1; //接口定义:LCD_RESET就是LCD的RESET

sbit LCD_RS =P0^2; //接口定义:LCD_RS就是LCD的RS,也叫“CD” sbit LCD_SDA =P0^3; //接口定义:LCD_SDA就是LCD的SDA sbit LCD_CLK =P0^4; //接口定义:LCD_CLK就是LCD的SCLK

sbit Rom_CS =P0^5; //字库IC接口定义Rom_CS就是字库IC的CS# sbit Rom_SCK =P0^6; //字库IC接口定义:Rom_SCK就是字库IC的SCK sbit Rom_OUT =P0^7; //字库IC接口定义:Rom_OUT就是字库IC的SO sbit Rom_IN =P2^7; //字库IC接口定义:Rom_IN就是字库IC的SI

//延时

void delayms(unsigned int n_ms) {

int j,k;

for(j=0;j

//短延时

第 36 页 共 49 页

西北民族大学本科生毕业设计

void delay_us(int n_us) {

int j,k;

for(j=0;j

//显示128x64点阵图像

void LCD_ShowPicture(unsigned char *dp) {

unsigned char i,j; for(j = 0; j < 8;j ++) {

LCD_WriteAddress(j+1,1); for (i = 0; i < 128; i ++) {

LCD_WriteData(*dp); //写数据到LCD,每写完一个8位的数据后列地址自动加1 dp ++; } } }

//显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标 void LCD_Show16x16(unsigned char page,unsigned char column,unsigned char *dp) {

unsigned char i,j;

for(j = 0; j < 2; j ++) {

LCD_WriteAddress(page+j,column); for (i = 0; i < 16; i ++) {

LCD_WriteData(*dp); //写数据到LCD,每写完一个8位的数据后列地址自动加1 dp ++; } } }

//显示8x16点阵图像、ASCII, 或8x16点阵的自造字符、其他图标

void LCD_Show8x16(unsigned char page,unsigned char column,unsigned char *dp)

第 37 页 共 49 页

西北民族大学本科生毕业设计

{

unsigned char i,j;

for(j = 0; j < 2; j ++) {

LCD_WriteAddress(page+j,column); for(i=0;i<8;i++) {

LCD_WriteData(*dp); //写数据到LCD,每写完一个8位的数据后列地址自动加1 dp++; } } }

//显示5X8点阵图像、ASCII, 或5x8点阵的自造字符、其他图标

void LCD_Show5x8(unsigned char page,unsigned char column,unsigned char *dp) {

unsigned char i;

LCD_WriteAddress(page,column); for (i=0;i<6;i++) {

LCD_WriteData(*dp); dp++; } } /*

STC89C52RC UART驱动模块

注: 外部晶振 11.0592MHz 9600bps */

#include \#include #include \ /*

功能描述: 串口初始化 函数参数: 无 返回说明: 无 */

第 38 页 共 49 页

西北民族大学本科生毕业设计

void UART_Init() {

PCON &= 0x7F; SCON = 0x50; AUXR &= 0xBF; AUXR &= 0xFE;

SCON = 0x50; // 8位数据可变波特率 TMOD &= 0x0F;

TMOD |= 0x20; // 定时器1,8位自动重装模式 TL1 = 0xFD; // 9600bps TH1 = 0xFD; ET1 = 0; TI = 0;

PS = 1; // 串口中断优先级最高 REN = 1; // 使能接收 ES = 1; // 打开串口中断 EA = 1; // 打开总中断

TR1 = 1; } /*

功能描述: 串口发送字符串

函数参数: s —— 指向字符串的指针(字符串以'\\0'结尾) 返回说明: 无

注:如果在字符串结尾有'\\n',则会发送一个回车换行 */

void UART_SendStr(char *s) {

while( *s != '\\0') {

if(*s == '\\n') {

UART_SendEnter(); } else {

UART_SendByte( *s ); } s ++; } } /*

第 39 页 共 49 页

西北民族大学本科生毕业设计

功能描述: 串口中断服务程序 函数参数: 返回说明: */

extern void AT_RecvProcess(unsigned char byte); unsigned char tmp;

void UART_IRQHander() interrupt 4 {

EA = 0; // 关中断防止接收数据过程被打断

if(RI) {

RI = 0;

tmp = SBUF;

AT_RecvProcess(tmp); // 接收字符传入AT指令处理函数 }

EA = 1; // 开中断 } /*

STC89C52RC Timer0驱动 */

#include \#include \

#define ENTER_TIMER_CRITICAL ET0 = 0 #define EXIT_TIMER_CRITICAL ET0 = 1

/* 模块内部维护全局变量 */

unsigned long Timer0_Count = 0; // 系统时基

extern void KEY_Process();

/**************************************** // 定时器0初始化

/****************************************/ void Timer0_Init(void) {

AUXR &= 0x7F; TMOD &= 0xF0;

第 40 页 共 49 页

西北民族大学本科生毕业设计

TMOD |= 0x01; TL0 = (65535 - 20000)%6; TH0 = (65535 - 20000)/256;

ET0 = 1; // 开定时器0中断 EA = 1; // 开总断 TR0 = 1; } /*

按键模块

状态机方式,支持单击和连按 */

#include \#include \

#define ENTER_TIMER_CRITICAL ET0 = 0 #define EXIT_TIMER_CRITICAL ET0 = 1

// 外部定时器计数值

extern unsigned long Timer0_Count;

// 独立按键引脚定义 sbit KEY1 = P1^6; sbit KEY2 = P1^7;

typedef enum{ // 定义按键的状态 KEY_UP = 0, // 按键松开状态 KEY_DOWN, // 按键按下状态

KEY_DOWN_OK // 按键按下处理完成状态(检测连击) }KEY_STATE;

KEY_STATE Key_State = KEY_UP;

KEY_EVENT Key_Event; // 按键事件 /*

读取按键值 */

第 41 页 共 49 页

西北民族大学本科生毕业设计

char KEY_Get() {

unsigned char key_value ; ENTER_TIMER_CRITICAL;

key_value = Key_Event.key_value; Key_Event.key_value = -1; EXIT_TIMER_CRITICAL;

return key_value; }

void _key_process() {

// 确实有按键按下

if(KEY1 == 0 || KEY2 == 0 ) {

if(KEY1 == 0)

{

Key_Event.key_value = 1;

Key_Event.key_time = Timer0_Count; }

else if(KEY2 == 0) {

Key_Event.key_value = 2;

Key_Event.key_time = Timer0_Count; } } } /*

按键处理函数,需在定时器中断中调用,内部处理状态机,具有消抖功能. 支持单击和长按. */

void KEY_Process() {

static unsigned int KEY_Press_Time; // 计录按键按下的时间 switch(Key_State) {

case KEY_UP: {

// 有按键按下,则转到下一状态

第 42 页 共 49 页

西北民族大学本科生毕业设计

if(KEY1 == 0 || KEY2 == 0 ) {

Key_State = KEY_DOWN; // 转移状态 }

break; }

case KEY_DOWN: {

_key_process();

KEY_Press_Time = Timer0_Count; // 记录按下的时间

// 按键按下已处理,则转到等待松开的状态 Key_State = KEY_DOWN_OK;

break; }

case KEY_DOWN_OK: {

// 检测按键是否松开

if(KEY1 == 1 && KEY2 == 1 ) {

Key_State = KEY_UP; }

// 大于100个定时器ticks,视为连击

if( (Timer0_Count - KEY_Press_Time) > 100) {

_key_process(); }

break; }

default: break; } }

/*------------------End of File----------------------------*/

第 43 页 共 49 页

西北民族大学本科生毕业设计

第 44 页 共 49 页

本文来源:https://www.bwwdw.com/article/fzna.html

Top