[精品]基于单片机的数字密码锁设计毕业论文设计(4)

2019-01-05 12:12

附录A

系统主程序

#include\extern char waring_time_flag; uchar Passw_Right_Flag; 密码输入正确标志位 uchar Passw_right,Passw_wrong;

uchar Passw_Set_again; uchar Passw_Finish_Flag; uchar Pass_Save_Flag=1; uchar Clr_Screen_Flag=1;

void display_table() { data uchar k; write_com(0x80+1); for(k=0;k<12;k++) write_data(table[k]); }

void display_table1() { data uchar k; write_com(0x80+0x40+10); for(k=0;k<5;k++) write_data(table1[k]); }

void display_table2() 输入正确 { data uchar k; write_com(0x80+0x40+0); for(k=0;k<16;k++) write_data(table2[k]); }

void display_table3() 输入错误 { data uchar k; write_com(0x80+0x40+0); for(k=0;k<15;k++) write_data(table3[k]);

}

void display_table4() 错误警告 { uchar k; write_com(0x80+0x40+1); for(k=0;k<15;k++) write_data(table4[k]); }

void display_table5() 设置密码 { uchar k; write_com(0x01); write_com(0x80+1); for(k=0;k<13;k++) write_data(table5[k]); write_com(0x80+0x40); for(k=0;k<16;k++) write_data(tableempty[k]); }

void display_table6() 输入正确 { uchar k; write_com(0x80+0x40+0); for(k=0;k<16;k++) write_data(tableempty[k]); }

void display_table7() Set正确 { uchar k; write_com(0x80+0x40); for(k=0;k<16;k++) write_data(table6[k]); }

void Enter_password_try() { keynum=16; 初始化keynum keyscan(); 按键扫描 delay_us(3); if(keynum<10) {

write_com(0x80+0x40+1+address); write_data(0x30+keynum); address++; 输入8个数字 每次显示 password=password*10+keynum; if(address==8) { address=0; display_table1(); 确认sure? Passw_Enter_flag=1; 输入完成标志位置1 } } }

void Passw_save(long int p_s) { write_add(0x12,p_s16777216); 16777216 write_add(0x13,p_s77721665536); write_add(0x14,p_se536256); write_add(0x15,p_s%6); write_add(0x12,p_s1000000); write_add(0x13,p_s0000010000); write_add(0x14,p_s000100); write_add(0x15,p_s0); }

long int Passw_read(void) { long int save_num; uchar save_n1,save_n2,save_n3,save_n4; save_n1=read_add(0x12); save_n2=read_add(0x13); save_n3=read_add(0x14); save_n4=read_add(0x15); save_num=save_n1*16777216+save_n2*65536+save_n3*256+save_n4; return save_num; }

void Enter_password_memory()

{ keynum=16; 初始化keynum keyscan(); 按键扫描 delay_us(3); if(keynum>0&&keynum<9) { write_com(0x80+0x40+1+address); write_data(0x30+keynum); address++; 输入8个数字 每次显示 password_memory=password_memory*10+keynum; if(address==8) 密码输入完毕 { address=0; Passw_Set_again=1; 重新设置密码完成标志 display_table1(); Password_set_flag=0; } } }

void Init_All() { LCD_init(); Time_Init(); IIC_init(); }

void beep(int x){ while(x--) { bee=0; delay_ms(100); bee=1; delay_ms(100); } }

void beep_s(int x) { while(x--) { bee=0; delay_ms(1000); bee=1; }

}

void main() { Init_All(); while(1) { if(Pass_Save_Flag==1) { Passw_save(password_memory); Pass_Save_Flag=0; } if(Passw_Right_Flag==0&&Password_set_flag==0&&Passw_Finish_Flag==0) 不设置密码时检测输入密码 { Clr_Screen_Flag=0; display_table(); if(Passw_Enter_flag==0) { Enter_password_try(); 输入密码 } else if(Passw_Enter_flag==1) 密码输入完毕 { keyscan(); if(keynum==13) { password_memory=Passw_read();先读取初始密码,检查存储密码和输入是否一致 delay_us(2); if(password==password_memory) { display_table2(); 一致时显示table2[]={\ LED =0; LED灯亮 Passw_Finish_Flag=1; 密码输入完毕 Passw_Right_Flag=1; 密码输入正确 relay=0; beep_s(1); 密码输入正确蜂鸣器响1s TR0=0; 关闭定时器 } else { password_memory=0; password=0; 输入错误后 清零 以便判断下次输入 display_table3(); 显示table3[]={\


[精品]基于单片机的数字密码锁设计毕业论文设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(论文)中小企业局域网组建

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: