門鎖控制電路
二、設計思路
電路設計
1.電源部分:使用BATTERY為整個電路提供電源,可以在電路中加入一個電 源開關(guān),以便控制電源的開啟和關(guān)閉。
2.處理器部分:使用AT89C51芯片作為主處理器,通過編寫程序?qū)崿F(xiàn)門鎖的 控制。AT89C51芯片具有豐富的I/O端口,可以方便地與外部器件進行通信。
3.按鍵輸入部分:使用KEYPAD-SMALL實現(xiàn)按鍵輸入。設計一個簡單的矩陣 鍵盤,包括數(shù)字0-9、確認鍵、取消鍵和解鎖鍵等。當用戶按下相應的按鍵 時,處理器將接收按鍵輸入并執(zhí)行相應的操作。
4.顯示部分:使用LM016L液晶顯示屏顯示當前門鎖的狀態(tài)和操作提示等信 息。處理器通過液晶驅(qū)動器與LM016L連接,控制顯示的內(nèi)容和方式。
5.電機驅(qū)動部分:使用L293D電機驅(qū)動芯片驅(qū)動MOTOR,實現(xiàn)門鎖的開關(guān)操 作。處理器通過輸出口連接L293D的輸入引腳,控制電機的轉(zhuǎn)動方向和速度。文章來源:http://www.zghlxwxcb.cn/news/detail-809191.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-809191.html
#include<reg51.h>
typedef 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<n;i++)
for(j=0;j<255;j++);
}
void lcd_cmd(char a)
{
DIS = a;
RS = 0;
EN = 1;
delay(10);
EN = 0;
}
void lcd_data(char a)
{
DIS = a;
RS = 1;
EN = 1;
delay(10);
EN = 0;
}
void display(char *ptr)
{
while(*ptr != '\0')
{
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;
}
}
}
到了這里,關(guān)于【51單片機Keil+Proteus8.9】門鎖控制電路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!