建筑安防报警单片机课程设计Word格式.docx

上传人:b****7 文档编号:21975185 上传时间:2023-02-02 格式:DOCX 页数:16 大小:221.50KB
下载 相关 举报
建筑安防报警单片机课程设计Word格式.docx_第1页
第1页 / 共16页
建筑安防报警单片机课程设计Word格式.docx_第2页
第2页 / 共16页
建筑安防报警单片机课程设计Word格式.docx_第3页
第3页 / 共16页
建筑安防报警单片机课程设计Word格式.docx_第4页
第4页 / 共16页
建筑安防报警单片机课程设计Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

建筑安防报警单片机课程设计Word格式.docx

《建筑安防报警单片机课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《建筑安防报警单片机课程设计Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

建筑安防报警单片机课程设计Word格式.docx

一、设计题目:

简易安防声光报警器

二、设计要求:

自制一个单片机最小系统,包括串口下载、复位电路,采用两路外部中断输入门禁和红外探测两路信号(采用两个小按键模拟),中断信号输入后能将报警信息在四位一体数码管上显示,并输出声光报警信号。

三、元件清单

STC89C54单片机、串口芯片MAX232、无极性电容、极性电容、发光二极管、电阻、小按键、芯片插座、插座、晶振、驱动

四、设计步骤

1)查找相关资料,用protues将本课程设计电路图画出来

2)理清思路,写好程序,并用keil软件将程序编译出来,生成hex文件.

3)将hex文件加载到单片机中,模拟运行,(加载方法:

双击51单片机,选择先前所生成的hex文件,然后运行),若没有达到实验要求,则反复的修改程序,调试,知道出现实验结果.

4)按照自己的仿真实验图,结合老师所给的最小系统图以及其中的引脚,将板子焊好

5)把之前写好的程序(适当的注意单片机的输出口是否一一对应)下到51单片机,然后进行测试,不断的调试,直到出现该有的实验现象和实验结果。

第三章芯片介绍

一,单片机内部介绍

1.单片机的存储器ROM和RAM时严格区分的。

ROM称为程序存储器,只存放程序,固定常数,及数据表格。

RAM则为数据存储器,用作工作区及存放用户数据。

2.采用面向控制的指令系统。

为满足控制需要,单片机有更强的逻辑控

制能力,特别是单片机具有很强的位处理能力.

3.单片机的I/O口通常时多功能的。

由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分.

4.单片机的外部扩展能力很强。

在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。

5.89C51单片机介绍

VCC:

电源。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,

P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH

编程和校验时,P1口作为第八位地址接收。

P2口:

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

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

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

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

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

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

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

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

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

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

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

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

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

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

RST:

复位输入。

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

平时间。

ALE/PROG:

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

的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端

以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用

作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存

储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略

微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

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

EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

二,数码管

1,由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。

LED有共阴极和共阳极两种。

2,二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。

一位显示器由8个发光二极管组成,其中7个发光二极管构字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。

当在某段发光二极管施加一定的正向电压时,该段笔划即亮;

不加电压则暗。

为了保护各段LED不被损坏,需外加限流电阻。

三,晶振

每个单片机系统里都有晶振,全程是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的度更高。

有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。

晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。

如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。

第四章课题分析与整体构思

一.课题分析

(1)警情探测:

在该设计中,需采用两路外部中断输入门禁报警和红外报警,分别采用两个小按键模拟。

其中一个按键模拟门禁报警,对应外部中断0;

另一个按键模拟红外报警,对应外部中断1。

(2)报警设计:

正常状态下,数码管不显示,当发生门禁报警时,系统发出声光报警信息并在数码管显示1;

,当发生红外报警时系统发出声光报警信息并在数码管显示0。

只有由主人按下报警接触按钮或系统复位后,才能解除声光报警并将数码管不显示。

2.整体构思:

(1)程序构思:

在该设计中,需采用两路外部中断输入门禁报警和红外报警,采用单片机C语言编写程序比较易读且相对汇编思路清晰简单。

以下几个子函数必不可少:

LCD的初始化子函数、LCD忙检测子函数、写指令子函数、LCD显示子函数、中断计数器初始化子函数、两个外部中断子函数以及主函数。

(2)硬件构思:

正常状态下,数码管不显示,当发生门禁报警(即按下小按键)时,系统发出声光报警信息(第一个发光二级管亮,蜂鸣器鸣叫)并在四位一体数码管上显示0;

,当发生红外报警时系统发出声光报警信息(第二个发光二级管亮,蜂鸣器鸣叫)并在数码管显示1。

只有按下报警接触按钮或系统复位键后,才能解除声光报警并将数码管熄灭。

第五章程序设计

一、流程图:

首先单片机上电复位,并进行初始化包括寄存器和数码管,当发生报警事件时,单片机驱动声光报警装置并且在数码管上显示相应的报警信息,退出中断时,单片机检测报警解除按钮,当报警解除按钮被按下时单片机关闭声光报警并清除数码管上的报警信息,具体的程序流程如下。

中断函数流程图

主程序流程图

二、程序清单:

#include<

reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[]={0xbf,0xbf,0xbf,0xbf};

ucharcodetable1[]={0x86,0x86,0x86,0x86};

ucharcodetable2[]={0xfe,0xfd,0xfb,0xf7};

uinta,b,c,flag,temp,aa,bb,i=1;

uintz=0;

sbitred=P1^5;

sbitspe=P1^6;

sbityellow=P1^7;

//位定义各个变量与单片机引脚

voiddelay(uintz)//延时程序

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=40;

y>

y--);

}

voidinit()

EA=1;

EX0=1;

//开外部中断0

EX1=1;

TCON=0x55;

TMOD=0x15;

TH0=(65536-1)/256;

TL0=(65536-1)%256;

ET0=1;

ET1=1;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

voidmain()

while

(1)

{

P2=0x0f;

init();

yellow=1;

red=1;

while(flag==1)

{

if(aa==1){aa=0;

flag=0;

for(a=0;

a<

4;

a++)

{

yellow=0;

spe=~spe;

P2=table2[a];

P0=table[a];

delay

(1);

if(a==4)a=0;

while(bb>

=10)

{

yellow=1;

spe=0;

P2=0x0f;

while(bb==20)bb=0;

}

}

}

while(temp==1)

temp=0;

red=0;

P0=table1[a];

red=1;

}

}

}

voidexter0()interrupt0

flag=1;

voidexter1()interrupt2

{

temp=1;

voidtimer0()interrupt1

aa++;

voidtimer1()interrupt3

bb++;

/*if(bb==20)

bb=0;

b++;

}*/

三、程序分析解释:

本程序包括LCD的初始化子函数、LCD忙检测子函数、写指令子函数、LCD显示子函数、中断初始化子函数、两个外部中断子函数以及主函数。

用P0口作为七段数码管的输出,用P1.5、P1.6、P1.7分别作为两路发光二级管以及蜂鸣器的输出,由于蜂鸣器实验室没有,所以我们采用了发光二级管代替。

LCD忙检测子函数中不断检测p0口有无输出即数码管有无显示数据,如果不忙则结束此循环,执行下一个语句;

写指令子函数中先判断是否为RS=0和RW=0,如果满足则可以写入指令;

LCD显示子函数中,当RS=1和RW=0时,可以写入数据,显示在数码管上;

初始化包括中断标志、中断允许、中断优先级定时器控制寄存器等得设定,具体为定时计数器工作方式1,负脉冲触发,EA=1;

ET1=1;

EX1=0;

ET0=1;

EX0=1,除串行口,开所有中断,外部中断为高优先级;

两个外部中断子函数首先将TR1置反,显示清屏,用if,else语句判断两个灯的亮灭情况,并将蜂鸣器值求反。

主函数则是按设计顺寻调用各个子函数,实现其功能。

第六章硬件电路设计

二、单片机最小系统

最小系统是指用最少的元件组成的单片机可以工作的系统

2、七段数码管显示模块

由单片机、四位一体数码管以及上拉电阻组成

3、开关模拟报警器模块

由一个门禁报警开关(中间那个)一个红外报警开关(右边那个)和一个解除报警开关(左边这个)三个开关组成

4、声光报警模块

由门禁报警控制的发光二极管(D2)以及红外报警控制的发光二级管(D1)以及相当于蜂鸣器的发光二级管(D3)组成

5、整体硬件电路

第七章Proteus仿真

1、keil与protues的使用:

ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SP

I调试器、键盘和LCD系统仿真的功能;

有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;

同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

本课程设计在做完方案设计和程序编辑后后就是利用Proteus进行硬件仿真,先把需要的元器件从元件库里面调出来,再按照接线原理图把线连接好,检查线路准确无误后再把用KELL生成的HEX程序文件导入单片机里,一切就绪后开始进行联调,若仿真结果与设计的不同,则先找有无硬件设置错误,再检查程序,不断检查,直至仿真成功。

仿真联调过程如下:

1、KeilC51v7.50软件和Proteus7.0SP软件,分别进行安装。

2、把Proteus安装目录下VDM51.dll(C:

\ProgramFiles\LabcenterElectronics\Proteus6

Professional\MODELS)文件复制到Keil安装目录的\C51\BIN目录中。

3、编辑C51里tools.ini文件,加入TDRV1=BIN\VDM51.DLL("

PROTEUSVSMMONITOR51DRIVER"

4、Keil里设置:

project-->

optionsforproject-->

debugtab

5、选中useProteusVSMmonitor51

6、载入Proteus文件

7、KeilC与Proteus连接仿真调试

单击仿真运行开始按钮,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。

在LED显示器上,循环显示1-4。

8、若联调失败,则返回重新检查再进行调试。

二、报警操作及现象解释:

首先数码管没有点亮,此时按下门禁报警按钮第一个红色发光二级管(D2)闪烁,代表蜂鸣器的中间那个红色发光二级管(D3)一直亮着,四位一体数码管显示“0”,按下解除报警按钮或者复位按钮后,上述现象消失;

按下红外报警按钮第三个红色发光二级管(D1)闪烁发光,代表蜂鸣器的中间那个红色发光二级管(D3)一直亮着,四位一体数码管显示“1”,按下解除报警按钮或者复位按钮后,上述现象消失

第八章硬件制作及调试

1、硬件制作步骤

1、领取元器件,检查元器件是否有损坏,缺失,因本次大家的器材都一样,所以省去不少麻烦。

2、仔细查看自己已经准备好的电路图以及实验室所提供的板子,器件是否符合自己的要求,并且根据板子大小以及电路图在心里布局,做到心中有数,这样在焊接过程中才不会乱,保证有条理的焊接各个焊点,比如如果两个器件本是不应连在一起的,由于实验室板子是三个孔为一组,如果你将两个器件焊接在两边的孔里,就会出现错误,要知道焊接不允许与你设计的电路图有任何出入,既是一个焊点也足以让你查上半天的错,所以必须小心。

3、焊接好后留出两根导线,分别为电源线和地线,方便连接在信号发生器上。

至此焊接完成,这时就需要利用stc软件将已经生成的HEX文件烧到自己的芯片中去。

4、最后将各个芯片插到合适的位置,接通电源和地线,看看是否能出现如同protues仿真的结果,如果不能,则继续调试检查自己的电路板。

二、硬件调试

硬件调试中最容易出现的问题是数码管不显示,由于本次实验提供的是共阴极四位一体数码管,如果位选全都不接,则默认显示第一个管子。

如果你用P0口作为数码管的段选,则需要连接上拉电阻,否则数码管不显示或者显示很微弱。

还有一个出现的问题,由于实验室提供的板子上面有一条线连在了一起,便将低电平与高电平连在一起,因此需要将此线断开。

三.实物图

四.程序调试过程硬件:

焊接四脚点触开关时,由于对器件不熟悉而将门禁报警电路中的开关剩余的两个脚接到了复位电路中,造成复位电路失效。

后经检查发现并排除问题。

时钟电路内由于没有找到30pF的电容,最终用了24pF的代替。

第一次领到的器材中没有包括蜂鸣器,所以用一个绿色的发光二极管代替了,所以在报警时的真实情况是两个发光二极管同时闪烁。

数码管中间区分0与8的发光二极管不亮,仔细排查后发现数码管是坏的。

因不影响结果,没有更换好的。

板面的布局上虽然没有出问题,但是都挤在一起,不美观,有待改进。

程序:

由于对C语言比较熟悉,所以在程序编写上选择使用C语言。

但是单片机C语言与我所学过的C语言又有些许差异,比如文件名不同,P0.0口要写成P0^1这种形式等。

在编写程序时参考学习了郭天祥的51单片机C语言教程上面的例程,从点亮P0.0口开始,最终将程序编出后下载到已完成的同学的板子上检测,无误。

第九章总结

单片机是自动化专业非常重要的专业课,学习的时候还算用心。

但是当真正要做一样东西时,才发现自己学的很糊涂。

拿到题目后发现很多东西都不记得了,只能翻书温习。

我是先做的Proteus仿真,从最小系统开始做。

单片机最小系统是指用最少的元件组成的单片机可以工作的系统。

应该包括:

单片机、晶振电路、复位电路等。

由于之前没有这类概念,因此查了很多资料才开始有所理解,并开始动手焊接板子。

而在参数的选择方面,有很多参数都是经典的参数,但我也要求自己认真去分析了一下为什么要这么选择。

有些是因为单片机内部要求,有些是用于上拉电阻,还有些则要通过模电中的相关知识进行计算。

这样一点一点对照着书本做出来的。

程序真的是写的比较顺利,因为本身难度也不是很大,而且有一点C语言的功底,是一次就成功的。

焊接电路时由于板子是狭长形的,一开始不知道怎么摆放器件。

谨慎起见,我先照着仿真图把几乎所有的器件放上去,也预想好了需要搭线的地方。

本来以为可以一次成功,但是由于对器件不熟悉和粗心,把门禁电路中的开关的另一对引脚接到了复位电路中,导致复位电路失效了。

排除完这个错误后,其他都正常。

这个过程中,先是检查焊接有点问题,再到程序有点小问题,最后是焊接还有点问题,一直到交成品的时候,又出现了单片机和数码管的问题,真的是一个纠结又很漫长的过程,在这个过程中我收获了很多,不管事自己可以处理的事情还是要别人帮忙处理的事情,我都学到了很多。

其实总言之,遇到的问题基本是属于焊接造成的问题和硬件本身的质量问题。

解决问题确是各方面的,自己要全面的检查,一遍又一遍,所以在这个过程中我学到了更多。

最终总结问题,感觉都是那么简单,但是在实际的过程中我们为什么又不能避免了,我想以后这是我该重点解决的方向。

有了这次的经验,下次再做类似的就可以吸取教训。

还有一点,我用完万用表后习惯性不关,很浪费电,同学指出后,我纠正了这个问题。

每一次的课程设计都会碰到或者或那的问题,也会从课程设计中学到不少的东西。

这次的课程设计也不例外,这其中遇到的困难很多,但我也学到了很多,一分耕耘一分收获!

今后,我更加努力的学习,学好自己的专业知识以充实自己,多锻炼动手能力,来适应日新月异的现代社会

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

当前位置:首页 > 高等教育 > 农学

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

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