|
電子密碼鎖仿真程序都有
下面是proteus仿真原理圖:
0.png (27.93 KB, 下載次數: 37)
下載附件
2017-5-7 17:00 上傳
0.png (60.26 KB, 下載次數: 71)
下載附件
2017-5-7 16:59 上傳
單片機源程序:
- #include <reg52.H>
- #include<math.h>
- #include<stdio.h>
- #include<intrins.h>
- #include<string.h>
- #include "1602.h"
- #include "key4x4.h"
- #include "uart.h"
- sbit LOCK=P2^2; //鎖接P3.7; 低電平有效開鎖
- sbit ALARM=P2^3; //報警接P2.3
- unsigned char ShowAddr=0;
- #define WELCOME 0 //開機界面
- #define PW_PUT 1 //輸入密碼
- #define PW_ERROR 2 //密碼錯誤
- #define PW_OK 3 //密碼正確
- #define PW_SET 4 //密碼設定
- #define PW_SET_OK 5 //密碼設定成功
- #define MAX_ERROR_TIMES 3
- #define KEYBUFLEN 17
- char KeyBuf[KEYBUFLEN],KeyCnt=0;
- char KeyBuf1[KEYBUFLEN];
- char PW[KEYBUFLEN]="123456"; //密碼
- unsigned char Error_times;
- void LcdShow();
- void Timer0Init(void);
- void main()
- {
- unsigned char key_val; //顯示緩沖區
- LCD1602_Init() ; //液晶初始化
- CleanSreen();
- Timer0Init();
- UartInit();
- while(1)
- {
- key_val=KeyScan(); //查詢數據字是否按下
- if(RecFlag)
- {
- RecFlag=0;
- key_val=UartDat;
- }
- if(key_val>='0'&&key_val<='9'&&KeyCnt<KEYBUFLEN&&ShowAddr!=WELCOME)
- {
- KeyBuf1[KeyCnt]='*';
- KeyBuf[KeyCnt++]=key_val;
- }
- else if(key_val==CANCEL&&KeyCnt>0)
- {
- KeyCnt--;
- KeyBuf[KeyCnt]='\0';
- CleanSreen();
- }
- else if(key_val==PWSET)
- {
- ShowAddr=PW_SET;
- memset(KeyBuf,'\0',KEYBUFLEN);
- KeyCnt=0;
- CleanSreen();
- }
- else if(key_val==PWPUT)
- {
- ShowAddr=PW_PUT;
- memset(KeyBuf,'\0',KEYBUFLEN);
- KeyCnt=0;
- CleanSreen();
- }
- else if(key_val==OK) //確認鍵
- {
- switch(ShowAddr)
- {
- case PW_PUT: //密碼輸入
- if(strcmp(PW,KeyBuf)==0)
- {
- ShowAddr=PW_OK;
- ALARM=1; //取消報警
- CleanSreen();
- Error_times=0;
- }
- else
- {
- Error_times++;
- if(Error_times>MAX_ERROR_TIMES)
- ALARM=0; //報警
- ShowAddr=PW_ERROR;
- CleanSreen();
- }
- break;
- case PW_SET: //密碼設定
- {
- strcpy(PW,KeyBuf);
- ShowAddr=PW_SET_OK;
- CleanSreen();
- }
- break;
- }
- memset(KeyBuf,'\0',KEYBUFLEN);
- KeyCnt=0;
- }
- LcdShow();
- //Displaystr(0,1,KeyBuf); //顯示按鍵值
- Displaystr(0,1,KeyBuf1); //顯示按鍵值
- }
- }
- void Delay1ms() //@11.0592MHz
- {
- unsigned char i, j;
- _nop_();
- i = 2;
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
下載:
程序2.7z
(76.34 KB, 下載次數: 31)
2017-5-7 13:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|