华南农业大学单片机课程设计智能家居_第1页
华南农业大学单片机课程设计智能家居_第2页
华南农业大学单片机课程设计智能家居_第3页
华南农业大学单片机课程设计智能家居_第4页
华南农业大学单片机课程设计智能家居_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计报告 智能家居报警系统设计 姓 名: 班 级: 学 号: 指导老师:王卫星、吴敏、姜晟日期: 2015.12.272015.12.29 华南农业大学电子工程学院摘 要二十一世纪是信息化的年代,在这样的大时代里,“智能”成为一种趋势。无论日常用品,数码产品,抑或犯罪手法,都以一种“智能”的姿态闯入人类的生活当中。而人类在享受“智能”带来的方便之时,也活在它所带来的各种隐患之中。而智能犯罪带来的家居安全问题,也逐渐引起人们的高度关注。为了解决此问题,本设计采用以单片机为控制核心,用LCD显示状态的密码锁模块为保护探测手段,并利用语音报警为阻吓方法,设计出应用范围较广,智能化水平较高的

2、智能家居报警系统,对各种意欲破坏家居安全的行为给予本地震慑,并通过报警通知为及时制止犯罪提供足够时间。关键词:智能;家居安全报警系统;单片机控制 目 录1 方案比较与选择. .11.1设计方案比较.11.2方案最终选择.32 系统分析. .33 电路设计与硬件分析. .33.1电路设计.43.2硬件分析. .43.2.1 密码锁键盘输入模块. .53.2.2 AT24C02密码存储模块. .63.2.3 LCD显示模块. .63.2.4报警模块. .73.2.5下载模块. .73.2.6流水灯模块. .84改进方案. .85课程设计心得. .8Abstract. .10参考文献附件1任务分配表

3、及元件清单附件2 程序代码221 方案比较与选择1.1 设计方案比较方案一1单片机控制电路 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 且具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。2 LCD显示模块 采用1602液晶模块,它的每位之间

4、有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用。同时,能很方便的控制实现清屏、左移右移、光标显示等效果。而且其显示的字符在下一条指令为到来之前不会改变,能够维持显示的字符并且占用的系统资源也少。3 报警模块 采用蜂鸣器和语音报警。4下载模块串品通信则是用USB转串口线。方案二1 单片机控制电路用AT89C52作为单片机控制电路,可反复擦写,并且其功能强大,能应用于较复杂的控制场合。但AT89C52外围电路接线复杂;需要用并行编程器下载程序,并且每次烧写程序都需要握手操作,极不方便。2密码锁键盘输入模块 通过判断用户输入的密码是否正确,三次错误就报警提示错误。3 LCD显示

5、模块 采用利用发光二极管的特性组合而成的数码管,通过驱动电路驱动相应的段码,控制相应的二极管的状态显示相应的数字,其中静态显示方式只能显示单个数字,而动态显示方式因其扫描时间会占用大量的系统资源。1.2方案最终选择为实现本设计,处于各种现实因素如实用性、节能性以及可控性等方面因素的考量,结合上述对比,本小组最终决定采用方案一来完成各模块功能的实现,分别是: STC89C52实现单片机控制模块,STC89C52单片机的外设键盘实现密码锁模块, 1602液晶模块实现LCD模块, 串口下载器实现下载模块以及蜂鸣器、喇叭和流水灯模块实现报警功能。2系统分析实现密码锁模块作为震慑犯罪的一道坚实防线,防止

6、可疑人物接近以及阻止无关人员进入。在第一道安全防线被突破后,通过语音报警系统发出警报,阻吓犯罪继续进行,为屋主采取阻止犯罪的行为提供足够时间。其功能实现流程如图1所示。开始程序初始化等待输入密码,LCD提示输入是否正确错误语音报警系统启动,流水灯启动,蜂鸣器响开锁3次错误正确图1 程序执行流程框图为实现此功能,本设计分为软件和硬件两部分,硬件电路方面主要由:密码门禁系统模块(包括键盘控制与LCD控制显示电路)、单片机控制电路、报警器、语音报警模块、流水灯报警模块以及下载模块组成,各部分之间关系如图2所示。 MCU显示模块报警模块程序下载模块密码锁键盘输入模块流水灯模块图2 模块关系图3电路设计

7、与硬件分析3.1电路设计为实现本组所设计的智能家居报警系统,电路图如图3所示,由密码锁模块、LCD显示模块、报警模块、LED流水灯模块、通信下载模块和外围功能电路等功能模块组成。图3 原理图 3.2硬件分析3.2.1 密码锁键盘输入模块 电路使用4×4键盘非编码键盘进行密码输入。键盘为8线,通过单片机P1口输入单片机内。行线接高电平,当没有按键按下时行线呈现高电平,当按键按下时,行线电平输出由列线控制。使用扫描法逐列将列线置低电平并逐行扫面看有否行电平从高变低找出按下的键,并通过查表得出对应键的键值。如图4所示。图4 4X4键盘电路3.2.2 AT24C02密码存储模块为了保存用户设

8、置的密码,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的P2.1、P2.0端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;E0、 E1、E2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取, 通过IIC总线写入及读取数据进行断电保存以及上电读取。AT24C02储存密码电路如图3所示3.2.3 LCD显示模块LCD显示模块用于显示系统状态,密码锁操作状态。显示模块使用LCD1602,是

9、由液晶显示屏和其译码电路组成,能显示数字英文,两行显示,界面友好。16个对外接口,8根数据线使用并行连接方式,接单片机P0口,3根控制线分别接单片机P2.0、P2.1、P2.2引脚,另外5根线用于电源、接地以及控制背光,分别接电源、接地和可调电阻。如图5所示。图5 LCD显示电路3.2.4 报警模块语音报警电路由ISD1760芯片、喇叭、麦克风和控制按钮组成,可进行语音的录入、擦除及播放,采用芯片的独立按钮模式。按SW2按键时开始录音,引脚PLAYL出现由低电平到高电平,控制播放当前录音,持续的高电平可使其循环播放。播放引脚与单片机的P2.2连接,当报警时,单片机的P2.2脚持续输出高电平,触

10、发语音报警模块,使模块中预先录入的录音自动循环播放,实现语音报警。如图6所示。图6 语音电路3.2.5下载模块 使用USB转TTL模块,支持 USB1.1 或 USB2.0 通信;全面支持 WIN98、WINME、WIN2000、WINXP、VISTA、WIN7 等操作系统;采用 USB 口供电,板内带有 500mA 自恢复保险丝或保险电阻,保护电脑主板不被意外烧毁;在对芯片编程时可以使用目标系统本身电源,也可以使用编程器从 USB 口取电供给目标板,但应保证目标电流不大于 500mA,以免不能正常编程;编程完成不影响目标板的程序运行;支持 STC 全系列芯片烧录;编程器提供 3.3V 与 5

11、V 的电压输出接口;速度比并口编程更快更稳定,更方便笔记本电脑用户使用;采用进口原装芯片,能进行高速稳定编程。如图7所示。图7 串口通信下载电路3.2.6流水灯模块 流水灯报警模块由单片机和八个LED灯组成,八个LED灯是共阴的接法。当密码输入三次错误时,单片机通过P3的八个引脚循环输出高电平,使流水灯循环闪烁实现报警。如图8所示。图8 流水灯4改进方案 由于课程设计时间有限,本组虽实现了一个较为完善的智能家居报警系统,但在其实用性和功能上仍有进步和完善的空间:一、在实现了语音警报阻吓的基础上,增加摄像头录像功能。语音报警被启动的时候触发摄像头的开启,记录犯罪者的样貌,使其使用性大大增加。一方

12、面能增加该报警系统的阻吓度,另一方面能够将数据交予公安机关协助公安机关捉拿惯犯。 二、可以增加烟雾传感器,用以实现对火灾等突发情况的监控,为主人的生命和财产安全保驾护航。5 心得体会回顾这次课程设计,至今我们收获慨颇多,自从拿到题目到完成整个编程,从理论到实践,在 整整一个多星期的日子里,可以学到很多很多的东西。不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考能力。 刚开始,我们对整

13、个设计都是云里雾里的,很多模块都没用过,甚至连用C语言写单片机程序还不熟悉。通过上网查资料,一步步从小程序开始调试,我们逐渐明白了如何用C语言来编写单片机程序。对于单片机外设,我们通过编写程序,学会了应用单片机的各个外设模块。比如说矩阵键盘,IIC总线协议与AT04C02的结合。这加深了我们对单片机IO口以及总线扩展的知识。通过结合各个模块的综合使用,我们充分认识到了单片机系统设计的难处及克服方法。 此次的课程设计,让我们深深的认识到了单片机在生活中的应用用是很广泛的。这次课程设计是对我们所学知识的一次综合运用,提高了我们的动手能力,也提高了我们小组对单片机的兴趣和信心。Smart Alarm

14、ing System for SecurityAbstract: Twenty-first Century is the era of information technology, in such a big time, "intelligence" has become a trend. Regardless of everyday goods, digital products, or criminal practices, all with a kind of "intelligent" attitude into the human life.

15、 While human beings enjoy the convenience brought by "intelligence", it also lives in all kinds of hidden dangers. The smart crime brings home security problems, but also gradually attracted people's attention.In order to solve this problem, this design uses a microcontroller as the co

16、ntrol core, using LCD display status of the password lock module for the protection of detection means, and the use of voice alarm as the deterrent method, the design of a wide range of applications, intelligent level of intelligent home alarm system for the various kinds of desire to destroy the ho

17、me security behavior to give local shock and alarm notification to stop the crime in time to provide enough time.Keywords:Smart Alarming System for Security single chip micro-computer controller 附录1 任务分配表及元件清单姓名任务分配余昌振编写程序、报告撰写欧阳伟坚报告撰写、程序调试吴耀庭 报告撰写、电路焊接、接线元件清单矩阵键盘1LCD16021M 麦克风1喇叭1 附录二 程序#include<

18、;reg52.h>#include<string.h>#include<intrins.h>#include<compact.h>#include<lcd1602.h>#include<iic.h>#include<keyboard.h>#include<sounder.h>void singleinput(uint num);void total_init();/ 总初始化void lock_process();/ 密码锁 处理过程/*/void main()/主函数 total_init(); whi

19、le(1) lock_process(); void singleinput(uint num)/输入单个数字 if (i<=5) /密码限制在6位以内 Userpasswordi=num; DSY_BUFFERi='*' Display_String(DSY_BUFFER,0xc0); i+; /*/void total_init() / 总初始化P3=0x00; laba=0;beep=1;init(); init_lcd();delayms(5);aa=Recstring(0xa0,1,buffer,6); /先从EEPROM中接收数据,存入buffer缓存中,de

20、layms(5);if(buffer0=0) /如果数组的首个元素为空,则表示EEPROM中未有数据aa=Sendstring(0xa0,1,table2,6); /执行发送语句,将默认密码存入EEPROM中delayms(5);aa=Recstring(0xa0,1,buffer,6); /重新接收数据,存入buffer缓存中,delayms(10);P1=0x0f; /*/void lock_process()/ 密码锁 处理过程 if(P1!=0x0f)temp=Keys_Scan();switch(temp) case 0: /按D键开锁 if(i=6) for(k=0;k<6;

21、k+) if(bufferk!=(Userpasswordk+48) flag=0; break; else flag=1; if (flag=1) flag=0; i=0; clear_password(); Display_String("OPEN OK! ",0xc0); IS_valid_user = 1; j=0; else j+; /relay=1; /关闭LED clear_password(); Display_String("ERROR!Have try ",0xc0); write_com(0xcf); write_date(0x30

22、+j); IS_valid_user=0; i=0; break; case 1: /按#键保存新密码 if ( !IS_valid_user)i=0;Display_String("No rights ! ",0xc0);delayms(1000); Display_String("Input Password.",0x80); Display_String("Lock OK! ",0xc0); else i = 0;init();delayms(50);for(k=0;k<6;k+) Userpasswordk=Userpa

23、sswordk+48; aa=Sendstring(0xa0,1,Userpassword,6);delayms(5); aa=Recstring(0xa0,1,buffer,6); delayms(5); clear_password(); Display_String(table,0x00); Display_String("Password Saved! ",0xc0);delayms(1000);Display_String("Do lock agian ? ",0xc0); break; case 2:singleinput(0);break;

24、 /输出0case 3:/按*键设置新密码 if ( !IS_valid_user) /如果是合法用户则提示输入新密码i=0;Display_String("No rights ! ",0xc0);delayms(1000);Display_String("Input Password.",0x80);Display_String("Lock OK! ",0xc0); else i=0; Display_String("New Password: ",0x80); Display_String(" &qu

25、ot;,0xc0); break; case 4: /按C键清空i=0; clear_password(); Display_String(" ",0xc0); break; case 5:singleinput(9);break;case 6:singleinput(8);break;case 7:singleinput(7);break;case 8:/按B键删除一个数if(i!=0)i-;for(n=0;n<i;n+) DSY_BUFFER1n='*' Display_String(DSY_BUFFER1,0xc0);break;case 9:s

26、ingleinput(6);break;case 10:singleinput(5);break;case 11:singleinput(4);break;case 12:/上锁clear_password(); Display_String(table,0x80); Display_String("Lock OK! ",0xc0); i=0; IS_valid_user=0; break;case 13:singleinput(3);break;case 14:singleinput(2);break;case 15:singleinput(1);break;P1=0x0

27、f;if(j=3) /三次输入错误Display_String("THIEF!THIEF!",0xc0); j=0;bell(); /*END*/#ifndef _COMPACT_H_#define _COMPACT_H_#define uchar unsigned char#define uint unsigned intbit flag=0,aa;/用户自定义定时溢出标志位uchar buffer6; uchar DSY_BUFFER16=" " /数组用于存放显示符号uchar DSY_BUFFER116=" " /数组用于存放

28、显示符号uchar Userpassword6=0; /存放用户密码uchar code table2="123456" /初始化密码uchar code table="Input Password."uchar temp,i=0,j=0,k=0,n;uchar IS_valid_user; #endif#include<reg52.h>#include<iic.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#defin

29、e delay4us() _nop_();_nop_();_nop_();_nop_();/*iic*/void delay()/短延时,两个机器周期,做总线的延时用; void start()sda=1; delay4us();scl=1;delay4us();sda=0;scl=0;delay4us();void stop()sda=0;scl=1;delay4us();sda=1;delay4us();scl=0;void init()/初始化sda=1;delay();scl=1;delay();void ack()/ 应答sda=0;scl=1;delay4us();scl=0;sd

30、a=1;void noack() /非应答sda=1;scl=1;delay4us();scl=0;sda=0;uchar recbyte() /接收字节uchar i,rd;rd=0x00;sda=1;for(i=0;i<8;i+)scl=1;rd<<=1;rd|=sda;delay4us();scl=0;delay4us();scl=0;delay4us();return rd;uchar sendbyte(uchar wd) /发送字节uchar i;bit ack0;for(i=0;i<8;i+)sda=(bit)(wd&0x80);_nop_();_n

31、op_();scl=1;delay4us();scl=0;wd<<=1;delay4us();sda=1;scl=1;delay4us();ack0=!sda;scl=0;delay4us();return ack0;bit Recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) /从EEPROM读数据 uchar i; start(); if(!sendbyte(slave) return 0; if(!sendbyte(subaddr) return 0; start(); if(!sendbyte(slave+1)

32、 return 0; for(i=0;i<n-1;i+) bufferi=recbyte();ack(); buffern-1=recbyte(); noack(); stop(); return 1;bit Sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar n)/从EEPROM写数据uchar i;start();if(!sendbyte(slave) return 0;if(!sendbyte(subaddr) return 0;for(i=0;i<n;i+)if(!sendbyte(bufferi) return

33、 0;stop();return 1;#ifndef _IIC_H_#define _IIC_H_sbit sda=P20; /IIC串行数据/地址sbit scl=P21; /IIC串行时钟extern void delay();extern void start();extern void stop();extern void init();extern void ack();extern void noack();extern unsigned char recbyte();extern unsigned char sendbyte(unsigned char wd);extern bi

34、t Recstring(unsigned char slave,unsigned char subaddr,unsigned char *buffer,unsigned char n); /从EEPROM读数据extern bit Sendstring(unsigned char slave,unsigned char subaddr,unsigned char *buffer,unsigned char n);/从EEPROM写数据#endif#include<reg52.h>#include<keyboard.h>#include<lcd1602.h>/

35、*按键扫描*/uchar Keys_Scan()uchar temp,keynum;P1=0x0F;delayms(5);temp=P10x0F;switch(temp)case 1:keynum=0;break;case 2:keynum=1;break;case 4:keynum=2;break;case 8:keynum=3;break;break;P1=0xF0;delayms(5);temp=P1>>40x0F;switch(temp)case 1:keynum+=0;break;case 2:keynum+=4;break;case 4:keynum+=8;break;

36、case 8:keynum+=12;break;break;delayms(600); return keynum;void clear_password() /清除lcd上密码uchar i;for(i=0;i<6;i+) Userpasswordi=' 'for(i=0;i<16;i+) DSY_BUFFERi=' ' #ifndef _KEYBOARD_H_#define _KEYBOARD_H_#define uchar unsigned char#define uint unsigned intextern uchar Userpasswo

37、rd6;extern uchar DSY_BUFFER16;extern uchar Keys_Scan();void clear_password();#endif#include<reg52.h>#include<lcd1602.h>#define uchar unsigned char#define uint unsigned int void delayms(uint z) /延时毫秒级uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)rs=0;rd=0;lcden=0;P0=com;delayms(3);lcden=1;delayms(3);lcden=0;void write_da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论