基于单片机的智能家居控制系统.doc
. .单片机原理与应用技术课程设计报告题目 基于单片机的智能家居控制系统的设计专业班级:_ _姓名:_ _时 间:_指导教师: 单片机课程设计工程系列: 基于单片机的智能家居控制系统的设计一设计要求一根本功能(1)家居内无人时, 切断所有家电的220V电源, 既消除了各种电器的待机能耗, 又防止了因供电异常、屋内漏水等不可预知事件损坏电器的危险。(2)通过预设时间和时长控制娱乐性家电, 防止了孩子在家因过度娱乐而延误学习。(3)所有电器的电源都直接通过系统控制进展供电/断电,在使用电器时无需插拔电源插头, 防止了因经常插拔电源插头而造成接触不良及触电的危险。(4)根据预设室内温度和湿度对空调和加湿器自动进展启/停控制, 以到达最正确舒适度。(5)各电器的工作状态在主控面板上以LED直观显示, 并通过键盘集中控制电器, 例如在观看电视时可随手翻开/关闭厨房电灶。(6)远程控制家电的启动操作。(7)设定/显示日期、时间、星期及定时叫醒效劳。(8)为防止煤气中毒设置了一氧化碳及燃气报警。(9)烟感和水感可及时发现家居内的水、火灾并报警。(10)通过门磁和窗户红外线完成防盗报警。二扩展功能参加住宅配房平安防盗报警功能和住宅门禁系统功能。二方案完成时间 三周1第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。2第二周完成软件的具体设计和硬件的制作。3第三周完成软件和硬件的联合调试。目录1 引言12 总体设计方案12.1设计思路12.1.1方案确立12.2 总体设计框图13 设计原理分析23.1传感器模块的设计23.1.1烟感传感器23.1.2门磁、红外探测器23.1.3热释电传感器23.2矩阵键盘模块23.3单片机最小系统33.4显示模块33.5 输出局部44 总结与体会4参考文献4附录一程序流程图5附录二程序列表6基于单片机的智能家居控制系统的设计摘要:介绍了以单片机为核心,并加以热释电传感器、烟感传感器、振动传感器、门磁和红外报警系统,共同构成了智能家居控制系统。制作简单、方便、价格低廉,适宜广阔用户消费。关键词:智能家居 报警 传感器 矩阵键盘1 引言随着中国信息化开展水平的逐步提高,智能化系统越来越受人们的重视。智能家居系统将现代高科技控制手段运用于家居设计,通过一套专用控制系统将室内家居,家居环境,家用电器,室外场所车库、花园等,防盗报警门磁探测器、玻璃探测器、红外探测器、安检系统烟感探测器、煤气泄露探测器和智能设备有机的融为一个整体,统一控制起来,并通过网络对所有家电进展异地或远程开启、关闭控制。2 总体设计方案2.1设计思路根据设计要求可以分为以下几个模块:传感器模块、矩阵键盘、单片机最小系统、显示模块和输出局部。2.1.1方案确立传感器模块主要有烟感传感器、门磁探测器、红外探测器和热释电传感器。用于室内的安检系统烟感探测器、振动探测器、防盗报警门磁探测器、红外探测器、省电模式热释电传感器。矩阵键盘和单片机最小系统是实现该设计的根本局部。矩阵键盘选用单片机的P1口,晶振选用6MHz。显示模块和输出局部用于显示时间、启动停顿家用电器、安检报警,并以指示。2.2 总体设计框图单 片 机键 盘 输 入数 码 显 示传 感 器电 器 工 作报 警 输 出复 位、振 荡图1 总体设计框图3 设计原理分析3.1传感器模块的设计当传感器检测到信号烟雾、人体发射的红外线时,会输出一组上下变化的电平,送往单片机的I/O口。3.1.1烟感传感器烟感传感器是检测室内的烟雾量,当室内的烟雾量超过一定值时,传感器发出信号,即有高电平输出,使报警电路报警。3.1.2门磁、红外探测器门磁、红外探测器也用于防盗报警系统。门在关闭状态下,门磁处于断开状态,此时无输出;当门被翻开时,门磁吸合,此时有高电平输出。3.1.3热释电传感器热释电传感器用于检测室内是否有人。在无人时,让系统处于省电模式;有人时,跳出省电模式。3.2矩阵键盘模块该系统采用矩阵式键盘,外观美观,便于扩展。主要用于时间的调整和家用电器的启停操作。每一水平线行线与垂直线列线的穿插处不相通,而是通过一个按键来连通。在这种行列矩阵式非编码键盘的单片机系统中,键盘处理程序首先执行有无键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下。对键的识别常用逐行扫描查询法。如图2所示。图2 矩阵键盘电路图3.3单片机最小系统该系统采用AT89S51单片机,采用串口显示电路以节省端口,采用4*4矩阵试键盘,用来控制以及调试电路,采用固态继电器实现对家用电器的强电控制和隔离强电干扰。AT89C51的主电路如图。图3单片机最小系统电路图3.4显示模块显示电路采用动态数码显示技术,由于一次只能让一个数码管显示,然而要显示6位的数据,必须由数码管一个一个轮流显示才可以实现,人的视觉暂留的时间为0.1秒,所以每位显示的间隔不必超过20ms,为了保证正确显示,必须每隔2ms,就要刷新一个数码管。本电路使得每个数码管显示的时间大约在2ms,而这刷新时间我们采用软件延时程序.每隔12ms对数码管刷新一次。电路如图4所示。图4 显示电路3.5 输出局部输出局部是智能家居控制的一个重要环节,是控制系统的终端。选用单片机的P2口。其中P2.7用于控制室内的电源使用情况,即普通模式和省电模式的转换。用一个三极管来驱动继电器控制220V的电源;P2.6是烟感传感器的输出指示;P2.5是控制娱乐性家电的使用情况,用一个计时器来控制娱乐性家电的工作时长,到一定时间后自动断开电源。P2.4P2.1是控制室内的其他家电的通断及扩展。P2.0是用于安检系统的报警。具体电路如图5所示。图5 输出局部电路图4 总结与体会通过这次课程设计提高了对简单的单片机应用电路的设计能力。设计时应该先完全领会要求再去动手,不能急躁。知道了有科学的态度才能完成科学的试验。该系统软硬件实现技术具有接口电路简单、可靠性高、本钱低、灵活性强优点。由于设计经历不是很丰富,该次设计没有完全实现。总之,通过这次实习,我真正学到了很多东西,真正体会到了理论联系实际的重要性。我想如果在平时多搞几次这样的实习,多提供一些好的条件,那我们的知识会掌握的更多,更结实。参考文献1 李朝青.单片机原理及接口技术.:航空航天大学,2005.92 钟 睿.MCS-51单片机原理及应用开发技术.:中国铁道,2006.43 沙占友,孟志永,王彦朋,等.单片机外围电路设计.:电子工业,2006.64 杰,黄 鸿.传感器与检测技术.:高等教育,2002.8附录一 程序流程图系统初始化时钟显示判断键盘是否按下-键盘扫描判断判断是何键按下-调时电路家居控制报警显示图6程序流程图附录二 程序列表. .word. .;*LED1 EQU 20H ;存秒单元LED2 EQU 21H ;存分单元LED3 EQU 22H ;存时单元 EQU 23H ;调时间转换标志单元1 EQU 24H ;定时转换标志单元;*ORG 0000H AJMP START ORG 01BH LJMP T1ZHONG ORG 000BH ;T0的中断入口地址AJMP SERVE ;转向中断效劳程序ORG 0030HSTART: MOV R0,#20H ;秒单元存入首地址 MOV R1,#30H ;秒单元发送首地址 MOV R2,#6 ;各单元清零循环次数 MOV R3,#5 MOV DPTR,#TAB ;字型码首地址 MOV 25H,#0AH ;装入中断次数 MOV TMOD,#11H ;设T0工作于模式1 MOV IE,#82H ;允许CPU,T0中断 MOV TH0,#3CH MOV TL0,#0B0H ;赋计数初值BK:MOV R0,#00HINC R0 DJNZ R3,BK MOV LED3,#12 MOV 40H,#00H MOV 41H,#00H MOV 42H,#06H ;定时单元初始化6:00:00 ACALL DIS ;赋初值12:00:00 SETB 30H ;标志位置1 SETB TR0 ;启动定时器T0,开场计时MOVTH1,#3CH MOVTL1,#0B0HSETB ET1 SETB EA MOV R3,#50MOV A,#0F0HMOV P2,#0FFHMAIN:JNBP0.0,K16 JNB P0.1,K12 ;判断传感器是否动作JNB P0.2,K16 JNBP0.3,K13MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,DELAYAJMP KEYDELAY:ACALL DL10MS MOV P1,#0F0HMOV A,P1 ANL A,#0F0HCJNE A,#0F0H, KEYJ AJMP KEY RETKEYJ:MOV P1,#0FEH MOV A,P1L1:CJNE A,#07EH, L2 MOV R5,#20A10:ACALL DL10MS DJNZ R5,A10CLR TR0 ;关闭定时器T0 INC ;标志单元加 1 MOV A, SETB 30H ;调时间标志位 CJNE A,#4,KEY;K1, 如果K1键未按四下进入调时间闪烁状态 SETB TR0 ;启动定时器 MOV ,#00H ;如果K1键按四下,标志单元清零 ;* KEY:MOV A, CJNE A,#1,PD1 ACALL DISACALL DELAY600 MOV 36H,#10 MOV 37H,#10 MOV 38H,32H MOV 39H,33H MOV 3AH,34H MOV 3BH,35HACALL CCC ACALL DELAY600 ;秒闪烁/准备进入调秒状态PD1:CJNE A,#2,PD2 ACALL DIS ACALL DELAY600 MOV 36H,30H MOV 37H,31H MOV 38H,#10 MOV 39H,#10 MOV 3AH,34H MOV 3BH,35H ACALL CCC ACALL DELAY600 ;分闪烁/准备进入调分状态PD2:CJNE A,#3,KEY2 MOV 36H,30H MOV 37H,31H MOV 38H,32H MOV 39H,33H MOV 3AH,#10MOV 3BH,#10 ACALL CCC ACALL DELAY600 ACALL DIS ACALL DELAY600 ;时闪烁/准备进入调时状态KEY2:AJMP MAINL2:CJNE A,#0BEH, L3 MOV R5,#20A20:ACALL DL10MS DJNZ R5,A20MOV A, ;调时间标志 30H,N0 ;为1调时间/为0定时 MOV A,1 ;定时标志 N0:CJNE A,#1,N1 ACALL TS ;转向调秒 / 加N1:CJNE A,#2,N2 ACALL TM ;转向调分 / 加N2:CJNE A,#3,KEY3 ACALL HOUR ;转向调时 / 加KEY3:AJMP KEYL3:CJNE A,#0DEH, L4MOV R5,#20A30:ACALL DL10MS DJNZ R5,A30MOV A, 30H,M0 ;为1调时间/为0定时 MOV A,1 ;定时标志M0:CJNE A,#1,M1 ACALL TS ;转向调秒 / 减M1:CJNE A,#2,M2 ACALL TM1 ;转向调分 / 减M2:CJNE A,#3,CHS ACALL HOUR1 ;转向调时 / 减CHS: 30H,KEY4 MOV 41H,LED2 ;分定时存入41H单元 MOV 42H,LED3 ;时定时存入42H单元KEY4:AJMP KEYL4:CJNE A,#0EEH, M10 MOV R5,#20A40:ACALL DL10MS DJNZ R5,A40SETB TR0 ;启动定时器 SETB P1.4 CLR 30H ;定时标志位 INC 1 MOV A,1 CJNE A,#4,YYY MOV 1,#00H SETB 30H MOV LED2,3EH ;复原分 MOV LED3,3FH ;复原时AAA:JNB 30H,NNN MOV A,LED3 CJNE A,42H,NNN ;时比拟 MOV A,LED2 CJNE A,41H,NNN1 ;分比拟 ACALL MM MOV 43H,41H INC 43HNNN1:CJNE A,43H,NNN ACALL MM NNN:MOV A, 30H,XXX MOV A,1XXX:AJMP ZZZYYY:CJNE A,#1,ZZZ MOV 3EH,LED2 ;暂存分 MOV 3FH,LED3 ;暂存时ZZZ:AJMP KEYM10:MOV P1,#0FDH MOV A,P1L5:CJNE A,#07DH, L6 CPL P2.2 MOV R5,#20B10:ACALL DL10MS DJNZ R5,B10AJMP MAINL6:CJNE A,#0BDH, L7CPL P2.2 MOV R5,#20B20:ACALL DL10MS DJNZ R5,B20AJMP MAINL7:CJNE A,#0DDH, L8CPL P2.2 MOV R5,#20B30:ACALL DL10MS DJNZ R5,B30AJMP MAINL8:CJNE A,#0EDH, M20CPL P2.2 MOV R5,#20B40:ACALL DL10MS DJNZ R5,B40AJMP MAINM20:MOV P1,#0FBHMOV A,P1L9:CJNE A,#07BH, L10 CPL P2.2 MOV R5,#20C10:ACALL DL10MS DJNZ R5,C10AJMP MAINL10:CJNE A,#0BBH, L11CPL P2.2 MOV R5,#20C20:ACALL DL10MS DJNZ R5,C20AJMP MAINL11:CJNE A,#0DBH, L12CPL P2.2 MOV R5,#20C30:ACALL DL10MS DJNZ R5,C30AJMP MAINL12:CJNE A,#0EBH, M30MOV R5,#20C40:ACALL DL10MS DJNZ R5,C40 AJMP K12M30:MOV P1,#0F7H MOV A,P1L13:CJNE A,#077H, L14 MOV R5,#20D10:ACALL DL10MS DJNZ R5,D10 AJMP K13L14:CJNE A,#0B7H, L15 MOV R5,#20D20:ACALL DL10MS DJNZ R5,D20 AJMP K14L15:CJNE A,#0D7H, L16 MOV R5,#20D30:ACALL DL10MS DJNZ R5,D30 AJMP K15L16:CJNE A,#0E7H, CHS0 MOV R5,#20D40:ACALL DL10MS DJNZ R5,D40 AJMP K16CHS0:AJMP CHSK16:CPL P2.6 MOV R5,#20E10:ACALL DL10MS DJNZ R5,E10AJMP MAINK12:CPL P2.0MOV R5,#20E20:ACALL DL10MS DJNZ R5,E20AJMP MAINK13:CPL P2.7MOV R5,#20E30:ACALL DL10MS DJNZ R5,E30AJMP MAINK14:CLR P2.5 SETB TR1 AJMP MAINK15:CPL P2.4MOV R5,#20 E4:ACALL DL10MS DJNZ R5,E4 AJMP MAIN MOV 41H,LED2 ;分定时存入41H单元 MOV 42H,LED3 ;时定时存入42H单元 RET ;* 加秒子程序 *TS:MOV R3,#60 A1:ACALL DELAY100INC LED1 MOV A,LED1 CJNE A,#60,A2 MOV LED1,#0 A2:ACALL DIS MOV P1,#0F0HMOV A,P1 ANL A,#0F0H CJNE A,#0F0H,A33 AJMP A3 A33:DJNZ R3,A1 SJMP TS A3:RET ; *减秒子程序 * TS1:MOV R3,#60 B1:ACALL DELAY100 MOV A,LED1 CJNE A,#0FFH,B2 MOV LED1,#59 B2:ACALL DISMOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,B33AJMP B3B33:DEC LED1 DJNZ R3,B1 SJMP TS1 B3:SETB P1.5RET ; *加分子程序 * TM:MOV R3,#60C1:ACALL DELAY100 INC LED2 MOV A,LED2 CJNE A,#60,C2 MOV LED2,#0C2:ACALL DIS MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,C33 AJMP C3 C33:DJNZ R3,C1 SJMP TM C3:SETB P1.6 RET ;*减分子程序* TM1:MOV R3,#60 D1:ACALL DELAY100 MOV A,LED2 CJNE A,#0FFH,D2 MOV LED2,#59 D2:ACALL DIS MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,D33 AJMP D3D33:DEC LED2 DJNZ R3,D1 SJMP TM1 D3:SETB P1.5 RET ;*加时子程序 * HOUR:MOV R3,#13 E1:ACALL DELAY100 INC LED3 MOV A,LED3 CJNE A,#13,E2 MOV LED3,#1E2:ACALL DIS MOV P1,#0F0H MOV A,P1ANL A,#0F0H CJNE A,#0F0H,E33 AJMP E3 E33:DJNZ R3,E1SJMP HOUR E3:SETB P1.6 RET ;*减时子程序 * HOUR1:MOV R3,#12 F1:ACALL DELAY100 MOV A,LED3 CJNE A,#0,F2 MOV LED3,#12 F2:ACALL DISMOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,F33AJMP F3 F33:DEC LED3 DJNZ R3,F1 SJMP HOUR1 F3:SETB P1.5 RET;*中断子程序 * SERVE:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H ;重新赋计数初值 DJNZ 25H,MT1 ;1S未到,返回 MOV 25H,#0AH ;重置中断次数 MOV A,#01H ADD A,LED1 ;秒位加1 MOV LED1,A CJNE A,#60,RETURN ;未计满60秒,返回 MOV LED1,#00H ;计满60秒,秒位清0 MOV A,#01H ADD A,LED2 ;分位加1 MOV LED2,A CJNE A,#60,RETURN ;未计满60分,返回 MOV LED2,#00H ;计满60分,分位清0 MOV A,#01H ADD A,LED3 ;时位加1 MOV LED3,A CJNE A,#13,RETURN ;未计满13时,返回 MOV LED3,#01H ;计满13时,时位清1RETURN:ACALL DIS MT1:POP ACCPOP PSW RETIDL1MS:MOV R5,#14HDL1:MOV R4,#19HDL2:DJNZ R4,DL2 DJNZ R5,DL1 RETDL10MS:MOV R7,#14HLOOP1:MOV R6,#0F9H LOOP2:DJNZ R6,LOOP2DJNZ R7,LOOP1 RETT1ZHONG:MOV TH1,#3CHMOV TL1,#0B0H DJNZ R3,LOOP CLR TR1 SETB P2.5 MOV R3,#50LOOP:RETI;*显示子程序 * DIS:MOV A,LED1MOV B,#10 DIV AB MOV 30H,B MOV 31H,A MOV A,LED2 MOV B,#10 DIV AB MOV 32H,BMOV 33H,A MOV A,LED3 MOV B,#10DIV AB MOV 34H,B MOV 35H,A MOV R2,#6 MOV R1,#30HBBB:MOV A,R1 MOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TIINC R1DJNZ R2,BBBRET;*烁显示子程序* CCC:MOV R2,#6MOV R1,#36HDDD:MOV A,R1MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R1 DJNZ R2,DDD RET;*10毫秒延时子程序 * DELAY10:MOV R7,#0AH X1:MOV R6,#0F9H X2:DJNZ R6,X2 DJNZ R7,X1 RET;*<100 毫秒延时子程序 * DELAY100:MOV R7,#100 Y1:MOV R6,#0F9HY2:DJNZ R6,Y2DJNZ R7,Y1 RET;*<600 毫秒延时子程序 *DELAY600:MOV R7,#15 Z1:MOV R6,#10H Z2:MOV R5,#0FFH Z3:DJNZ R5,Z3DJNZ R6,Z2 DJNZR7,Z1 RET;*闹铃/闪烁子程序* MM:PUSH PSW PUSH ACC MMM:CLR P1.7CLR P1.6CLR P1.5CLR P1.4 ACALL DELAY10 SETB P1.7 SETB P1.6 SETB P1.5 SETB P1.4 ACALL DELAY10 POP ACC POP PSW RET;*字型码 * TAB:DB 11H,0D7H,32H,92H,0D4HDB 98H,18H,0D3H,10H,90H,0FFH END. .word. . .word.