智能家居控制系统C程序_第1页
智能家居控制系统C程序_第2页
智能家居控制系统C程序_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、智能家居控制系统C程序日期:2010-03-03 来源:本站编辑作者:admin字体:大中小(投递新闻)include <>bit r_flag;enumeepromtypeM2401,M2402,M2404, M240& M2416, M2432, M2464, M2412& M24256;extern bitRW24XX(unsigned char *DataBuff, unsigned charByteQuantity, unsigned int Address,unsigned char ControlByte, enum eepromtype Eeprom

2、Type);sbit key = P2“0;bit key_flag;sbit dog = P0"7;sbit LED 二 P0“0;sbit TELA = P3飞;sbit TEL = P3V;sbit RING = P3"2;sbit switching 二P0,4;unsigned char mode;bit passwordflag;unsigned char passwordE6; unsigned char passwordtest6;void dims(unsigned int x);void reset(void);void open(void);*INTI

3、中断服务程序/*unsigned char ring_f1uctuation; unsigned char ring_count;bit ring_flag;void service_intO() interrupt 0 using 1if(ring_fluctuation<10)ring_fluctuation+;/* / /tl定时中断/* / unsigned char ring_dlsm;unsigned char ring_time;unsigned int ring_reset_time;unsigned char dlms_time;void timerl (void) i

4、nterrupt 3 using 0TH1二0x3c;TL1二OxbO;dlms_time+;if (ring_fluctuation>5)EX0=O;/INTl.OFF;ring_dlsm+;辻(ringdlsm=20) /等待一秒ring_dlsm=O;EXO=1;/INT1_ON;ringfluctuationO; ring_count+;/ 铃次数辻(ring_flag)/有效振铃if (ring_count=6)ring_count=7;mode=l;else/无效振铃if(ring_count>2)ringresetimeSOO;if (ring_count=2) !

5、(ring_count=l)ring_time+;if (ring_time=200)ring_flag=l;if (ring_count>0)&(ring_count6)LED=INTO;else if (passwordflag)LED=LED;if (ring_count>0)ring_reset_time+;if (ring_reset_time=1100) /55sreset 0;LED二0;dims(100);LED二1;dims(100);LED二0;dims(100);LED二1;dims(100);LED二0;dims(100);LED二1;dims(10

6、0);LED二0;dims(100);LED二1;dims(100);LED二0;dims(100);LED二1;dims(100);LED二0;dims(100);LED二switching;/* / /INTI中断服务程序/* /unsigned char DTMF;void service_intl0 interrupt 2 using 1EXI二0;DTMF二Pl;DTMF=DTMF»4;void main(void)TMOD二0x11;TH1二0x3c;TLl=0xb0;TRI二1;ET1二1;ITO二1;EXO二1;ITl=0;EXI二1;reset 0;EA二 0;r_

7、flag=RW24XX(password, 6, 0x0000, Oxal, M2402);/Rif(P2_0=0)dims (20);if(P2_0=0) ring_flag=l;mode=l; passwordflag=l;ring_count=7;ring_fluctuation=6; EA二 1;while (1)openO ; dog二、dog;switch(mode)case 0:;break;case 1:TEL二1;LED二0;/ dlms_time二0; ring_reset_time=0;whi.le (dlms_time<40)dims (1);TELA二TELA;

8、 ring_reset_time=0;LED二1;/TELA二0;mode+;DTMF二255;EXI二1;LED=switching; break;case 2:/passwordif(DTMF!=255)passwordtest L0=DTMF; 辻(INT1=1) dlmstimeO; while(dlms_time<2);if(INTl=l)DTMF二255; mode+; dlms_time=O;while(dlms_time<10) dims (2); TELATELA;EX1=1;TELA=O; break;case 3:/passwordif(DTMF!=255)p

9、as swordt e s t1=DTMF; 辻(INT1=1) dlms_time=O;while(dlms_time<2);if(INTl=l)DTMF二255; mode+; dlms_time=O;while(dlms_time<10) dims (2); TELA二'TELA;EXI二1; TELA二0;break;case 4:/password辻(DTMF!=255)passwordtest2=DTMF;辻(INT1=1) dlmstimeO; while(dlms_time<2);if(INTl=l)DTMF二255;mode+;dlms_time二0

10、;while(dlms_time<10) dims ; TELA=TELA; EXI二1;TELA二0;break;case 5:/passwordif(DTMF!=255)passwordtest3=DTMF;if (INT1=1)dlmstimeO; while(dlms_t ime<2);if(INTl=l)DTMF二255;mode+; dlms_time=0;while(dlms_time<10) dims ; TELATELA;EXI二1;TELA=O;break;case 6:/passwordif(DTMF!=255)passwordtest4=DTMF;if

11、(INTl=l)dlmstimeO;while(dlms_time<2);if(INTl=l)DTMF二255;mode+; dlms_time=O;while(dlms_time<10) dims ; TELATELA;EX1=1;TELA二0; break;case 7:/passwordif (DTMF!=255)passwordtest5二DTMF;if (INT1=1) dlms_time=O;while(dlms_time>2);if(INTl=l)DTMF二255;mode+;/EX1=1;break;case 8:if(pas swordf1ag=0)if(p

12、asswordtest0passwordEO)&(passwordtestl=passwordLl)&(passwordtest 2=password2)&(pas swordtest3二二password3_)&(passwordtest4password4)& (passwordtest 5 password 5)mode+;dlmstimeO;else reset 0;elsedlmsimeO;while (dlms_time<10)dims(2);TELA="TELA;TELA二0;password EO=passwordtest

13、0;passwordEl=passwordtest1;password2=passwordtest2;password3=passwordtest3;password4=passwordtest4;passwordE5=passwordtest5;EA=0;r_flag=RW24XX(password, 6, 0x0000,OxaO,M2402);/WEA=1;resetO ;break;case 9:wh订e(dlms_time<20)dlms(l);TELA="TELA;while (dlms_t ime<25)while (dlms_time<45)dims

14、(1);TELA二TELA;TELA二0;EXI二1;mode+;break;case 10:switch(DTMF)case 1:if (ring_reset_time<1050)dlms_time=0;switching=0;LED=0;while(dlms_time<10) while(dlms_time<20) dims ; TELA="TELA;while(dlms_time<30)while(dlms_time<40) dims ; TELATELA;TELA=0;DTMF二255;EX1=1;break;case 2:if (ring_re

15、set_time<1050) dlms_tinie二 0; switchingFl;LED=1;while(dlms_time<10)while(dlms_time<20)dims ;TELA二'TELA;while(dlms_time<30)while(dlms_time<40) dims ;TELA二'TELA;TELA=0;DTMF二255;EX1=1;break;case 12:reset 0;break;break;default:;void reset(void)TEL二0;TELA二0;ring_fluctuation=0;ring_

16、count=0; ring_flag=O; ring_dlsm=O; ringtimeO; dlms_time=O; ringresetimeO;key_flag=0; mode=0;EXI二1;DTMF=255;LED二switching; passwordflag=0; passwordtest.0 =255; passwordtest.11=255; passwordtest2=255; passwordtest3=255; passwordtest4=255; passwordtest5=255;void open(void)if (key=0) & (key_flag=0)

17、& (passwordflag=0) dlms_time=0;while(dlms_time<2);if(key=0)resetO ;key_flag=l;switching二 switching;LED二switching; dlms_time二0;if (key=l) & (dlms_time>10)keyflagO;void dims(unsigned int x)unsigned int i;whiJe (x>0)dog= dog;for (i=0;i<163;i+) ;/24cxx/CT APT/ / 1 All/enumeepromtypeM

18、2401,M2402,M2404, M240& M2416,M2432, M2464, M24128, M24256;/extern bitRW24XX(unsigned char*DataBuff, unsignedcharByteQuantity, unsigned int Address,/unsigned char ControlByte, enum eepromtype EepromType);flag=RW24XX(&x, 1, 0x0000, 0xa0, M24256);/W 24C256 flag=RW24XX(&x, 1, 0x0000, 0xal,M

19、24256);/R 24C256#include <>/pragma ot (6, SIZE)include <>#define ERRORCOUNT 10sbitSD A 二 P2" 7; / 对应硬件sbitSCL 二 P2"6;/对应硬件eepromtypeenum(M2401,M2402,M2404, M240& M2416, M2432, M2464, M24128, M24256;enum eepromtype EepromType;* */DataBuff为读写数据输入/输岀缓冲区的首址/ByteQuantity为要读写数据的字

20、节数量/Address为EEPROM的片内地址/ControlByte 为 EEPROM 的控制字节,具体形式为(1) (0) (1) (0) (A2) (Al) (AO) (R/W), 其中R/W=l,/表示读操作,R W二0为写操作,A2, Al, A0为EEPROM的页选或片选地址;/EepromType为枚举变疑,需为M2401至M24256中的一种,分别对应24C01至24C256; 函数返回值为一个位变疑,若返回1表示此次操作失效,0表示操作成功;/ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作, 并返回1/*/extern bitRW2

21、4XX(unsignedchar *DataBuff, unsigned charByteQuantity, unsigned int Address,unsigned char ControlByte, enum eepromtype EepromType)void Delajr(unsigned char DelayCount);void IlCStart (void);void IlCStop(void);bit IICRecAck(void);void IICNoAck(void);void IICAck(void);unsigned char IICReceiveByte(void)

22、;void IICSendByte (unsigned char sendbyte);unsigned char data j,i二ERRORCOUNT;biterrorflag=l;while(i)IlCStart 0;IICSendByte(ControlByte&Oxfe);if(IICRecAckO)continue;if (EepromType>M2416)IICSendByte(unsigned char) (Address»8); 辻(IICRecAckO)continue;IICSendByte(unsigned char)Address);if (II

23、CRecAckO)continue;if (!(ControlByte&OxOl)j=ByteQuantity; errorflag=0; while(j)IICSendByte(*DataBuff+); if(!IICRecAck() continue;errorflagl;break;if (errorflag=l)continue;break;elseIlCStart 0;IICSendByte(ControlByte);if (IICRecAckO)continue;while(-ByteQuantity)*Dat aBuff+=11CRe c e i v eByt e();I

24、ICAckO;*DataBuff=IICReceiveByte 0;IICNoAckO;errorflag=0;break;IlCStopO;if(!(ControlByte&OxOl)Delay(255);Delay(255);Delay(255);Delay(255);/*clr errorflag/read last byte datareturn(errorflag); 0QOU -()ldou -Eos Fas -OHns(PIOA)>pwfoII Mq-OHWS ()laou ()laou OIQOU EaS ()ldou ()laou ()laou -ms -OHVas -OHSS(p-HOA)dopsoII p-

温馨提示

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

最新文档

评论

0/150

提交评论