基于红外远程遥控的自动开门系统_第1页
基于红外远程遥控的自动开门系统_第2页
基于红外远程遥控的自动开门系统_第3页
基于红外远程遥控的自动开门系统_第4页
基于红外远程遥控的自动开门系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、电子设计大赛之“duang片机,给生活加特技”题目:基于红外远程遥控的自动开门系统 队伍:君不见成员:杨胤哲、侯宏鸿、杨佳骆 目录一、选题背景二、方案论证(设计理念)2.1设计题目要求2.2方案设计三、过程论述3.1核心单片机原理3.2外接部分原理四、结果分析五、总结附录基于红外远程遥控的自动开门系统一、选题背景华工北校宿舍的门是没有外置的门把的,每次同学来敲门,我们都要走到门口开门,非常麻烦,而且如果出门忘记带钥匙,由于外面没有门把,我们是不能从外面打开门的。本作品主要是运用红外遥控实现一个远程开门功能,当收到特定信号后单片机驱动电机实现开门、关门功能,并可以用遥控对系统进行锁定,并配合LC

2、D液晶屏、TFT触摸屏对密码进行修改。在解锁状态下也可以使用触摸屏输入密码实现开门功能。主要需要实现的是红外模拟信号转化为二进制数字信号、断电记忆电路的设计、单片机休眠模式的使用、LCD液晶屏及TFT触摸屏电路的设计等等。二、方案论证(设计理念)2.1设计赛题要求设计制作一个基于红外遥控的开门装置,收到特定信号时实现特定的功能。要求:(1)收到一定规律的信号后,进入解锁状态,并对外接模块供电,此时按下特定的键时,进行“开关门”、“锁定”、并配合外接模块进行“修改密码”等操作。(2)在(1)的基础上,在解锁状态下,还可以通过外接模块的触摸屏输入密码来进行“开关门”操作。当密码输错误一定次数时,通

3、过无线模块报警。(3)断电之后,密码不会丢失;长时间不用时,外接模块断电,系统进入省电模式,通过遥控进行唤醒。2.2方案设计2.2.1设计思路赛题要求设计一个基于红外遥控的开门装置,通过单片机将红外信号转化为二进制数字信号(密码及操作):核心部分:用一个单片机判断接收到的信号是否为设定的密码或操作指令。初始密码从EEPROM获取,并在修改密码后写入到EEPROM。当接收到的信号符合设定的信号时,执行相应的操作。当长时间无操作时,进入省电模式,此时可用遥控器唤醒。外接部分:用两个单片机分别驱动LCD液晶屏、TFT触摸屏,两单片机直接通过IO口实现信息单向传输,以此实现LCD显示触摸内容。其中一个

4、单片机通过杜邦线与核心部分单片机相连实现信息双向传输。当密码输出错误到一定次数时,通过PT2262PT2272芯片及433收发模块使蜂鸣器报警。2.2.2设计方案(1)、红外接收部分采用红外一体接收管及配有CR2025纽扣电池的红外遥控器实现,电路简单易于焊接,收发距离较远,信号稳定,体积较小,但需直接使用红外遥控成品,存在限制,且编程需严格依照解码协议;若使用PT2262-IR及PT2272实现,虽程序自由,但收发距离较近,且信号不稳定,按键少,体积较大。综上,采用红外一体接收管及配套遥控器实现。(2)、断电记忆部分使用EEPROM AT24C01实现,电路简单,体积较小,占用IO口数量少,

5、存储时间长,功耗低。(3)、报警提示部分使用有源蜂鸣器实现,易于驱动,声音较大,电路简单,体积较小。但声音频率单一,响度无法控制。(拓展部分)(4)、外接密码显示部分使用LCD1602液晶屏实现,使用简单,显示字符较多,显示清晰,电路相对简单。但体积较大,使用IO口较多,需使用另外一块单片机驱动。(5)、外接密码输入部分使用TFT触摸屏实现,显示自由,触摸灵敏度较高。但体积较大,使用IO口多达26个,需使用另外一块单片机驱动。三、过程论述3.1:核心单片机原理单片机最小系统:1.系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路 STC89C52单片机内部有一个用于构成振荡器的高增益

6、反相放大器。引脚XTAL1和XTAL2分别是放大器的输入端和输出端。放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C3和C4构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应选择陶瓷电容,电容值约为30pF。2.复位是由外部的复位电路来实现的。复位电路通常采用上电复位和按钮复位。本电路采用按钮复位。3.电源:由于使用STC89C52,本电路采用5V电源供电。红外接收:红外一体管连接外部中断引脚P3.2,

7、其原理如下:1.NEC协议:协议规定低位首先发送。一串信息首先发送9ms的AGC(自动增益控制)的高脉冲,接着发送4.5ms的起始低电平,接下来是发送四个字节的地址码和命令码,这四个字节分别为:地址码;地址码反码;命令码;命令码反码。如果一直按某一按键,一串信息也只能发送一次,一直按着,发送的则是以110ms为周期的重复码。其中需要注意的是:接收到的信号是跟发送信号正好反向的。在实际使用过程中,要注意接收与发射部分的不同。发射规律如下图:2.重复码:其格式是由9ms的AGC高电平和4.5ms的低电平及一个560us的高电平组成。3.逻辑1:是由560us的高电平和1.69ms的低电平组成的脉冲

8、表示。4.逻辑0:是由560us的高电平和565us的低电平组成的脉冲表示。5.外部中断采用下降沿的触发方式。红外发射:直接使用红外遥控器,电池为CR2025纽扣电池。声音提示模块:使用有源蜂鸣器进行声音提示,“哔哔”两声表示正确,较快的“哔哔哔哔”四声表示错误。1.有源蜂鸣器负极接PNP型三极管8550的E极,正极接电源。2.三极管8550的B极接单片机P2.0引脚,C极接地。3.当引脚P2.0输出低电平时,蜂鸣器响。外接部分:P0.0-P0.5用于两部分之间的通信,P0.6用于利用核心单片机控制外接部分工作的开始与停止。EEPROM断电记忆:使用EEPROM AT24C01。AT24C02

9、是一个2K位串行CMOS 的EEPROM,内部含有256个8位字节。休眠模式:通过对电源控制器及波特率选择寄存器(PCON)的有关设置来实现(PCON=0x02),当单片机进入休眠模式时,大部分硬件停止工作,功率降低,只有外部中断继续工作,故可使用外部中断对单片机进行唤醒(PCON=0)。写入过程如下:1、发送器件地址2、发送要写入AT24C02的内存地址3、发送要写入的数据读出过程如下:1、发送写入的器件地址2、发送要读的AT24C02的内存地址3、发送读出的器件地址4、读取数据 发送器件地址的格式高4位由器件本身决定,后3位由器件的接线方式决定,最后一位有读取或写入决定,1的时候是读,0的

10、时候是写。 3.2、外接部分原理 外接显示部分 使用LCD1602液晶屏,其接线原理图如下::VCC接正,GND接负,VO为对比度调节接口,通过滑动变阻器实现调节功能,RS为数据命令选择接口,RW为读写选择接口,E为使能信号端,P0为数据接口,BG VCCBG GND为背光源正负极。操作步骤:初始化写命令(RS=L)设置显示坐标写数据(RS=H)显示开/关及光标指令,如图:显示地址码,如图:发送0x80+响应的地址码,设置数据地址指针。当发送0x01指令时,清屏。外接输入部分使用TFT触摸屏,其接线原理图如下:GND为负,VCC为正,P25 P26 P27分别为读写控制 数据命令选择 片选接口

11、,P33 P34分别为读写控制 复位接口,P1 P0分别存放高8位 低8位数据,PEN T-CS DI CLK DO分别为检测触摸屏信号 片选 输入 时钟 输出接口。外接报警部分使用PT2262PT2272及433超再生收发模块收发报警信号,通过对相应的数据管脚输入高电平实现远距离报警功能,本作品因天线问题,不能实现较远距离发射。PT2262PT2272引脚图如下:四、结果分析电路采用5V电压供电,由移动电源提供。开始核心单片机处于锁定模式,由遥控器输入密码及确认键解锁,输入正确,蜂鸣器发出较慢的“哔哔”声,同时给外接模块供电,液晶屏及触摸屏开始工作;输入错误,蜂鸣器发出较快的“哔哔哔哔”声。

12、锁定模式下系统正常工作。进入解锁模式时,按下“开门”键,蜂鸣器发出较慢的“哔哔”声,电机开始工作;按下“密码修改”键,系统进入密码修改模式,液晶屏提示输入旧密码,从触摸屏正确输入后,提示输入新密码,输入后提示成功,此时密码修改为新密码;旧密码输入错误后,回到解锁模式;按下“锁定”键,外接模块断电,系统回到锁定模式,此时状态同上(若修改过密码则需输入新密码);当从外接触摸屏正确输入密码并按确认键后,蜂鸣器发出较慢的“哔哔”声,电机开始工作,当错误输入密码时,发出较快的“哔哔哔哔”声,当连续输错3次时,系统报警,等待数秒或遥控器输入确认键时,系统进入锁定模式。解锁状态下系统正常工作。当系统长时间没

13、接收到任何指令时,系统进入休眠模式,此时外接模块断电,当按下遥控器上任意键或按下特别的独立按键时,液晶屏及触摸屏开始工作,此时状态同上。休眠模式正常工作。当修改过密码后,若对系统重新供电或按下复位键后,输入新密码进入解锁模式。密码修改成功,EEPROM正常工作。五、总结为时两周的赛程就要结束了,此次比赛让我学到了很多知识:红外的解码原理及使用,单片机外部中断的原理及使用,单片机休眠模式的原理及使用,EEPROM的原理及使用,LCD1602液晶屏的原理及使用,TFT触摸屏的使用。并且在编写程序过程中,通过反复的调试,自己掌握了更多编程方面的技巧,硬件方面也通过反复的修改,最终实现了我们的预定计划

14、。虽然在实现过程中遇到过大量的问题,但通过自己的探索、网上的指导、视频的讲解,最后所有问题都能一一解决。但更重要的是,我们领悟到现代科技逐步向自动化,智能化的方向发展,我们在设计的过程中更应该注意人机结合技术的应用,让电路更好地为我们服务,更好地改变我们的生活方式。对于这次电设的不足之处,主要有一下两点:一、设计过程总体处在做一步看一步的过程,没有系统性的规划,在动手实践之前没有特别具体的计划,以至于在设计过程中容易出现比较低级的失误,降低效率。二、对专业的设计软件、部分硬件掌握不够,让许多比较不错的想法无法付出实践。但总体而言,这次电设我们分工明确,组员热情高昂,在一定程度上弥补的效率上的缺

15、陷,考虑到我们自身的水平与阅历的限制,对这次电设总体满意。最后,每一次的电设都能让我学到好多知识,并从其他队伍的作品中看到自己的不足,希望以后能有更多的比赛!附录:1、 核心单片机代码:#include<reg51.h>#include"i2c.h"unsigned char T_Code16=10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10;unsigned char R_Code16=10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10;unsigned char Pas

16、sword16=10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10;sbit C_1=P00;sbit C_2=P01;sbit C_3=P02;sbit C_4=P03;sbit C_5=P04;sbit C_6=P05;sbit U=P06;sbit IRIN=P32;sbit Beep=P20;sbit mo_1=P10;sbit mo_2=P11;unsigned char IrValue6;unsigned char Time;uchar q1=0; uchar flag=0;void IrInit();void DelayMs(unsig

17、ned int );void R_Beep();void W_Beep();void Mobile();unsigned char At24c02Read(unsigned char addr);void At24c02Write(unsigned char addr,unsigned char dat);unsigned int equal(unsigned char A,unsigned char B) ;unsigned int Connect(unsigned int a,unsigned int b,unsigned int c,unsigned int d);void main(v

18、oid) unsigned char i=0,I,k=0,m=0,n=0,c=0,t=3; int time=0,T=0; for(i=1;At24c02Read(2*i-1)<10 && At24c02Read(2*i-1)>=0 && i<=16;i+) R_Codei-1=At24c02Read(2*i-1); IrInit();/ R_Code0=1;R_Code1=2;R_Code2=3;/ P1=0x02; while(1) U=0;time+; if(time>20000) q1=0;time=0;t=3;PCON=0x02

19、; if (q1 > 0 && q1 <= 16 ) switch(IrValue2) case 22: Passwordq1-1=0;IrValue2=0; break;case 12: Passwordq1-1=1;IrValue2=0; break;case 24: Passwordq1-1=2;IrValue2=0; break;case 94: Passwordq1-1=3;IrValue2=0; break;case 8: Passwordq1-1=4;IrValue2=0; break;case 28: Passwordq1-1=5;IrValue2=

20、0; break;case 90: Passwordq1-1=6;IrValue2=0; break;case 66: Passwordq1-1=7;IrValue2=0; break;case 82: Passwordq1-1=8;IrValue2=0; break;case 74: Passwordq1-1=9;IrValue2=0; break;case 69: IrValue2=0; break; if (70 = IrValue2 ) if(equal(Password,R_Code) m=1;i=0;R_Beep(); else W_Beep(); q1=0; for (i=0;i

21、<16;i+) Passwordi=10; IrValue2=0;i=0;t=3;C_5=1;C_6=1;time=0; while(m) IrValue2=0; k=0;U=1; if(Connect(1,0,0,0) && i<16) T_Codei=1;i+;k=1;time=0;/写入密码1 if(Connect(0,1,0,0) && i<16) T_Codei=2;i+;k=1;time=0;/写入密码2 if(Connect(1,1,0,0) && i<16) T_Codei=3;i+;k=1;time=0;

22、/写入密码3 if(Connect(0,0,1,0) && i<16) T_Codei=4;i+;k=1;time=0;/写入密码4 if(Connect(1,0,1,0) && i<16) T_Codei=5;i+;k=1;time=0;/写入密码5 if(Connect(0,1,1,0) && i<16) T_Codei=6;i+;k=1;time=0;/写入密码6 if(Connect(1,1,1,0) && i<16) T_Codei=7;i+;k=1;time=0;/写入密码7 if(Connec

23、t(0,0,0,1) && i<16) T_Codei=8;i+;k=1;time=0;/写入密码8 if(Connect(1,0,0,1) && i<16) T_Codei=9;i+;k=1;time=0;/写入密码9 if(Connect(0,1,0,1) && i<16) T_Codei=0;i+;k=1;time=0;/写入密码0 if(Connect(1,1,0,1) && i>0) T_Code-i=10;k=1;time=0;/后撤 if(Connect(0,0,1,1) time=0; k=

24、1; if(equal(T_Code,R_Code) /检测密码是否正确 C_5=1;C_6=0;t=3;i=0;R_Beep();Mobile();DelayMs(1000); for(i=16;i>0;i-)T_Codei-1=10;C_5=1;C_6=1; /正确 else C_5=0;C_6=1;i=0;W_Beep();t-;DelayMs(1000);C_5=1;C_6=1; /不正确 while(!t) DelayMs(100); T+; if(IrValue2 = 70) C_5=1;C_6=0;t=3;T=0;DelayMs(1000);C_5=1;C_6=1;m=0;

25、 if(T>300) m=0;T=0;break; while(k) if(C_1=0 && C_2=0 && C_3=0 && C_4=0) break; if(71 = IrValue2) m=0;IrValue2=0;q1=0; if(68 = IrValue2) R_Beep();Mobile();IrValue2=0; if(64 = IrValue2) n=1;C_5=0;C_6=0;i=0;IrValue2=0;DelayMs(1000);C_5=1;C_6=1; if(time>20000) i=0;U=0;t=3;t

26、ime=0;PCON=0x02; time+; while(n) k=0; if(Connect(1,0,0,0) && i<16) T_Codei=1;i+;k=1;/写入密码1 if(Connect(0,1,0,0) && i<16) T_Codei=2;i+;k=1;/写入密码2 if(Connect(1,1,0,0) && i<16) T_Codei=3;i+;k=1;/写入密码3 if(Connect(0,0,1,0) && i<16) T_Codei=4;i+;k=1;/写入密码4 if(Con

27、nect(1,0,1,0) && i<16) T_Codei=5;i+;k=1;/写入密码5 if(Connect(0,1,1,0) && i<16) T_Codei=6;i+;k=1;/写入密码6 if(Connect(1,1,1,0) && i<16) T_Codei=7;i+;k=1;/写入密码7 if(Connect(0,0,0,1) && i<16) T_Codei=8;i+;k=1;/写入密码8 if(Connect(1,0,0,1) && i<16) T_Codei=9;

28、i+;k=1;/写入密码9 if(Connect(0,1,0,1) && i<16) T_Codei=0;i+;k=1;/写入密码0 if(Connect(1,1,0,1) && i>0) T_Code-i=-1;k=1;/后撤 if(Connect(0,0,1,1) && c=0) if(equal(T_Code,R_Code) C_5=1;C_6=0;DelayMs(1000);C_5=1;C_6=1; c=1; i=0; else C_5=0;C_6=1; DelayMs(1000);C_5=1;C_6=1;for(i=16;i

29、>0;i-)T_Codei-1=10; i=0;c=0; n=0; if(Connect(0,0,1,1) && c) for(I=1;I<=i;I+) R_CodeI-1=T_CodeI-1;At24c02Write(2*I-1,R_CodeI-1);DelayMs(1000); for(n=i+1;n<=16;n+) At24c02Write(2*n-1,10);DelayMs(1000); C_5=1;C_6=0;DelayMs(1000);C_5=1;C_6=1; I-; i=0;n=0; DelayMs(5000); while(k) if(C_1=

30、0 && C_2=0 && C_3=0 && C_4=0) break; unsigned int equal(unsigned char A,unsigned char B) /检查密码 int j; for(j=0;j<16;j+) if(Aj!=Bj) return 0; return 1;unsigned int Connect(unsigned int a,unsigned int b,unsigned int c,unsigned int d) /检测传输信息 if(C_1=a && C_2=b &&am

31、p; C_3=c && C_4=d) return 1; else return 0;void DelayMs(unsigned int x) /延迟unsigned char i;while(x-)for (i = 0; i<13; i+)void IrInit() /红外初始IT0=1;IT1=1;EX0=1;EX1=1;EA=1;IRIN=1;void R_Beep() / 蜂鸣器“滴滴”Beep=0;DelayMs(2000);Beep=1;DelayMs(2000);Beep=0;DelayMs(2000);Beep=1;void W_Beep() / 蜂鸣器“

32、滴滴滴滴” Beep=0;DelayMs(500);Beep=1;DelayMs(500);Beep=0;DelayMs(500);Beep=1;DelayMs(500);Beep=0;DelayMs(500);Beep=1;DelayMs(500);Beep=0;DelayMs(500);Beep=1;void Mobile() /马达转动,开关门 mo_1=1;mo_2=0;DelayMs(5000);mo_1=1;mo_2=0;DelayMs(5000);mo_1=0;mo_2=0;void At24c02Write(unsigned char addr,unsigned char da

33、t)I2C_Start();I2C_SendByte(0xa0, 1);I2C_SendByte(addr, 1);I2C_SendByte(dat, 0);I2C_Stop();unsigned char At24c02Read(unsigned char addr)unsigned char num;I2C_Start();I2C_SendByte(0xa0, 1);I2C_SendByte(addr, 1);I2C_Start();I2C_SendByte(0xa1, 1); num=I2C_ReadByte(); I2C_Stop();return num; void ReadIr()

34、 interrupt 0unsigned char j,k;unsigned int err;PCON=0;Time=0; DelayMs(70);if(IRIN=0)/确认是否真的接收到正确的信号 err=1000;/1000*10us=10ms,超过说明接收到错误的信号/*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时侯,程序死在这里*/while(IRIN=0)&&(err>0)/等待前面9ms的低电平过去 DelayMs(1);err-; if(IRIN=1)/如果正确等到9ms低电平err=500;while(IRIN=1)&

35、&(err>0) /等待4.5ms的起始高电平过去DelayMs(1);err-;for(k=0;k<4;k+)/共有4组数据for(j=0;j<8;j+)/接收一组数据err=60;while(IRIN=0)&&(err>0)/等待信号前面的560us低电平过去DelayMs(1);err-;err=500;while(IRIN=1)&&(err>0) /计算高电平的时间长度。DelayMs(1);/0.14msTime+;err-;if(Time>30)EX0=1;return;IrValuek>>=1

36、; /k表示第几组数据if(Time>=8)/如果高电平出现大于565us,那么是1IrValuek|=0x80;Time=0;/用完时间要重新赋值if(IrValue2!=IrValue3)return;else q1+;void awake() interrupt 2 PCON=0; 2、 LCD单片机代码#include<reg51.h>#include"lcd.h"void connect(unsigned int a,unsigned int b,unsigned int c,unsigned int d);void DelayMs(unsign

37、ed int x);sbit C_1=P20;sbit C_2=P21;sbit C_3=P22;sbit C_4=P23;sbit C_5=P24;sbit C_6=P25;sbit IO_1=P37;sbit IO_2=P36;sbit IO_3=P35;sbit IO_4=P34;sbit IO_5=P33;sbit IO_6=P32;sbit Beep=P13;/-定义全局变量-/unsigned char PuZh="Enter the code:"unsigned char Right="The code is right" ;unsigne

38、d char Wrong="The code is wrong " ;unsigned char Chance=" chance"unsigned char Warning="Warning!"unsigned char Old="Enter the old:"unsigned char New="Enter the new:"unsigned char Success="Success!"void main(void)unsigned char i,k=0,r=0,t=&#

39、39;3',c;int j=0;LcdInit();C_1=0;C_2=0;C_3=0;C_4=0;while(1) Beep=0; if(r=0) LcdWriteCom(0x0f); LcdWriteCom(0x01); LcdWriteCom(0x80); for(i=0;i<15;i+) LcdWriteData(PuZhi); LcdWriteCom(0xC0); r=1; k=0; if(IO_1=1 && IO_2=0 && IO_3=0 && IO_4=0 && j<16) LcdWriteDa

40、ta('1');j+;k=1;connect(1,0,0,0); /写“1”,传输数据1 if(IO_1=0 && IO_2=1 && IO_3=0 && IO_4=0 && j<16)LcdWriteData('2');j+;k=1;connect(0,1,0,0); /写“2”,传输数据2if(IO_1=1 && IO_2=1 && IO_3=0 && IO_4=0 && j<16)LcdWriteData('3

41、');j+;k=1;connect(1,1,0,0); /写“3”,传输数据3if(IO_1=0 && IO_2=0 && IO_3=1 && IO_4=0 && j<16)LcdWriteData('4');j+;k=1;connect(0,0,1,0); /写“4”,传输数据4if(IO_1=1 && IO_2=0 && IO_3=1 && IO_4=0 && j<16)LcdWriteData('5');j+;

42、k=1;connect(1,0,1,0); /写“5”,传输数据5if(IO_1=0 && IO_2=1 && IO_3=1 && IO_4=0 && j<16)LcdWriteData('6');j+;k=1;connect(0,1,1,0); /写“6”,传输数据6if(IO_1=1 && IO_2=1 && IO_3=1 && IO_4=0 && j<16)LcdWriteData('7');j+;k=1;connec

43、t(1,1,1,0); /写“7”,传输数据7if(IO_1=0 && IO_2=0 && IO_3=0 && IO_4=1 && j<16)LcdWriteData('8');j+;k=1;connect(0,0,0,1); /写“8”,传输数据8if(IO_1=1 && IO_2=0 && IO_3=0 && IO_4=1 && j<16)LcdWriteData('9');j+;k=1;connect(1,0,0,1)

44、; /写“9”,传输数据9if(IO_1=0 && IO_2=1 && IO_3=0 && IO_4=1 && j<16)LcdWriteData('0');j+;k=1;connect(0,1,0,1); /写“0”,传输数据10if(IO_6=1 && IO_5=0 && j>0) LcdWriteCom(0x04);LcdWriteData(' ');LcdWriteCom(0x06);LcdWriteData(' ');LcdWri

45、teCom(0x04);LcdWriteData(' ');LcdWriteCom(0x06);j-;k=1;connect(1,1,0,1); /后撤,传输数据11if(IO_6=0 && IO_5=1) LcdWriteCom(0x01);LcdWriteCom(0x80);LcdWriteCom(0x0C); k=1; connect(0,0,1,1); /传输数据12if(C_5=1 && C_6=0) r=0; for(i=0;i<17;i+) if(i=12) LcdWriteCom(0xC0); LcdWriteData(Ri

46、ghti); /输出 密码正确 t='3' DelayMs(16000); if(C_5=0 && C_6=1) t-; r=0; for(i=0;i<20 && (t-'0');i+) if(i=12) LcdWriteCom(0xC0); LcdWriteData(Wrongi); /输出 密码错误 for(i=0;i<8 && (t-'0');i+) if(!i) LcdWriteData(t); else LcdWriteData(Chancei-1); if(!(t-'

47、0') Beep=1; LcdWriteCom(0xC0); for(i=0;i<10;i+) LcdWriteData(Warningi); while(!(t-'0') if(C_5=1 && C_6=0) t='3' DelayMs(1000); if(C_5=0 && C_6=0)LcdWriteCom(0x01); LcdWriteCom(0x80); for(i=0;i<14;i+) LcdWriteData(Oldi);j=0;c=0;LcdWriteCom(0xC0);while(1) k=0;

48、 if(IO_1=1 && IO_2=0 && IO_3=0 && IO_4=0 && j<16) LcdWriteData('1');j+;k=1;connect(1,0,0,0); /写“1”,传输数据1 if(IO_1=0 && IO_2=1 && IO_3=0 && IO_4=0 && j<16) LcdWriteData('2');j+;k=1;connect(0,1,0,0); /写“2”,传输数据2 if(IO_1=1 && IO_2=1 && IO_3=0 && IO_4=0 && j<16) Lcd

温馨提示

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

评论

0/150

提交评论