ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:17.99KB ,
资源ID:9926937      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9926937.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(智能家居控制系统C程序.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

智能家居控制系统C程序.docx

1、智能家居控制系统C程序智能家居控制系统C程序日期:2010-03-03 来源:本站编辑 作者:admin 字体:大 中 小 (投递新闻) #include bit r_flag; enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; extern bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, unsigned char ControlByte,enum eepromtype Eepr

2、omType); sbit key = P20; bit key_flag; sbit dog = P07; sbit LED = P00; sbit TELA = P36; sbit TEL = P37; sbit RING = P32; sbit switching =P04; unsigned char mode; bit passwordflag; unsigned char password6; unsigned char passwordtest6; void dlms(unsigned int x); void reset(void); void open(void); /* /

3、 / INT1中断服务程序 / /* / unsigned char ring_fluctuation; unsigned char ring_count; bit ring_flag; void service_int0() interrupt 0 using 1 if(ring_fluctuation5) EX0=0;/INT1_OFF; ring_dlsm+; if(ring_dlsm=20)/等待一秒 ring_dlsm=0; EX0=1;/INT1_ON; ring_fluctuation=0; ring_count+;/震铃次数 if(ring_flag)/有效振铃 if(ring

4、_count=6) ring_count=7; mode=1; else/无效振铃 if(ring_count2) ring_reset_time=800; if(ring_count=2)|(ring_count=1) ring_time+; if(ring_time=200) ring_flag=1; if(ring_count0)&(ring_count0) ring_reset_time+; if(ring_reset_time=1100)/55s reset(); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1;

5、 dlms(100); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=1; dlms(100); LED=0; dlms(100); LED=switching; /* / / INT1中断服务程序 / /* / unsigned char DTMF; void service_int1() interrupt 2 using 1 EX1=0; DTMF=P1; DTMF=DTMF4; void main(void) TMOD=0x11; TH1=0x3

6、c; TL1=0xb0; TR1=1; ET1=1; IT0=1; EX0=1; IT1=0; EX1=1; reset(); EA=0; r_flag=RW24XX(password,6,0x0000,0xa1,M2402);/R if(P2_0=0) dlms(20); if(P2_0=0) ring_flag=1; mode=1; passwordflag=1; ring_count=7; ring_fluctuation=6; EA=1; while(1) open(); dog=dog; switch(mode) case 0:; break; case 1: TEL=1; LED=

7、0;/ dlms_time=0; ring_reset_time=0; while(dlms_time40) dlms(1); TELA=TELA; ring_reset_time=0; LED=1;/ TELA=0; mode+; DTMF=255; EX1=1; LED=switching; break; case 2:/password if(DTMF!=255) passwordtest0=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlm

8、s_time10) dlms(2); TELA=TELA; EX1=1; TELA=0; break; case 3:/password if(DTMF!=255) passwordtest1=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; EX1=1; TELA=0; break; case 4:/password if(DTMF!=255) passwordtest2=DTMF; i

9、f(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; EX1=1; TELA=0; break; case 5:/password if(DTMF!=255) passwordtest3=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time10) dl

10、ms(2); TELA=TELA; EX1=1; TELA=0; break; case 6:/password if(DTMF!=255) passwordtest4=DTMF; if(INT1=1) dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; dlms_time=0; while(dlms_time2); if(INT1=1) DTMF=255; mode+; /EX1=1; break; case 8: if(passwordflag=0) if(passwordtest0=password0)&(passwor

11、dtest1=password1)&(passwordtest2=password2)&(passwordtest3=password3)&(passwordtest4=password4)&(passwordtest5=password5) mode+; dlms_time=0; else reset(); else dlms_time=0; while(dlms_time10) dlms(2); TELA=TELA; TELA=0; password0=passwordtest0; password1=passwordtest1; password2=passwordtest2; pass

12、word3=passwordtest3; password4=passwordtest4; password5=passwordtest5; EA=0; r_flag=RW24XX(password,6,0x0000,0xa0,M2402);/W EA=1; reset(); break; case 9: while(dlms_time20) dlms(1); TELA=TELA; while(dlms_time25) while(dlms_time45) dlms(1); TELA=TELA; TELA=0; EX1=1; mode+; break; case 10: switch(DTMF

13、) case 1: if(ring_reset_time1050) dlms_time=0; switching=0; LED=0; while(dlms_time10) while(dlms_time20) dlms(2); TELA=TELA; while(dlms_time30) while(dlms_time40) dlms(2); TELA=TELA; TELA=0; DTMF=255; EX1=1; break; case 2: if(ring_reset_time1050) dlms_time=0; switching=1; LED=1; while(dlms_time10) w

14、hile(dlms_time20) dlms(4); TELA=TELA; while(dlms_time30) while(dlms_time40) dlms(4); TELA=TELA; TELA=0; DTMF=255; EX1=1; break; case 12: reset(); break; break; /-/ default:; /-/ void reset(void) TEL=0; TELA=0; ring_fluctuation=0; ring_count=0; ring_flag=0; ring_dlsm=0; ring_time=0; dlms_time=0; ring

15、_reset_time=0; key_flag=0; mode=0; EX1=1; DTMF=255; LED=switching; passwordflag=0; passwordtest0=255; passwordtest1=255; passwordtest2=255; passwordtest3=255; passwordtest4=255; passwordtest5=255; void open(void) if(key=0)&(key_flag=0)&(passwordflag=0) dlms_time=0; while(dlms_time10) key_flag=0; voi

16、d dlms(unsigned int x) unsigned int i; while (x-0) dog=dog; for (i=0;i163;i+) ; /24cxx /-START-/ /enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; /extern bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, / unsigned char ControlByte,enum eepr

17、omtype EepromType); / flag=RW24XX(&x,1,0x0000,0xa0,M24256);/W 24C256 / flag=RW24XX(&x,1,0x0000,0xa1,M24256);/R 24C256 #include /#pragma ot(6,SIZE) #include #define ERRORCOUNT 10 sbit SDA=P27;/对应硬件 sbit SCL=P26;/对应硬件 enum eepromtype M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256; enum eeprom

18、type EepromType; /*/ /DataBuff为读写数据输入输出缓冲区的首址 /ByteQuantity 为要读写数据的字节数量 /Address 为EEPROM的片内地址 /ControlByte 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1, /表示读操作,R/W=0为写操作,A2,A1,A0为EEPROM的页选或片选地址; /EepromType为枚举变量,需为M2401至M24256中的一种,分别对应24C01至24C256; /函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功; /ERRO

19、RCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1 /*/ extern bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address, unsigned char ControlByte,enum eepromtype EepromType) void Delay(unsigned char DelayCount); void IICStart(void); void IICStop(void); bit IICRecAck(void); void

20、 IICNoAck(void); void IICAck(void); unsigned char IICReceiveByte(void); void IICSendByte(unsigned char sendbyte); unsigned char data j,i=ERRORCOUNT; bit errorflag=1; while(i-) IICStart(); IICSendByte(ControlByte&0xfe); if(IICRecAck() continue; if(EepromTypeM2416) IICSendByte(unsigned char)(Address8)

21、; if(IICRecAck() continue; IICSendByte(unsigned char)Address); if(IICRecAck() continue; if(!(ControlByte&0x01) j=ByteQuantity; errorflag=0; /*clr errorflag while(j-) IICSendByte(*DataBuff+); if(!IICRecAck() continue; errorflag=1; break; if(errorflag=1) continue; break; else IICStart(); IICSendByte(ControlByte); if(IICRecAck() continue; while(-ByteQuantity) *DataBuff+=IICReceiveByte(); IICAck()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1