版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧城市建设中工业互联网平台的应用与发展
- 课题申报参考:教育元宇宙与生成式人工智能相结合的研究教育技术学的理论与方法研究
- 2025年个人一般货物买卖合同(4篇)
- 二零二五年度知识产权质押融资合同原告代理词4篇
- 2025年度珠宝行业专业展会组织与管理合同3篇
- 二零二五版木地板原材料采购与库存管理合同8篇
- 二零二五版生态修复项目工程建议书编制合同2篇
- 2025年现代学徒制校企合作教学资源共享协议3篇
- 2025版小区快递柜场地租赁与快递配送服务协议3篇
- 二零二五年度彩钢瓦屋顶安装施工服务协议3篇
- 四川省成都市武侯区2023-2024学年九年级上学期期末考试化学试题
- 初一到初三英语单词表2182个带音标打印版
- 2024年秋季人教版七年级上册生物全册教学课件(2024年秋季新版教材)
- 环境卫生学及消毒灭菌效果监测
- 2024年共青团入团积极分子考试题库(含答案)
- 碎屑岩油藏注水水质指标及分析方法
- 【S洲际酒店婚礼策划方案设计6800字(论文)】
- 铁路项目征地拆迁工作体会课件
- 医院死亡报告年终分析报告
- 中国教育史(第四版)全套教学课件
- 2023年11月英语二级笔译真题及答案(笔译实务)
评论
0/150
提交评论