資源簡介
電子密碼鎖課程設計,本系統由AT89S51單片機系統(主要是AT89S51單片機最小系統)、4×4矩陣鍵盤、LCD1602顯示和報警系統等組成,具有設置、修改六位用戶密碼、超次報警、超次鎖定、密碼錯誤報警等功能(本設計由P0口控制LCD顯示,密碼正確顯示password ok! 密碼錯誤顯示password error!超過三次輸入錯誤自動鎖定。由P1口控制矩陣鍵盤含有0-9數字鍵和A-F功能鍵。)。除上述基本的密碼鎖功能外,依據實際的情況還可以添加遙控功能。
代碼片段和文件信息
//包含頭文件
#include?
#include
//宏定義
#define?LCM_Data??P0 ??//將P0口定義為LCM_Data
#define?uchar?unsigned?char?
#define?uint??unsigned?int
//1602的控制腳
sbit?lcd1602_rs=P2^5;
sbit?lcd1602_rw=P2^6;
sbit?lcd1602_en=P2^7;
sbit?Scl=P3^4; //24C02串行時鐘
sbit?Sda=P3^5; //24C02串行數據
sbit?ALAM?=?P2^1; //報警
sbit?KEY?=?P3^6; //開鎖
bit??pass=0; //密碼正確標志
bit??ReInputEn=0; //重置輸入允許標志
bit??s3_keydown=0; //3秒按鍵標志位
bit??key_disable=0; //鎖定鍵盤標志
unsigned?char?countt0second; //t0中斷計數器秒計數器
void?Delay5Ms(void); //聲明延時函數
unsigned?char?code?a[]={0xFE0xFD0xFB0xF7};? //控盤掃描控制表
//液晶顯示數據數組
unsigned?char?code?start_line[] =?{“password:???????“};
unsigned?char?code?name[]? ? =?{“===Coded?Lock===“}; //顯示名稱
unsigned?char?code?Correct[]? =?{“?????correct????“}; //輸入正確
unsigned?char?code?Error[]??? =?{“??????error?????“};?? //輸入錯誤
unsigned?char?code?codepass[] =?{“??????pass??????“};?
unsigned?char?code?LockOpen[] =?{“??????open??????“}; //OPEN
unsigned?char?code?SetNew[]? =?{“SetNewWordEnable“};
unsigned?char?code?Input[]??? =?{“input:??????????“}; //INPUT
unsigned?char?code?ResetOK[]? =?{“ResetPasswordOK?“};
unsigned?char?code?initword[] =?{“Init?password...“};
unsigned?char?code?Er_try[] =?{“errortry?again!“};
unsigned?char?code?again[] =?{“input?again?????“};
unsigned?char?InputData[6]; //輸入密碼暫存區
unsigned?char?CurrentPassword[6]={000000};? //讀取EEPROM密碼暫存數組
unsigned?char?TempPassword[6];
unsigned?char?N=0; //密碼輸入位數記數
unsigned?char?ErrorCont; //錯誤次數計數
unsigned?char?CorrectCont; //正確輸入計數
unsigned?char?ReInputCont;? //重新輸入計數
unsigned?char?code?initpassword[6]={000000}; //輸入管理員密碼后將密碼初始為000000
unsigned?char?code?adminpassword[6]={131420}; //輸入管理員密碼后將密碼初始為000000
//=====================5ms延時==============================
void?Delay5Ms(void)
{
unsigned?int?TempCyc?=?5552;
while(TempCyc--);
}
//===================400ms延時==============================
void?Delay400Ms(void)
{
?unsigned?char?TempCycA?=?5;
?unsigned?int?TempCycB;
?while(TempCycA--)
?{
??TempCycB=7269;
??while(TempCycB--);
?}
}
//=============================================================================================
//================================24C02========================================================
//=============================================================================================
void?mDelay(uint?t)?//延時
{?
uchar?i;
??? while(t--)
??? {
??? for(i=0;i<125;i++)
??? {;}
??? }
}
???
void?Nop(void) ??//空操作
{
? _nop_(); ??//僅作延時用一條語句大約1us
? _nop_();
? _nop_();
? _nop_();
}
/*****24c02程序參照24c02時序圖*****/
/*起始條件*/
void?Start(void)
{
? Sda=1;
? Scl=1;
? Nop();
? Sda=0;
? Nop();
}
?/*停止條件*/
void?Stop(void)
{
? Sda=0;
? Scl=1;
? Nop();
? Sda=1;
? Nop();
}
/*應答位*/
void?Ack(void)
{
Sda=0;
Nop();
Scl=1;
Nop();
Scl=0;
}
/*反向應答位*/
void?NoAck(void)
{
? Sda=1;
? Nop();
? Scl=1;
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????262017??2014-04-09?23:59??1602資料\1602液晶說明.pdf
-----------?---------??----------?-----??----
???????????????262017????????????????????1
- 上一篇:編譯原理與技術第二版高清pdf含目錄
- 下一篇:Protel99se
評論
共有 條評論