2015毕业设计智能报警器(5)

2019-01-07 19:25

硬件平台及其选择

DS18B20芯片封装结构: DS18B20引脚功能:

GND 电压地 ·DQ 单数据总线 ·VDD 电源电压·NC 空引脚DS18B20的温度测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。

图5 DS18B20温度储存位

RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作【1】。

我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。

3.4 电路设计方案

综上各方案所述,对此次作品的方案选定: 采用AT89C51作为主控制系统; 数字式温度DS18B20传感器; LCD1602作为显示,键盘采用4x4用P3口(系统共设定有15个按钮,确定键占2个)。晶振12MHZ,选定用中断来控制报警声音。利用红色发光二极管作为错误、报警温度过高报警指示灯,用绿色发光二极管作为进入系统指示灯。

第 11 页 (共 77 页)

智能防火防盗系统

4 系统软件的设计与实现

4.1 软件设计思想

由于采用12M,处理速度本来不够快,在一个while里面尽量减少调用实现的次数,如果调用过多,就会倒是系统资源占用严重,系统运行反应慢,比如在温度有所改变的时候,我们可以不必这么准确地更新到十分位,本系统采用当温度改变1°C的时候,才去更新数据(当然也可以精确到0.5°C)。

添加按键声音,虽然对整个系统没多少影响,但是对用户这是一个很好提示效果。在温度或密码报警的时候,将不会”normal”,而会显示”waring”的警号词语,在进入系统后,管理员修改密码作2个输入密码,前后比较2次输入的密码,正确后提示“success”, 错误提示“error”,用户看以此来判断修改密码错误的原因。

还有在输入密码那块,在输入密码那段将LCD1602重新设置一下,使其出现光标闪烁效果,这让人第一眼就知道输入的密码将在哪一块出现。这对程序检错也是很大的帮助。

最后就是如果对返回键的实现,这应该是本系统一处亮点,因为本系统只提供用3次输入机会(当然进入了系统后,错误次数将重新计数),所以返回键尤为重要,对返回键的设置思想,就是重复调用字符串并显示,这无疑对12MHZ的CPU一个打击,但是这是必须要的。在本章的一些函数将配合实现返回键的用法,这里只说总体思想,代码下面有介绍。

4.2 系统软件原理流程图

第 12 页 (共 77 页)

系统软件的设计与实现

DS18B20得到温度ReadFrmDS18B20(),

其中此函数里面包含初始化器件,并得到温度

数据,同时在此第一次检测温度是否达标。 P3端口初始化(用于键盘扫描)

进入while无限循环中

调用报警 错误次数和温度标志 是 声音函数 是否达标

扫描键盘和温度

是 显示新的 温度是否改变1℃ 否 字符串

否 错误次数加1

显示新的 是 否 删除标识 字符串

判断密码 否 是 是 键盘上启用可以 确定键是否 修改密码功能 否 ?

第 13 页 (共 77 页)

main开始 中断初始化(用于报警声音) LCD1602初始化程序Inital_LCD1602() 智能防火防盗系统

4.3 必要的参数说明

sbit DQ=P1^0; //温度使能 sbit SPK=P1^1; sbit RL=P1^2;

//喇叭 //红灯

sbit GL=P1^3; //绿灯

uchar code TempText[2][8]={\

此字符串于WarnSign有关,当WarnSign =1 即在屏幕上提示Warning标志温度过高可能着火了,同时报警声。 uchar ClientCode[7]={%uchar CodeStr[7];

//初始密码

//登陆状态下临时密码

uchar NewCode1[7]; uchar NewCode2[7]; uchar FloatTempt[8];

//新的密码1

//新的密码2 2次新的密码将会对比。

//存放温度的数组;

uchar Int_Tempt,Flot_Tempt; //温度高位,和小数位 uchar ERTimes[3]={'2','1','0'}; //密码错误的次数;

uchar code Message[2][12]={\提示密码修改成功错误提示语 //登陆状态下管理员身份验证提示。

uchar code ASucess[2][16]={\……

uchar EroTimes=0; uchar frq;

//错误的次数 对应着ERTimes[3]; //声音的频率

//声音Stop/Start的标志

//管理员进去之后,管理员标志 //温度太高标志

//修改密码标志,2次修改密码

uchar Voice=1;

uchar AmditKey=0; uchar WarnSign=0; uchar NCSign=0; uchar Size=0;

//CodeStr的大小,有此标志可以使用Back按键功能

uchar NCSize=0,ACSize=0; //NewCode2[7],NewCode2[7]的大小, uchar BackFlag=0; uchar Ensure=0;

//Back按键可以使用标志 //确定键按下的标志

第 14 页 (共 77 页)

系统软件的设计与实现

uchar OverFull=0;

//Back键 此标志来确定是那一种back 6个的情况和未满6的情况; 此段为按下键盘发声数据。 uchar code SONG_TONE[]={255,0}; uchar code SONG_LONG[]={1,0}; uchar EvetInf; ??

键盘扫描变量

4.4 主函数模块

学过C语言的都知道主函数是干什么的,是运行整个系统的入口,在主函数首先初始化各模块,(温度模块、中断初始化、显示模块初始化),然后程序进入while不停调用各种功能模块。

??

uchar flag=0; TMOD = 0x01;

frq = 0x00; TH0 = 0xfe; TL0 = 0xff; TR0 = 1; IE = 0x82;

P1=0xff;

//初始化p1口,全设为1,设为输入

以上关于定时中断,后节将会介绍。

Inital_LCD1602(); ReadFrmDS18B20(); if(Int_Tempt>60)

WarnSign=1;

//初始化LCD1602

//先给初始化掉 得出正确的时间

//当温度达到大于50的时候,WarnSign就会置1启动

//当WarnSign = 1,报警就会随之响起。

//这里面的时候程序执行的时候,只会运行一次,

ScreenMyInfo();

开机显示任意字符串 ,这里为读取时间起到缓冲作用。 SetComLCD1602(0xca); while(1)

第 15 页 (共 77 页)


2015毕业设计智能报警器(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大班幼儿关心同伴教学案例分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: