《管理信息化智能家居远程控制系统源程序》由会员分享,可在线阅读,更多相关《管理信息化智能家居远程控制系统源程序(38页珍藏版)》请在金锄头文库上搜索。
1、智能家居远程控制系统刘庆宇;*; Filename: BSHB_1_0_2.ASM ; MCU: AT89S52 OSC:6.0000MHz; IC: MT8870 ISD4002 LM386 74LS04 ULN2803 24C02; Display: LED*4; Build by: Liu Qing Yu ; Vision : V1.0.2; Date:2008-06-13 ;*;功能:利用电话线路,远程控制4组继电器的通断,控制电饭煲、电;暖风等家用电器。可以设定延时通断。恢复出厂设置时按住设;置按键按复位键即可恢复默认密码123456; 默认开关状态为:关,延时为:无;如需改变等待振
2、铃次数,请搜索“振铃检测程序”并进行修改。; ;寄存器组使用:;00:主程序;01:显示子程序;*; 输入输出引脚定义;*;MT8870: 数据P0.0P0.3MT_IN EQU P1 ;STD_INT0;ISD4002:;ISDINT_INT1MOSI BIT P0.4SS BIT P0.5SCLK BIT P0.6;HD7279:DAT BIT P2.4CS BIT P3.5CLK BIT P3.6;24C02:SCL BIT P1.6SDA BIT P1.7;继电器(摘机电路):JDQK BIT P1.4 ;低电平有效;继电器1(控制高压)JDQ0_DFB BIT P0.0 ;电饭煲JD
3、Q1_DNFBIT P0.1 ;电暖风JDQ2_KTBIT P0.2 ;空调JDQ3_RSHBIT P0.3 ;电热水器;延时指示灯:(低电平有效)LED0BIT P2.0LED1BIT P2.1LED2BIT P2.2LED3BIT P2.3;振铃检测ZHENLJC BIT P1.5HUIFUBITP0.7;恢复出厂设置按键,默认密码123456,默认开关状态为:关,延时为:无;0=恢复出厂设置1=不恢复;使用时按住此按键按复位键即可 ;*; 变量定义;*;工作状态寄存(00-07)GZZHTEQU 20HYSH0_KGBIT 00H;延时状态, 1=开启 0=关闭YSH1_KGBIT 01
4、HYSH2_KG BIT 02HYSH3_KG BIT 03HMIMABIT 04H;GZZHT.1 密码状态,是否已经输入错误一次 1=是 0=否STDBIT 05H ;有新数据输入 1=有0=无XINMIMABIT 06H;新密码校验位,校验两次输入密码是否一致1=不一致 0=一致ZHL6CBIT 07H;振铃次数已够,可以摘机1=可以 0=不可以;工作状态寄存2(08-0F)GZZHT2EQU 21H;位寻址寄存 21H;NOINPUTBIT 08H;10秒没有新数据输入,自动挂机。 1=可以挂机 0=不可以IS15SBIT 09H;DEC_ONBIT 0AH;是否显示小数点:1=显示
5、0=不显示ISDINTBIT 0BH;4002中断置位标志OUT_PLAYBIT 0CH;从播放进程中终止标志1=跳过后面的语音提示;JDQ0_YSHBIT 0AH; 继电器延时状态 1=开 0=关;JDQ1_YSHBIT 0BH;JDQ2_YSHBIT 0CH;JDQ3_YSHBIT 0DH;YANSHIBIT 05H ;GZZHT.2 延时 1=开启 0=关闭;YANSHIKGBIT 06H ;GZZHT.3 延时状态 1=延时开 0=延时关;YSH_OKBIT 0BH;延时数据已准备好,可以写入 1=可以 0=不可以M1EQU 22H;密码寄存(1-6)M2EQU 23HM3EQU 24
6、HM4EQU 25HM5EQU 26HM6EQU 27HDINGSHI EQU 28H;定时时间临时存储DATA_IN EQU 29H;HD7279输入输出缓存DATA_OUT EQU 2AHPLAY_ADDEQU 2BHBAK_A_T1EQU 2CHYSH0_TMEQU 30H ;延时时间寄存YSH1_TMEQU 31HYSH2_TMEQU 32HYSH3_TMEQU 33HOUT_BWEQU 34H;延时数据输出临时存储(用于显示)OUT_SHWEQU 35HOUT_GWEQU 36HMIMAJSHEQU 37H;【密码计数】对输入的密码个数进行计数;ZHENLINGEQU 31H;【振铃
7、计数】对振铃次数进行计数;TIMEMOOD EQU 29H;定时器模式:03=关,80=4096Hz,81=64Hz,82=1Hz,83=1/60HzMTEMPEQU 38H;记录密码输入错误次数TEMPEQU 39H;第一次输入新密码临时存储(3AH3FH)MT1EQU 3FHT0_TMPEQU 40H;T0临时存储,每隔0.0005秒加1T0_TMP_SEQU 41H;T0临时存储,每隔0.1S减1T0_TMP_MEQU 42H;T0临时存储,每隔0.5S减1BAK_AEQU 43H;中断期间A的备份BAK_R1EQU 44H;BAK_RS1EQU 45HBAK_RS0EQU 46HBAK
8、_A_SOUNDEQU 47HBAK_DPHEQU 48HBAK_DPLEQU 49H;延时数据临时存储YSH_BWEQU 4AHYSH_SHWEQU 4BHYSH_GWEQU 4CHADDRESSLEQU 4DH;ISD4002放音地址 低位PANDAHEQU 4EH;ISD4002放音地址 高位TEMP2EQU 4FH;密码临时存储TEMP3EQU 50H;T1中断检测临时存储TIMEEQU 51H;倒计时定时时间临时存储,长度1字节DISP_CHTEQU 52H;更换显示继电器倒计时时间计数DISP_CHEQU 53H;显示开关指示(1-4)YSH0_KG_1EQU 54H;延时状态,
9、1=开启 0=关闭YSH1_KG_1EQU 55HYSH2_KG_1 EQU 56HYSH3_KG_1 EQU 57HSOUND_OUT_BWEQU 58H;延时数据输出临时存储(用于剩余时间提示)SOUND_OUT_SHWEQU 59HSOUND_OUT_GWEQU 5AHZHL_CSHEQU 5BH;*; 主程序;*ORG0000HLJMPMAIN ORG0003HLJMPSTD_INORG 00BHLJMP T0STOPORG 0013HLJMP INT1_STOPORG 001BHLJMPT1STOPORG0030H;全局初始化MAIN:MOVSP,#60H;堆栈MOVIE,#00H
10、;禁止所有中断LCALLLOAD;载入状态MOVMIMAJSH,#00HMOV DINGSHI,#00HMOV GZZHT,#00HMOV GZZHT2,#00HMOV T0_TMP,#200;T0临时存储,每隔0.0005秒加1MOV T0_TMP_S,#5;T0临时存储,每隔0.1S加1MOV T0_TMP_M,#120;T0临时存储,每隔1S加1MOV DISP_CHT,#4;更换显示继电器倒计时时间计数MOV DISP_CH,#1 ;显示开关指示(1-4)MOV TMOD,#02H;定时器0,方式2(8位自装载) MOV TH0,#06HMOV TL0,#06H;MOV IP,#000
11、00100B;设置外部中断1为高优先级中断SETB IT1;脉冲触发方式SETB ET0;允许T0中断SETB EA;允许中断SETB TR0;启动T0定时器SETB IT0;脉冲触发方式;SETB EX0CLR OUT_PLAY;使用寄存器组00CLRRS1CLRRS0LCALLDELAY_30msJNBHUIFU,HUIFU1;是否恢复出厂设置MAINLOOP:JB HUIFU,LP1LCALL DELAY_30MSJNB HUIFU,LP2LP1:CLR ZHL6C;清振铃6次标志位LCALL ZHENLING1;检测振铃JNB ZHL6C,MAINLOOP;振铃到6次,可以摘机LP2:LCALL ZHAIJI;振铃达到6次,摘机SJMPMAINLOOP;-;恢复出厂设置HUIFU1:JNB HUIFU,$MOV M6,#01HMOV M5,#02HMOV M4,#03HMOV M3,#04HMOV M2,#05HMOV M1,#06H