资源描述:
《断线报警器设计方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、断线报警器设计方案一、功能简介1.报警模块:当只要有导线被剪断(一根及以上),蜂鸣器促响,相应位置的二极管发光,同时继电器动作,所带负载发光二极管点亮。2.解锁模块:当从矩阵键盘键入数字时,数码管显示相对应的数字,当键入复位键时,系统进入解锁状态,此时可以通过矩阵键盘输入密码,当密码输入完毕后,键入确认键,系统开始验证密码是否正确。一旦密码正确,系统则在开启和关闭状态进行切换:(1)若系统正处于报警,通过输入正确的密码,则可使报警停止,同时还可关闭系统对导线是否剪断的检测功能(即当系统报警后将导线重新接上,通过输入密码后,不仅报警停止,
2、同时当再次断开导线,系统不再报警)密码:20100517二、设计原理概述嵌入式系统是嵌入式计算机嵌入到各种设备及应用产品内部的计算机系统,它体积小,结构紧凑,使设备及应用产品智能化。在数字化产品日益普及的今天,从MP3到飞机的自动导航系统,军事、工业、商务、家电、通信、网络产品无不不充斥着嵌入式系统,可以说,它无处不在,无所不在。作为嵌入式系统控制核心的单片机,以体积小、功能全、性价比高等诸多优点而独具特色。本次设计则采用Atmel公司生产的AT89S52单片机,通过软件控制硬件,单片机不断从外设读取数据,其中键盘部分采用4*4矩阵键盘
3、的基本原理,用以输入密码,通过单片机不断从键盘刷新读取数据并进行相关处理,单片机内部数据具体处理方式,请参照以下设计电路程序,这里就不加论述。三、元件清单:1.AT89S52单片机一块2.74HC573锁存器一片3.DIP40底座一个,DIP20底座一个4.9012三极管两个,1K电阻四个,10uf电解电容一个,30pf电容两个,12MHZ晶振一个,蜂鸣器一个,LED五个,HRSH5V继电器一个,数码管一个,按键13个,拨动开关三个,10K电阻三个,8脚10K排阻一个,导线若干,IN4007二极管一个,杜邦线若干,电位器一个。四、设计电
4、路原理图五、设计电路程序#include#defineuiunsignedint#defineucunsignedcharsbitdula=P2^6;ucpassword[8]={15,15,15,15,15,15,15,15};//用于存储八位二进制密码uicodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};//用于数码管静态显示uctemp,flag1=1;uii=-1;sbi
5、tp0=P1^0;sbitp1=P1^1;sbitp2=P1^2;sbitbuz=P1^3;sbitrelay=P1^4;sbitd1=P1^5;sbitd2=P1^6;sbitd3=P1^7;uckeyscan();voiddisplay(ucaa);//数码管显示子程序voiddelay(uiz);//延时子程序voidbaojing();//报警子程序ucunlock1();//返回值为1的解锁子程序,通过控制标志位flag1以控制报警器是否扫描导线是否剪断ucunlock2();//返回值为0的解锁子程序voidmain()//
6、主函数{while(1){dula=1;P0=0x79;dula=0;buz=1;relay=1;d1=0;d2=0;d3=0;//当程序在非报警状态工作时使相应设备停止报警if(keyscan()==11)//判断是否进入解锁程序,解锁成功则子程序返回1,使进入导线是否剪断扫描程序flag1=unlock1();while(flag1)//判断报警器是否开启{if((p0
7、
8、p1
9、
10、p2)==1)//判断是否有导线被剪断baojing();if(keyscan()==11)//判断是否进入解锁程序flag1=unlock2();//解
11、锁成功则将flag1赋0使检测扫描程序结束循环,进入非报警状态}}}voidbaojing()//报警子程序{d1=0;d2=0;d3=0;relay=0;buz=0;if(p0==1)d1=1;if(p1==1)d2=1;if(p2==1)d3=1;}voiddelay(uiz){uix,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddisplay(ucaa){dula=1;P0=table[aa-1];dula=0;}ucunlock1(){ucflag2=1;//一旦进入解锁程序,则进入下面的
12、循环while(flag2)\用于控制是否跳出解锁程序{for(;i<7;){password[i]=keyscan();//读取密码,控制读取密码输为八位}if(keyscan()==12)//判断是否