二、设计思路
电路设计
1.电源部分:使用BATTERY为整个电路提供电源,可以在电路中加入一个电 源开关,以便控制电源的开启和关闭。
2.处理器部分:使用AT89C51芯片作为主处理器,通过编写程序实现门锁的 控制。AT89C51芯片具有丰富的I/O端口,可以方便地与外部器件进行通信。
3.按键输入部分:使用KEYPAD-SMALL实现按键输入。设计一个简单的矩阵 键盘,包括数字0-9、确认键、取消键和解锁键等。当用户按下相应的按键 时,处理器将接收按键输入并执行相应的操作。
4.显示部分:使用LM016L液晶显示屏显示当前门锁的状态和操作提示等信 息。处理器通过液晶驱动器与LM016L连接,控制显示的内容和方式。
5.电机驱动部分:使用L293D电机驱动芯片驱动MOTOR,实现门锁的开关操 作。处理器通过输出口连接L293D的输入引脚,控制电机的转动方向和速度。
#includetypedef unsigned char u8; typedef unsigned int u16; sbit RS = P3^0; sbit EN = P3^1; sbit IN1 = P3^2; sbit IN2 = P3^3; #define KEY P1 #define DIS P2 void delay_10us(u8 ten_us) { while(ten_us--); } u8 get_key() { u8 key_value = 16; KEY = 0xF7; if(KEY!=0xF7) { delay_10us(1000); switch(KEY) { case 0x77: key_value = '+';break; case 0xB7: key_value = '=';break; case 0xD7: key_value = '0';break; case 0xE7: key_value = 'c';break; } } while(KEY!=0xF7); KEY = 0xFB; if(KEY!=0xFB) { delay_10us(1000); switch(KEY) { case 0x7B: key_value = '-';break; case 0xBB: key_value = '3';break; case 0xDB: key_value = '2';break; case 0xEB: key_value = '1';break; } } while(KEY!=0xFB); KEY = 0xFD; if(KEY!=0xFD) { delay_10us(1000); switch(KEY) { case 0x7D: key_value = 'x';break; case 0xBD: key_value = '6';break; case 0xDD: key_value = '5';break; case 0xED: key_value = '4';break; } } while(KEY!=0xFD); KEY = 0xFE; if(KEY!=0xFE) { delay_10us(1000); switch(KEY) { case 0x7E: key_value = '/';break; case 0xBE: key_value = '9';break; case 0xDE: key_value = '8';break; case 0xEE: key_value = '7';break; } } while(KEY!=0xFE); return key_value; } void delay(int n) { int i,j; for(i=0;i ') { lcd_data(*ptr); ptr++; } } void main() { u8 key_value; char password[4] = "7163"; u8 res=0; u8 i=0; lcd_cmd(0x01); //clear screen lcd_cmd(0x0E); //Display On, Cursor Blinking lcd_cmd(0x38); //2 lines and 5*7 matrix lcd_cmd(0x80); //Force Cursor to beginning of first display("PASSWORD:"); lcd_cmd(0xC0); display("---- "); lcd_cmd(0xC0); while(1) { key_value = get_key(); if(key_value<='9'&&key_value>='0') { lcd_data(key_value); if(password[i]==key_value)res++; i++; if(i==4){ lcd_cmd(0xC0); if(res==4){ display("CORRECT"); IN1=1; IN2=0; } else{ display("INCORRECT"); } i=0; res=0; } }else if(key_value=='c') { lcd_cmd(0xC0); display("---- "); lcd_cmd(0xC0); IN1=0; IN2=0; } } } 免费网页制作app 专业网站设计推荐亿企邦 中国制造网外贸站 怎么建立一个微信公众号 上海十大网站建设 小程序免费制作平台