1.設(shè)計(jì)任務(wù)
利用AT89C51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)簡(jiǎn)易的電子密碼鎖,可設(shè)置四位密碼,輸入錯(cuò)誤三次,報(bào)警燈亮起(紅燈亮起),輸入正確,綠燈閃爍三次。可通過(guò)LCD顯示屏查看密碼,并可通過(guò)特殊鍵位清除密碼。
本系統(tǒng)由AT89C51單片機(jī)系統(tǒng)(主要是AT89C51單片機(jī)最小系統(tǒng))、4X4矩陣鍵盤、LCD1602顯示和報(bào)警系統(tǒng)等組成。
- 利用AT89C51單片機(jī)設(shè)計(jì)四位電子密碼鎖。
- 通過(guò)LCD顯示查看已輸入的密碼。
- 可通過(guò)特殊按鍵清除密碼。
- 密碼輸入正確后綠燈閃爍三次。
- 密碼輸錯(cuò)三次會(huì)有報(bào)警提示(報(bào)警紅燈亮起)。
2. 設(shè)計(jì)要求
2.1系統(tǒng)方案論證
根據(jù)設(shè)計(jì)任務(wù),分析設(shè)計(jì)系統(tǒng)的組成,給出實(shí)現(xiàn)設(shè)計(jì)任務(wù)的幾種方案,分析比較幾種設(shè)計(jì)方案的優(yōu)略,本著盡量以軟件代替硬件,同時(shí)力求電路簡(jiǎn)單,工作可靠的原則,確定總體設(shè)計(jì)方案。
2.2系統(tǒng)硬件電路設(shè)計(jì)
根據(jù)系統(tǒng)設(shè)計(jì)方案進(jìn)行軟、硬件的分配,軟、硬件設(shè)計(jì)分別進(jìn)行。硬件設(shè)計(jì)包括單片機(jī)最小系統(tǒng)和擴(kuò)展接口及配置,硬件結(jié)構(gòu)在設(shè)計(jì)時(shí)要選擇合適的元器件,硬件電路要簡(jiǎn)潔、工作可靠,需用Proteus繪制整個(gè)系統(tǒng)的電路仿真原理圖。
2.3軟件設(shè)計(jì)
根據(jù)該系統(tǒng)要求的功能進(jìn)行軟件設(shè)計(jì),簡(jiǎn)述軟件的功能,并根據(jù)每個(gè)模塊的功能繪制軟件流程圖,根據(jù)流程圖編寫程序并匯編調(diào)試通過(guò);列出軟件清單,軟件清單要求加以注釋。
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char N=0;
unsigned char KeyNum;
unsigned int Password,Count,Num_Val;
sbit Led_G = P2^0;
sbit Led_R = P2^1;
void main()
{
Led_G = 1;
Led_R = 1;
LCD_Init();
LCD_ShowString(1,1,"Password:");
while(1)
{
KeyNum=MatrixKey();
if(KeyNum)
{
if(KeyNum!=4&&KeyNum!=8&&KeyNum!=12&&KeyNum!=13&&KeyNum!=15&&KeyNum!=16) //如果S1~S10按鍵按下,輸入密碼
{
switch(KeyNum)
{
case 1: Num_Val=1;break;
case 2: Num_Val=2;break;
case 3: Num_Val=3;break;
case 5: Num_Val=4;break;
case 6: Num_Val=5;break;
case 7: Num_Val=6;break;
case 9: Num_Val=7;break;
case 10:Num_Val=8;break;
case 11:Num_Val=9;break;
case 14:Num_Val=0;break;
}
if(Count<4) //如果輸入次數(shù)小于4
{
Password=Password*10; //密碼左移一位
Password=Password+Num_Val%10; //獲取一位密碼
Count++; //計(jì)次加一
}
LCD_ShowNum(2,1,Password,4); //更新顯示
}
if(KeyNum==15) //如果S11按鍵按下,確認(rèn)
{
if(Password==2345) //如果密碼等于正確密碼
{
LCD_ShowString(1,14,"OK "); //顯示OK
Led_G = 0;
Delay(300);
Led_G = 1;
Delay(300);
Led_G = 0;
Delay(300);
Led_G = 1;
Delay(300);
Led_G = 0;
Delay(300);
Led_G = 1;
Delay(300);
Password=0; //密碼清零
Count=0; //計(jì)次清零
LCD_ShowNum(2,1,Password,4); //更新顯示
LCD_ShowString(1,14," ");
}
else //否則
{
N++;
if(N == 3)
{
Led_R=0;
Delay(2000);
Led_R=1;
N=0;
}
LCD_ShowString(1,14,"ERR"); //顯示ERR
Password=0; //密碼清零
Count=0; //計(jì)次清零
LCD_ShowNum(2,1,Password,4); //更新顯示
Delay(1000);
LCD_ShowString(1,14," ");
}
}
if(KeyNum==13) //如果S12按鍵按下,取消
{
Password=0; //密碼清零
Count=0; //計(jì)次清零
LCD_ShowNum(2,1,Password,4); //更新顯示
}
}
}
}
完整代碼點(diǎn)開鏈接私信獲取。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-781810.html
【iBot機(jī)器人工作室的個(gè)人空間-嗶哩嗶哩】 https://b23.tv/ryUWVKa文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-781810.html
到了這里,關(guān)于基于單片機(jī)的電子密碼鎖設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!