《电子密码锁主程序》由会员分享,可在线阅读,更多相关《电子密码锁主程序(11页珍藏版)》请在金锄头文库上搜索。
1、#includereg51.h#includekey.h#include AT24C02.h#includeLCD_1602.h#define uchar unsigned char#define uint unsigned intsbit OUT2=P31;sbit OUT1=P30;sbit read_key1=P32;sbit read_key2=P13;uchar key_scan_en;uchar key_buf;/*/键扫描表 uchar code key_scan_tap4=0x10,0x20,0x40,0x80;uchar code Led_dsp_tap7=0xfe,0xfd
2、,0xfb,0xf7,0xef,0xdf,0xbf;/键码表*uchar codekey_tap16=0x4e,0x87,0x47,0x27,0x8b,0x4b,0x2b,0x8d,0x4d,0x2d,0x2e,0x8e,0x1e,0x1d,0x1b,0x17;uchar new_key;uchar old_key;uchar key_cont;uchar key;/*uchar input_cont;uchar input_cont2;uchar input_step;/*uchar password6;uchar input_password6;uchar input_password26
3、;char dsp_buf6;uchar open_en;uchar OUT_delay;uchar err_cont;uchar stop_delay;uchar set_flg;uchar input_time;struct key_flag unsigned password_in:1; unsigned keep:1; unsigned open:1; unsigned redly_keep:1; unsigned call_open:1; unsigned ID_OK:1; unsigned control_en:1; unsigned control_input:1;key_fla
4、g;struct key_flag2 unsigned power_key:1;key_flag2;/*extern uchar sec;extern uchar beef_cont;/*void key_control(void) uchar i;if(set_flg=0) if(open_en) if(key10)&(err_cont3)if(input_cont6)WRITE_ML(0x01);/ 清显示 dsp_bufinput_cont=*;lcd_dsp(0,0,input password,14);lcd_dsp(1,0,password:,9);input_passwordin
5、put_cont=key;input_cont+;lcd_dsp(1,9,dsp_buf,input_cont); elseif(key=10)/确定键if(input_cont=6)for(i=0;i0) WRITE_ML(0x01);/ 清显示 lcd_dsp(0,0,input password,14);lcd_dsp(1,0,password:,9);input_cont-;lcd_dsp(1,9,dsp_buf,input_cont); elseif(key=15)sec=0;input_time=0;set_flg=0;open_en=0;WRITE_ML(0x01);/ 清显示l
6、cd_dsp(0,4,Lockers,7);if(key=12) /开锁申请 WRITE_ML(0x01);/ 清显示 open_en=1;lcd_dsp(0,0,input password,14);lcd_dsp(1,0,password:,9);input_cont=0;sec=0; elseif(key=13)/修改密码 set_flg=1;open_en=0;input_cont=0;input_time=0;WRITE_ML(0x01);/ lcd_dsp(0,0,old password,12);lcd_dsp(1,0,password:,9);sec=0; elseif(key
7、=15)sec=0;input_time=0;set_flg=0;open_en=0;WRITE_ML(0x01);/ 清显示lcd_dsp(0,4,Lockers,7);elseif(input_time=0)if(key9)if(input_cont6)WRITE_ML(0x01);/ 清显示 dsp_bufinput_cont=*;lcd_dsp(0,0,old password,12);lcd_dsp(1,0,password:,9);input_passwordinput_cont=key;input_cont+;lcd_dsp(1,9,dsp_buf,input_cont); elseif(key=10) /input_time=1; if(input_cont=6) for(i=0;i6;i+)if(input_passwordi!=passwordi)beef_cont=0x03;if(err_cont=3)stop_delay=60;WRITE_ML(0x01);/ 清显示 lcd_dsp(0,0,old password,12);lcd_dsp(1,0,password:,9);input_cont=0;i=7;if(i=6)WRITE_ML(0x01);/ 清显示 lcd_dsp(0,0,1 new password,14);l