資源簡介
含有protues圖和程序(全注釋,連變量都注釋)
要求: 1、在鎖開的狀態下輸入密碼,設置的密碼共4位,用數據開關K1~K10分別代表數字1、2、…、9、0,輸入的密碼用數碼管顯示,最后輸入的密碼顯示在最右邊的數碼管上,即每輸入一位數,密碼在數碼管上的顯示左移一位。可刪除輸入的數字,刪除的是最后輸入的數字,每刪除一位,密碼在數碼管的顯示右移一位,并在左邊空出的位上補充“0”。
2、用一位輸出電平的狀態代表鎖的開閉狀態,綠色發光管指示。
3、為保證密碼鎖主人能打開密碼鎖,設置一個萬能密碼,在主人忘記密碼時使用。

代碼片段和文件信息
/*******************************************************************************
================================================================================
【平????臺】STC89C51_sumjess平臺
【編????寫】sumjess
【E-mail??】1371129880@qq.com
【軟件版本】V2.0
【最后更新】2019年06月10日
【相關信息參考下列地址】
【網????站】
???????????https://blog.csdn.net/qq_38351824
???????????http://www.51hei.com/bbs/mcu-2-1.html
---------------------------------------------------------------------------------
【dev.env.】MDK4.02及以上版本
【Target??】STC89C51
第一次修訂:2019/05/09
第二次修訂:2019/05/21
第三次修訂:2019/06/10
【problem?】
????(1)庫內補充的不全面;
????(2)庫內解釋部分不全面;
????(3)庫內還存在一定的bug;
【direction】
??????下一步的目標就是把庫繼續集成!
【explain?】
??????為了方便使用,我也自己寫了很多的庫,和優化了算法和表示方式!
【warning】
??????目前程序中暫無錯誤?!???
---------------------------------------------------------------------------------
沒有完美的代碼,只有不斷的奉獻,大家一起努力;
贈人玫瑰手留余香,歡迎大家反饋bug!
================================================================================
********************************************************************************/
#include
#include
#define?uchar?unsigned?char?
#define?uint??unsigned?int
?
sbit?beep=P2^4;//蜂鳴器接口
sbit?D1=P2^2;??//開鎖信號
sbit?k1=P3^2;??//恢復初始密碼按鍵
sbit?RS=P2^7;??//數據命令選擇?
sbit?RW=P2^6;??//讀寫控制
sbit?E=P2^5;???//液晶使能?
sbit?SDA=P2^1;?//數據線接口
sbit?SCL=P2^0;?//時鐘線接口?
?
uchar?idata?table1[6]={123456};?//初始密碼
uchar?dd;?
uchar?aa;//存放密碼錯誤的次數,夠三次報警
uchar?bb;
uchar?cc;
//延時子函數
void?delay1(uint?z)
{
uint?xy;
for(x=0;x for(y=0;y<110;y++);
}
void?delay2()?
{
;;
}
//總線初始化子函數
void?i2cinit()
{
SDA=1;
delay2();
SCL=1;
delay2();
}
//啟動信號子函數
void?start()
{
SDA=1;
SCL=1;
delay2();
SDA=0;
delay2();
}
//停止信號子函數
void?stop()
{
SDA=0;
delay2();
SCL=1;
delay2();
SDA=1;
delay2();
}
//應答信號子函數
void?respons()
{
uchar?i=0;
SCL=1;
delay2();
while(SDA==1&&i<255)//等待應答,過一段時間不應答退出循環
i++;
SCL=0;
delay2();
}
//寫一個字節子函數
void?writebyte(uchar?date)
{
uchar?itemp;
temp=date;
for(i=0;i<8;i++)
{
temp<<=1;//temp左移一位后高位進CY
SCL=0;
delay2();
SDA=CY;
delay2();
SCL=1;
delay2();
}
SCL=0;//應答信號中SCL?=?1,所以這里要置0
delay2();
SDA=1;//用完要釋放數據總線
delay2();
}
//讀一個字節子函數
uchar?readbyte()?
{
uchar?ik;
SCL=0;
delay2();
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
delay2();
k=(k<<1)|SDA;?//和最低位或,一位位送到K
SCL=0;
delay2();
}
delay2();
return?k;
}
//向地址寫一個字節數據子函數
void?write_add(uchar?addressuchar?date)
{
start();
writebyte(0xa0);//A0A1A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
respons();
writebyte(address);
respons();
writebyte(date);
respons();
stop();
}
//向地址讀一個字節數據子函數
uchar?read_add(uchar?address)
{
uchar?date;
start();
writebyte(0xa0);//A0A1A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
respons();
writebyte(address);
respons();
start();
writebyte(0xa1);//A0A1A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
respons();
date=readbyte();
stop()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-07-22?22:33??課程設計題十二:電子密碼鎖\
?????目錄???????????0??2019-07-23?10:11??課程設計題十二:電子密碼鎖\Sum_Stc51\
?????文件????????6376??2009-05-07?14:37??課程設計題十二:電子密碼鎖\Sum_Stc51\STARTUP.A51
?????文件???????14049??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\STARTUP.LST
?????文件?????????749??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\STARTUP.OBJ
?????文件???????32226??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock
?????文件???????42187??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.LST
?????文件???????47206??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.M51
?????文件???????38482??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.OBJ
?????文件???????15990??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.c
?????文件????????9544??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.hex
?????文件??????????49??2019-07-23?10:10??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.lnp
?????文件????????1581??2019-07-23?10:11??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.plg
?????文件???????64915??2019-07-23?10:11??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.uvopt
?????文件???????13408??2019-07-22?22:32??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock.uvproj
?????文件???????64915??2019-07-22?22:32??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock_uvopt.bak
?????文件???????????0??2019-07-22?22:27??課程設計題十二:電子密碼鎖\Sum_Stc51\Sum_lock_uvproj.bak
?????目錄???????????0??2019-07-23?10:16??課程設計題十二:電子密碼鎖\仿真圖\
?????文件???????26309??2019-07-23?10:16??課程設計題十二:電子密碼鎖\仿真圖\Backup?Of?Sum_lock.pdsbak
?????文件???????25541??2019-07-22?22:35??課程設計題十二:電子密碼鎖\仿真圖\Last?Loaded?Sum_lock.pdsbak
?????文件??????135024??2016-06-26?12:17??課程設計題十二:電子密碼鎖\仿真圖\Sum_lock.DSN
?????文件???????26309??2019-07-23?10:16??課程設計題十二:電子密碼鎖\仿真圖\Sum_lock.pdsprj
?????文件????????2625??2019-07-23?10:16??課程設計題十二:電子密碼鎖\仿真圖\Sum_lock.pdsprj.DESKTOP-37880EN.別想打開!.workspace
評論
共有 條評論