家庭安防系统课程设计Word文档格式.docx

上传人:b****2 文档编号:1152508 上传时间:2023-04-30 格式:DOCX 页数:33 大小:861.56KB
下载 相关 举报
家庭安防系统课程设计Word文档格式.docx_第1页
第1页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第2页
第2页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第3页
第3页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第4页
第4页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第5页
第5页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第6页
第6页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第7页
第7页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第8页
第8页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第9页
第9页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第10页
第10页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第11页
第11页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第12页
第12页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第13页
第13页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第14页
第14页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第15页
第15页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第16页
第16页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第17页
第17页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第18页
第18页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第19页
第19页 / 共33页
家庭安防系统课程设计Word文档格式.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

家庭安防系统课程设计Word文档格式.docx

《家庭安防系统课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《家庭安防系统课程设计Word文档格式.docx(33页珍藏版)》请在冰点文库上搜索。

家庭安防系统课程设计Word文档格式.docx

3.画出系统功能实现流程图。

4.编写控制程序。

、设计报告正文

1.总体设计

1.1开发与运行环境

本设计以C语言为开发语言,在KEILUVISI0N4软件平台上进行C程序的编辑,连接和调试,最终与proteus仿真软件相结合,进行相关的电路仿真及修改,最后利用protel99SE软件进行产品的PCB绘制和设计,最终完成电路的焊接和调试,制作出成品。

1.2硬件功能描述

此报警器可实现通过温度度或红外传感器检测指定位置温度、通过烟雾传感

器检测家庭烟雾浓度,通过触发电子开关、红外传感器等元件检测是否有人从窗户等地方进入,然后进行报警管理,具体如下:

(1)实现对温度和烟雾浓度等级的显示,上电自动显示初始时间“X-YY”,“X”表示烟雾浓度等级,共分五个等级,“丫丫”表示此时的环境温度。

(2)当第一次按下第一个弹性按键时进入设置温度报警下限状态,数码管显示“L-YY”,通过第二个和第三个按键可以进行温度下限的加与减。

(3)当第二次按下第一个弹性按键时进入设置温度报警上限状态,数码管显示“H-YY”,通过第二个和第三个按键可以进行温度上限的加与减。

(4)当第三次按下第一个弹性按键时进入设计烟雾报警等级状态,通过第二个和第三个按键可以进行烟雾浓度报警等级的加与减。

(5)当红外传感器检测到有人通过,或者当环境的温度或烟雾浓度超过设置的数值,蜂鸣器发出声音进行报警。

2.硬件结构

该报警器主要包括单片机、复位电路、按键电路、供电电源、温度检测模块烟雾和红外检测模块等几部分,单片机我们选择的是51系列单片机,便宜且好

实现。

电子钟总体设计如图1所示。

图1电子钟的总体设计

2.1硬件模块描述

(1)数码管显示部分

该报警器显示只需4位,格式为“X-丫丫”,因此需采用4个数码管,采用1个4位一体的共阳极数码管,若使4个数码管正常显示,必须采用数码管的动态扫描方式,即每一时刻只有一个数码管点亮,采用软件延时和人眼的视觉停留效果,使人眼看到的数码管是同时点亮的。

因此需要用8个端口控制数码管的段选,即决定数码管显示什么字符,4个端口控制数码管的位选,即决定该时刻让哪个数码管点亮。

考虑到数码管采用动态扫描方式,即循环扫描数码管的8位,

并将显示字符送入段选段,采取直接用P0口控制数码管的8个段选,为了加强驱动数码管的能力,在数码管的为选段加入三极管。

P2口控制位选。

数码管连

接如图2。

图3按键连接电路

(3)MQ-2烟雾传感器部分

此部分为为烟雾传感器,分为五个等级,当环境的烟雾浓度超过设置的浓度等级,蜂鸣器发出滴的声响,可通过按键关闭或开启,若无手动操作,如烟雾浓度持续超过限度都会报警。

闹钟连接如图4所示。

 

图4闹钟连接电路

(4)测温模块

为使电路最大限度简化,数字温度传感器显然优于模拟温度传感。

在以前使

用的温度传感器中,DS18B20独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,使得其脱颖而出,

加之之前的一些使用经验使得编程容易许多。

故温度传感选DS18B20测温

模块如图5所示

DNG

CQCDV

VC

1

iF

2

3

R23

4.7K

P3.3

DS2

DS1820

图5测温模块电路

C

(5)电源模块

为了焊接电路简单,我们选择使用外接电源直接提供,简单、好实现。

电源

模块如图6所示3.

图6电源模块电路

5)红外传感器模块

红外传感器模块当有人接近时,单片机会检测到高电平,到没人时检测到的是低电平。

1234

3.软件设计

3.1主流程逻辑设计

在主程序中设置定时器定时器0工作在方式一,开始循环扫描个按键的状

态,检测到该按键按下,则执行相应的程序,其中按键一的按下还有标志位,每

次按下标志位都加一,根据标志位的不同可对温度和烟雾的报警上下限调整。

程序流程图7如下图所示。

图7主程序流程图

3.2温度和烟雾设定逻辑设计

时间设定模块的设计要点是按键的去抖处理与“一键多态”的处理。

即只涉及3个键完成了烟雾和温度参数的设定。

软件法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。

“一键多态”即多功能键的实

现思想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。

间设定流程图如图

其中DS18B2啲操作序列如下。

典型的单总线命令序列如下:

第一步:

初始化;

第二步:

ROM命令跟随需要交换的数据;

第三步:

功能命令跟随需要交换的数据;

(每次访问单总线器件,必须严格遵守这个命令序列。

如果出现序列混乱,则单总线器件不会响应主机。

但是这个准则对于搜索ROM命令和报警搜索命令例外。

在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。

1初始化

基于单总线上的所有传输过程,都是以初始化开始的。

初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。

应答脉冲使主机知道总线上有从机设备,且准备就绪,复位和应答脉冲的时间详见单总线信号部分。

2ROM命令

在主机检测到应答脉冲后,就可以发出ROM命令。

每种命令长度为8,主机在发出功能命令之前必须送出合适的ROM命令。

ROM命令的操作流程如图3所示。

ROM命令字如下:

•READRO命令代码]33H0:

如果只有一片DS1820可用此命令读出其序列号,若在线DS1820多于一个,将发生冲突。

•MATCHROW代码]55HC:

多个DS1820在线时,可用此命令匹配一个给定序列号的DS1820此后的命令就针对该DS1820

•SKIPROM命令代码[CCH:

此命令执行后的存储器操作将针对在线的所有DS1820

•SEARCHRDH令代码]F0H]:

用以读出在线的DS1820的序列号。

•ALARMSEAR命令代码]ECH:

当温度值高于TH或低于TL中的数值时,此命令可以读出报警的DS1820

3功能命令

•WRITESCRATCHP命令代码]4EH:

写两个字节的数据到温度寄存器。

•READSCRATCHP命令代码[BEH]:

读取温度寄存器的温度值。

•COPYSCRATCHPAD代码]48H]:

将温度寄存器的数值拷贝到EEROM中,保证温度值不丢失。

•RECALLE命令代码]B8H:

将EERO中的数值拷贝到温度寄存器中。

•READPOWERSUP命令代码]B4H]:

在本命令送到DS1280之后的每一个读数据间隙,指出电源模式:

“0”为寄生电源;

“1”为外部电源。

4DS18B20时序及信号方式

所有的单总线器件要求采用严格的通信协议,以保证数据的完整性。

该协议

定义了几种信号类型:

复位脉冲、应答脉冲、写0、写1、读0和读1。

所有这些信号,除了应答脉冲以外,都由主机发出同步信号。

并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在

前)。

初始化序列:

复位和应答脉冲

单总线上的所有通信都是以初始化序列开始,包括:

主机发出的复位脉冲及

从机的应答脉冲,如图9所示。

当从机发出响应主机的应答脉冲时,即向主机表

从机竝低急线电阻上竝

图9DS18B20复位与应答脉冲

明它处于总线上,且工作准备就绪。

在主机初始化过程,主机通过拉低单总线至少480卩s,以产生(Tx)复位脉冲。

接着,主机释放总线,并进入接收模式(Rx)。

当总线被释放后,5k上拉电阻将单总线拉高。

在单总线器件检测到上升沿后,延时15-60卩s,接着通过拉低总线60-240卩s,以产生应答脉冲。

4.1写时隙

存在两种写时隙:

“写1”和“写0”。

主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。

所有写时隙至少需要60卩s,且在两次独立的写时隙之间至少需要1卩s的恢复时间。

两种写时隙均起始于主机拉低总线(图5所示)。

产生写1时隙的方式:

主机在拉低总线后,接着必须在15卩s之内释放总线,由5k上拉电阻将总线拉至高电平;

而产生写0时隙的方式:

在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60卩s)。

在写时隙起始后15-60卩s期间,单总线器件采样总线电平状态。

如果在此期间采样为高电平,则逻辑1被写入该器件;

如果为0,则写入逻辑0。

4.2读时隙

单总线器件仅在主机发出读时隙时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。

所有读时隙至少需要60卩s,且在两次独立的读时隙之间至少需要1卩s的恢复时间。

每个读时隙都由主机发起,至少拉低总线1卩s(图5所示)。

在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。

若从机发送1,则保持总线为高电平;

若发送0,则拉低总线。

当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。

从机发出的数据在起始时隙之后,保持有效时间15卩s,因而,主机在读时隙期间必须释放总线,并且在时隙起始后的15卩s之

内采样总线状态。

Vpu

1-wiRE.e.^te

GND

3.3AD0832逻辑设计

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

ADC0832与单片机的接口应为4条数据线,分别是CSCLKDODI。

但由于D0端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以D0和DI并联在一根数据线上使用。

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,其功能项见表1。

TABLE6,MUXAciaressing:

ADCO832Single-EndedMUXMode

MUXAddrese

Channel#

SGL/

DIF

ODD/SIGN

O

+

COMisirtterrruHytiecjtoAG1MD

TABLE7.MUXAddressing:

ADCO832DifferentialMUXMode

MUXAddress

ODD/

SIGN

如表1所示,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。

当2位数据为“1”、“1”时,只对CH1进行单通道转换。

当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。

当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。

到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。

从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。

直到第11个脉冲时发出最低位数据DATAQ—个字节的数据输出完成。

也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0

随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。

最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

更详细的时序说明请见表2。

CijKiUi

ADC0832Timing

yi<

ii»

kiiuni4i»

muiiisn

JwmmwmRm

T

CUIhlTtaTH

DlPSELKT[Gl

9FT10

MUISITUIG

*iME

MURKrCAT!

L51RUJCAU

ADC0832程序流程图如图11所示。

图11ADC0832程序流程图

|rnini

4.设计结果

4.1原理图及PCB绘制

123456

利用protel99SE软件进行作品的电路设计和PCB绘制,如图12、图13所

示。

图13多功能电子钟PCB

4.2编程及调试

根据绘制的原理图,以C语言为开发语言,在KEILUVISI0N4软件平台上进行C程序的编辑,连接和调试,最终与proteus仿真软件相结合。

仿真效果如图14所示,程序见附录1。

图14报警器仿真效果

4.3实物作品

焊接电路后,测试成功,实物效果如图15所示。

图15实物效果

三、设计总结

在本次综合课程设计,我主要负责的是软件部分的ADC0832和18B20的程

序。

在写程序的过程中我总结了一下几点需要注意的地方:

1•在写程序之前一定要读懂芯片手册,特别是芯片的初始化,芯片的各个管脚的定义和时序图。

2•程序流程图起了很大的作用,在复杂的程序中帮我们理清了思路,在写程序中让我们少走弯路。

3•在写程序的时候一定要对函数名和各个位定义的名称特别注意,要有规范的写程序的格式,不然对后面检查修改程序造成麻烦。

通过这次课程设计,我也发现了不少问题。

比如,在使用keil软件的时候对

它的编译环境不是很熟,导致总是报错,但是最后还是被我克服了。

总的来说还是有不小的收获。

经过这次的设计,我对AD转换和各个芯片的通信更加熟悉了,对于读芯片的能力又有了提高。

当然这次课程设计虽然经过了我们的努力,但是肯定还是存在这很多不足,希望老师批评指正,我们很乐意接受。

2006.

2006.

2007.

四、参考文献

[1]万福君,潘松峰.单片微机原理系统设计与应用•中国科学技术大学出版社

[2]求是科技.8051系列单片机C程序设计完全手册[M].人民邮电出版社,

[3]张萍.基于数字温度计DSI8B20的温度测量仪的开发[J].自动化仪表,

附录

附录1报警器程序

#include<

AT89X52.h>

#ineludevintrins.h>

#include"

DS18B20.h"

#defineuintunsignedint

#defineucharunsignedchar//宏定义

#defineSETP1_0//定义调整键

#defineDECP1_1//定义减少键

#defineADDP1_2//定义增加键

#defineBEEPP3_4〃定义蜂鸣器

#definehujiaoP1_3

sbitHC=P1A5;

//

sbitADCS=P3A7;

sbitADCLK=卩3人5;

sbitADDI=P3A6;

sbitADDO=P3A6;

bitshanshuo_st;

//闪烁间隔标志

bitbeep_st;

//蜂鸣器间隔标志

bitflag=0;

〃紧急呼叫标志

sbitDIAN=P2A5;

//小数点

uintabc;

ucharx=4;

//计数器

signedcharm;

//温度值全局变量

ucharn;

ucharset_st=0;

//状态标志

signedcharshangxian=30;

//上限报警温度,默认值为30

signedcharxiaxian=5;

//下限报警温度,默认值为5

ucharnongdu=4;

ucharcodeLEDData[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};

/*****延时子程序*****/

voidDelay(uintnum)

{

while(--num);

}

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

voidInitTimer(void)

TMOD=0x1;

TH0=0x4c;

TLO=OxOO;

//50ms(晶振11.0592M)}

/*****定时器0中断服务程序*****/

voidtimerO(void)interrupt1

TL0=0x00;

x++;

/*****

读取温度*****/

voidcheck_wendu(void)

uinta,b,c;

c=ReadTemperature()-5;

//获取温度值并减去DS18B20的温漂误差a=c/100;

II计算得到十位数字

b=c/10-a*10;

II计算得到个位数字

m=c/10;

〃计算得到整数位

n=c-a*100-b*10;

〃计算得到小数位

if(m<

0){m=0;

n=0;

}II设置温度显示上限

if(m>

99){m=99;

n=9;

/*****显示开机初始化等待画面*****/

Disp_init()

P2=0xf7;

〃显示-

P0=Oxbf;

Delay(200);

P0=0xef;

P0=Oxfb;

P0=0xfe;

P0=Oxff;

II关闭显示

I*****显示温度子程序*****/

Disp_Temperature()〃显示温度

P2=LEDData[m%10];

II显示C

Delay(300);

P2=LEDData[mI10];

II显示个位

PO=Oxef;

P2=0xf7;

〃显示十位

P2=LEDData[abc];

〃显示百位

P0=0xff;

I*****显示报警温度子程序*****/

Disp_alarm(ucharbaojing)

P2=0x3c;

//显示C

P0=0xbf;

P2=LEDData[baojing%10];

//显示十位

P2=LEDData[baojing/10];

//显示百位

P0=0xfb;

if(set_st==1)P2=0x61;

elseif(set_st==2)P2=0x3d;

//上限H、下限L标示P0=0xfe;

//关闭显示

Disp_nongdu(ucharbaojing)〃烟雾浓度报警显示

P2=0xff;

P2=LEDData[baojing];

〃显示浓度

voidAlarm()

if((m>

=shangxian&

&

beep_st==1)||(m<

xiaxian&

beep_st==1))BEEP=1;

elseif(abc>

=nongdu&

beep_st==1)BEEP=1;

//elseif(HC==1)BEEP=1;

//

elseBEEP=0;

if(x>

=10){beep_st=~beep_st;

x=0;

voidAlarm1()

if(beep_st==1)BEEP=1;

ucharADC0832(bitmode,bitchannel)//AD转换,返回结果

uchari,dat,ndat;

ADCS=0;

//拉低CS端_nop_();

_nop_();

ADDI=1;

//第1个下降沿为高电平

ADCLK=1;

//拉高CLK端

ADCLK=0;

//拉低CLK端,形成下降沿1

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2