单片机原理与应用技术课程设计报告题目基于单片机的智能家居控制系统的设计专业班级:姓名:时间:指导教师:单片机课程设计项目系列:基于单片机的智能家居控制系统的设计一.设计要求(一)基本功能(1)家居内无人时, 切断所有家电的220V 电源, 既消除了各种电器的待机能耗, 又避免了因供电异常、屋内漏水等不可预知事件损坏电器的危险。
(2)通过预设时间和时长控制娱乐性家电, 避免了孩子在家因过度娱乐而延误学习。
(3)所有电器的电源都直接通过系统控制进行供电/ 断电, 在使用电器时无需插拔电源插头, 避免了因经常插拔电源插头而造成接触不良及触电的危险。
(4)根据预设室内温度和湿度对空调和加湿器自动进行启/ 停控制, 以达到最佳舒适度。
(5)各电器的工作状态在主控面板上以LED直观显示, 并通过键盘集中控制电器, 例如在观看电视时可随手打开/ 关闭厨房电灶。
(6)远程控制家电的启动操作。
(7)设定/ 显示日期、时间、星期及定时叫醒服务。
(8)为避免煤气中毒设置了一氧化碳及燃气报警。
(9)烟感和水感可及时发现家居内的水、火灾并报警。
(10)通过门磁和窗户红外线完成防盗报警。
(二)扩展功能加入住宅配房安全防盗报警功能和住宅门禁系统功能。
二.计划完成时间三周1.第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。
2.第二周完成软件的具体设计和硬件的制作。
3.第三周完成软件和硬件的联合调试。
目录1引言 (3)2总体设计方案 (3)2.1设计思路 (3)2.1.1方案确立 (3)2.2 总体设计框图 (3)3设计原理分析 (4)3.1传感器模块的设计 (4)3.1.1烟感传感器 (4)3.1.2门磁、红外探测器 (4)3.1.3热释电传感器 (4)3.2矩阵键盘模块 (4)3.3单片机最小系统 (5)3.4显示模块 (5)3.5 输出部分 (6)4总结与体会 (6)参考文献 (6)附录一程序流程图 (7)附录二程序列表 (8)图 1 总体设计框图基于单片机的智能家居控制系统的设计摘要: 介绍了以单片机为核心,并加以热释电传感器、烟感传感器、振动传感器、门磁和红外报警系统,共 同构成了智能家居控制系统。
制作简单、方便、价格低廉,适宜广大用户消费。
关键词: 智能家居 报警 传感器 矩阵键盘1 引言随着中国信息化发展水平的逐步提高,智能化系统越来越受人们的重视。
智能家居系统将 现代高科技控制手段运用于家居设计,通过一套专用控制系统将室内家居,家居环境,家用电 器,室外场所(车库、花园等) ,防盗报警(门磁探测器、玻璃探测器、红外探测器) 、 统(烟感探测器、煤气泄露探测器)和智能设备有机的融为一个整体,统一控制起来,并通过 电话网络对所有家电进行异地或远程开启、关闭控制。
2 总体设计方案2.1 设计思路根据设计要求可以分为以下几个模块:传感器模块、矩阵键盘、单片机最小系统、显示模 块和输出部分。
2.1.1 方案确立传感器模块主要有烟感传感器、门磁探测器、红外探测器和热释电传感器。
用于室内的安 检系统(烟感探测器、振动探测器) 、防盗报警(门磁探测器、红外探测器) 、省电模式 电传感器)。
矩阵键盘和单片机最小系统是实现该设计的基本部分。
矩阵键盘选用单片机的 口,晶振选用 6MHz 。
显示模块和输出部分用于显示时间、启动(停止)家用电器、安检报警, 并以指示。
2.2 总体设计框图安检系 热释P13设计原理分析3.1传感器模块的设计当传感器检测到信号(烟雾、人体发射的红外线)时,会输出一组高低变化的电平,送往单片机的I/O 口。
3.1.1烟感传感器烟感传感器是检测室内的烟雾量,当室内的烟雾量超过一定值时,传感器发出信号,即有高电平输出,使报警电路报警。
3.1.2门磁、红外探测器门磁、红外探测器也用于防盗报警系统。
门在关闭状态下,门磁处于断开状态,此时无输出;当门被打开时,门磁吸合,此时有高电平输出。
3.1.3热释电传感器热释电传感器用于检测室内是否有人。
在无人时,让系统处于省电模式;有人时,跳出省电模式。
3.2 矩阵键盘模块该系统采用矩阵式键盘,外观美观,便于扩展。
主要用于时间的调整和家用电器的启停操作。
每一水平线(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通。
在这种行列矩阵式非编码键盘的单片机系统中,键盘处理程序首先执行有无键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下。
对键的识别常用逐行扫描查询法。
如图 2 所示。
图2 矩阵键盘电路图图4 显示电路3.3 单片机最小系统该系统采用 AT89S51 单片机,采用串口显示电路以节省端口,采用 4*4 矩阵试键盘,用来 控制以及调试电路,采用固态继电器实现对家用电器的强电控制和隔离强电干扰。
AT89C51 的 主电路如图。
图 3 单片机最小系统电路图3.4 显示模块显示电路采用动态数码显示技术,由于一次只能让一个数码管显示,然而要显示 6 位的数 据,必须由数码管一个一个轮流显示才可以实现,人的视觉暂留的时间为 0.1 秒,所以每位显 示的间隔不必超过 20ms ,为了保证正确显示,必须每隔 2ms ,就要刷新一个数码管。
本电路使 得每个数码管显示的时间大约在 2ms ,而这刷新时间我们采用软件延时程序.每隔 12ms 对数码管刷新一次。
电路如图 4 所示。
P10P00 P11 P01 P12 P02 P13 P03 P14 P04 P15 P05 P16 P06 P17 P07 INT1 P20 INT0P21P22 T1U1P23T0 P24AT89 C5 1P25 EA/VPP26P27X1 X2RESETRXDTXD RD ALE/P WRPSEN176 8 31 9 415 14 33 32 19 18 2 3 4 39 38 37 36 35 13 12 10 11 30 2924 25 26 27 2821 22 D63.5 输出部分输出部分是智能家居控制的一个重要环节,是控制系统的终端。
选用单片机的 P2 口。
其 中 P2.7 用于控制室内的电源使用情况, 即普通模式和省电模式的转换。
用一个三极管来驱动继 电器控制 220V 的电源; P2.6 是烟感传感器的输出指示; P2.5 是控制娱乐性家电的使用情况,用一个计时器来控制娱乐性家电的工作时长,到一定时间后自动断开电源。
J11 L V5C-C2 12J12 L V6C-C2 12图5 输出部分电路图4 总结与体会通过这次课程设计提高了对简单的单片机应用电路的设计能力。
设计时应该先完全领会要 求再去动手,不能急躁。
知道了有科学的态度才能完成科学的试验。
该系统软硬件实现技术具 有接口电路简单、可靠性高、成本低、灵活性强优点。
由于设计经验不是很丰富,该次设计没 有完全实现。
总之,通过这次实习,我真正学到了很多东西,真正体会到了理论联系实际的重 要性。
我想如果在平时多搞几次这样的实习,多提供一些好的条件,那我们的知识会掌握的更 多,更牢固。
参考文献[1] 李朝青 . 单片机原理及接口技术[M] . 北京:北京航空航天大学出版社, 2005.9 [2] 钟 睿.MCS-51 单片机原理及应用开发技术[M] .北京:中国铁道出版社, 2006.4 [3] 沙占友,孟志永,王彦朋,等 . 单片机外围电路设计[M] . 北京:电子工业出版社, 2006.6P2.4— P2.1 是控制具体电路如 5 所室内的其他家电的通断及扩展。
P2.0 是用于安检系统J61 2 2 J7 L V 1C -C 2 12J8J9 VCC L V 3C -C 2 12 J10 L V4C-C2 12[4]陈杰,黄鸿. 传感器与检测技术[M] . 北京:高等教育出版社,2002.8图6 程序流程图MOV DPTR,#TAB ;字型码首地址 KEYJ: MOV P1,#0FEHMOV 25H,#0AH ;装入中断次数 MOV A,P1MOV TMOD,#11H ;设 T0 工作于模式 1 L1: CJNE A,#07EH, L2 MOV IE,#82H ; 允许 CPU,T0 中断MOV R5,#20MOV TH0,#3CHA10: ACALL DL10MSMOVTL0,#0B0H;赋计数初值DJNZ R5,A10BK: MOV @R0,#00HCLR TR0 ; 关闭定时器 T0 INC R0INC COM;标志单元加 1DJNZ R3,BKMOV A,COMMOV LED3,#12SETB 30H;调时间标志位 MOV 40H,#00HCJNE A,#4,KEY;K1,如果 K1 键未按四MOV41H,#00H下进入调时间闪烁状态MOV 42H,#06H ;定时单元初始化 SETB TR0;启动定时器 6:00:00MOV COM,#00H ;如果 K1 键按四ACALL DIS ;赋初值 12:00:00 标志单元清零 SETB 30H ;标志位置 1SETB TR0 ;启动定时器 T0,开始计KEY: MOV A,COM 时 CJNE A,#1,PD1MOV TH1,#3CH ACALL DIS MOV TL1,#0B0H ACALL DELAY600 SETB ET1 MOV 36H,#10 SETB EA MOV 37H,#10 MOV R3,#50MOV38H,32HLED1 EQU 20H LED2 EQU 21H LED3 EQU 22H COM EQU 23H COM1 EQU 24H ORG 0000H AJMP START ORG 01BH LJMP T1ZHONG ORG 000BH AJMP SERVE ORG 0030HSTART: MOV 址 MOV R1,#30H MOV R2,#6 MOV R3,#5;存秒单元 ;存分单元 ;存时单元 ;调时间转换标志单元;T0 的中断入口地址R0,#20H ; 秒单元存入首地 ;秒单元发送首地址MOV A,#0F0HMOV P2,#0FFH MAIN:JNB P0.0,K16 JNB P0.1,K12;判断传感器是否动作JNB P0.2,K16 JNB P0.3,K13 MOV P1,#0F0H MOV A,P1 ANL A,#0F0HCJNE A,#0F0H,DELAY AJMP KEYDELAY: ACALL DL10MS MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H, KEYJ AJMP KEY RETMOV 39H,33HMOV 3AH,34HMOV 3BH,35HACALL CCCACALL DELAY600 ;秒闪烁/ 准备进入调秒状态PD1: CJNE A,#2,PD2ACALL DISACALL DELAY600MOV 36H,30HMOV 37H,31HMOV 38H,#10MOV 39H,#10MOV 3AH,34HMOV 3BH,35HACALL CCCACALL DELAY600 ;分闪烁/ 准备进入调分状态PD2: CJNE A,#3,KEY2MOV 36H,30HMOV 37H,31HMOV 38H,32HMOV 39H,33HMOV 3AH,#10MOV 3BH,#10ACALL CCCACALL DELAY600ACALL DISACALL DELAY600 ;时闪烁/ 准备进入调时状态KEY2 AJMP MAINL2: CJNE A,#0BEH, L3MOV R5,#20A20: ACALL DL10MSDJNZ R5,A20MOV A,COM ;调时间标志JB 30H,N0 ;为 1 调时间/为定时MOV A,COM1 ;定时标志N0: CJNE A,#1,N1ACALL TS ;转向调秒/ 加N1: CJNE A,#2,N2ACALL TM ;转向调分/ 加N2: CJNE A,#3,KEY3ACALL HOUR ; 转向调时/加KEY3: AJMP KEYL3: CJNE A,#0DEH, L4MOV R5,#20A30: ACALL DL10MSDJNZ R5,A30MOV A,COMJB 30H,M0 ;为 1 调时间/为0定时MOV A,COM1 ;定时标志M0:CJNE A,#1,M1ACALL TS ;转向调秒/ 减M1:CJNE A,#2,M2ACALL TM1 ;转向调分/ 减M2:CJNE A,#3,CHSACALL HOUR1 ;转向调时/ 减CHS:JB 30H,KEY4MOV 41H,LED2 ;分定时存入41H单元MOV 42H,LED3 ;时定时存入42H单元KEY4:AJMP KEYL4:CJNE A,#0EEH, M10MOV R5,#20A40:ACALL DL10MSDJNZ R5,A40SETB TR0 ;启动定时器SETB P1.4CLR 30H ;定时标志位INC COM1MOV A,COM1CJNE A,#4,YYYMOV COM1,#00HSETB 30HMOV LED2,3EH ;还原分MOV LED3,3FH ;还原时AAA:JNB 30H,NNNMOV A,LED3CJNE A,42H,NNN ;时比较MOV A,LED2CJNE A,41H,NNN1 ;分比较ACALL MM MOV 43H,41HINC 43HNNN1:CJNE A,43H,NNN ACALL MMNNN:MOV A,COMJB 30H,XXXMOV A,COM1XXX:AJMP ZZZYYY:CJNE A,#1,ZZZMOV 3EH,LED2 ;暂存分MOV 3FH,LED3 ;暂存时ZZZ:AJMP KEY M10:MOV P1,#0FDHMOV A,P1L5:CJNE A,#07DH, L6CPL P2.2MOV R5,#20B10:ACALL DL10MSDJNZ R5,B10AJMP MAINL6:CJNE A,#0BDH, L7CPL P2.2MOV R5,#20B20:ACALL DL10MSDJNZ R5,B20AJMP MAINL7:CJNE A,#0DDH, L8CPL P2.2MOV R5,#20B30:ACALL DL10MSDJNZ R5,B30AJMP MAINL8:CJNE A,#0EDH, M20CPL P2.2MOV R5,#20B40:ACALL DL10MSDJNZ R5,B40AJMP MAINM20:MOV P1,#0FBHMOV A,P1L9:CJNE A,#07BH, L10CPL P2.2MOV R5,#20C10:ACALL DL10MSDJNZ R5,C10AJMP MAINL10:CJNE A,#0BBH, L11CPL P2.2MOV R5,#20C20:ACALL DL10MSDJNZ R5,C20AJMP MAIN L11:CJNE A,#0DBH, L12 CPL P2.2MOV R5,#20C30:ACALL DL10MSDJNZ R5,C30AJMP MAINL12:CJNE A,#0EBH, M30 MOV R5,#20C40:ACALL DL10MSDJNZ R5,C40AJMP K12M30:MOV P1,#0F7HMOV A,P1L13:CJNE A,#077H, L14 MOV R5,#20D10:ACALL DL10MSDJNZ R5,D10AJMP K13L14:CJNE A,#0B7H, L15 MOV R5,#20D20:ACALL DL10MSDJNZ R5,D20AJMP K14L15:CJNE A,#0D7H, L16 MOV R5,#20D30:ACALL DL10MSDJNZ R5,D30AJMP K15L16:CJNE A,#0E7H, CHS0 MOV R5,#20D40:ACALL DL10MSDJNZ R5,D40AJMP K16CHS0:AJMP CHSK16:CPL P2.6MOV R5,#20E10:ACALL DL10MSDJNZ R5,E10AJMP MAINK12:CPL P2.0MOV A,LED1 CJNE A,#60,A2 MOV LED1,#0 A2:ACALL DISMOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,A33 AJMP A3C3:SETB P1.6RET减分子程序TM1:MOV R3,#60 D1:ACALL DELAY100MOV A,LED2 CJNE A,#0FFH,D2 MOV LED2,#59 D2:ACALL DIS A33: DJNZ R3,A1SJMP TS ANL A,#0F0HCJNE A,#0F0H,D33TS1: MOVR3,#60 AJMP D3 B1: ACALLDELAY100 D33:DEC LED2 MOVA,LED1 DJNZ R3,D1CJNE A,#0FFH,B2 SJMP TM1MOVLED1,#59D3:SETB P1.5MOV R5,#20 B2: ACALL DISE20:ACALL DL10MSMOV P1,#0F0H DJNZ R5,E20 MOV A,P1 AJMP MAIN ANLA,#0F0HK13:CPL P2.7CJNE A,#0F0H,B33 MOV R5,#20 AJMP B3 E30:ACALL DL10MSB33: DEC LED1DJNZ R5,E30 DJNZ R3,B1 AJMP MAIN SJMP TS1 K14:CLR P2.5B3: SETB P1.5SETB TR1 RETAJMP MAIN ; ******* 加分子程序K15:CPL P2.4TM:MOV R3,#60MOV R5,#20 C1:ACALL DELAY100E4:ACALL DL10MS INC LED2 DJNZ R5,E4 AJMP MAIN MOV 41H,LED2 ;分定时存入 41H 单元 MOV 42H,LED3 ;时定时存入 42H 单元 RET 加秒子 程序 MOV A,LED2 CJNE A,#60,C2 MOV LED2,#0 C2:ACALL DISMOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,C33 TS:MOV R3,#60 A1:ACALL DELAY100AJMP C3 C33:DJNZ R3,C1 INC LED1SJMP TM MOV P1,#0F0H MOV A,P1A3: RET减秒子程序CJNE A,#0,F2 MOV LED3,#12 F2:ACALL DISMOV P1,#0F0H MOV A,P1 ANL A,#0F0HCJNE A,#0F0H,F33 AJMP F3 F33:DEC LED3 DJNZ R3,F1 SJMP HOUR1F3:SETB P1.5RET中断子程序 SERVE:PUSH PSW;重新赋计数初PUSH ACCMOV TH0,#3CH MOV TL0,#0B0H值回DJNZ 25H,MT1;1S 未到 ,返MOV 25H,#0AH;重置中断次RET 加时子程序HOUR:MOV E1:ACALLR3,#13 DELAY100INC LED3 MOV A,LED3 CJNE A,#13,E2 MOV LED3,#1 E2:ACALL DISMOV A,#01H ADD A,LED1 ;秒位加 1 MOV LED1,ACJNE A,#60,RETURN ;未计满 60秒,返回MOV LED1,#00H ;计满 60 秒 ,秒位 清0MOV A,#01H MOV P1,#0F0H MOV A,P1 ANL A,#0F0HCJNE A,#0F0H,E33 AJMP E3 E33:DJNZ R3,E1SJMP HOUR ADD A,LED2 ;分位加1 MOV LED2,ACJNE A,#60,RETURN ;未计满 60分,返回MOV LED2,#00H;计满 60 分,分位E3:SETB P1.6RET减时子程序HOUR1:MOV R3,#12 F1:ACALL DELAY100 MOV A,LED3清0 MOV A,#01H ADD A,LED3 ;时位加 1 MOV LED3,ACJNE A,#13,RETURN ;未计满 13 时,返回MOV LED3,#01H清1;计满 13 时 ,时位RETURN:ACALL DIS MT1:POP ACCPOP PSWRETIDL1MS:MOV R5,#14H DL1:MOV R4,#19H DL2:DJNZ R4,DL2DJNZ R5,DL1RETDL10MS:MOV R7,#14H LOOP1:MOV R6,#0F9H LOOP2:DJNZ R6,LOOP2DJNZ R7,LOOP1RETT1ZHONG:MOV TH1,#3CHMOV TL1,#0B0HDJNZ R3,LOOPCLR TR1SETB P2.5MOV R3,#50 LOOP: RETIDIS:MOV A,LED1 MOV B,#10 DIV AB MOV 30H,B MOV 31H,A MOV A,LED2MOV B,#10 X1: MOV R6,#0F9HX2: DJNZ R6,X2 DJNZ R7,X1 RET;******* <100 毫秒延时子程序 ******** DELAY100:MOV R7,#100DIV AB Y1: MOV R6,#0F9H MOV 32H,B Y2: DJNZR6,Y2 MOV 33H,ADJNZ R7,Y1MOV A,LED3RETMOV B,#10 ;********< 600毫秒延时子程序 ********DIV AB DELAY600: MOVR7,#15MOV 34H,B Z1: MOV R6,#10H MOV 35H,A Z2: MOVR5,#0FFH MOV R2,#6Z3: DJNZ R5,Z3MOV R1,#30HDJNZR6,Z2 BBB:MOV A,@R1DJNZR7,Z1MOVC A,@A+DPTRRETMOV SBUF,A ;***** 闹铃 / 闪烁子程序MM:PUSH PSWPUSH ACCINC R1 DJNZ R2,BBB RET ;** 烁显示子程序 ***CCC: MOV R2,#6 MOV R1,#36H DDD: MOV A,@R1 MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R1 DJNZ R2,DDDRETDB98H,18H,0D3H,10H,90H,0FFHDELAY10:MOV R7,#0AHJNB TI,$ CLR TIMMM: CLR P1.7CLR P1.6CLR P1.5 CLR P1.4 SETB P1.7 SETB P1.6 SETB P1.5 SETB P1.4ACALL DELAY10 POP ACC POP PSWRET;***** 10 毫秒延时子程序 ****** TAB:DB 11H,0D7H,32H,92H,0D4HEND ACALL DELAY10。