电子密码锁程序.doc_第1页
电子密码锁程序.doc_第2页
电子密码锁程序.doc_第3页
电子密码锁程序.doc_第4页
电子密码锁程序.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* 简易6位密码锁利用单片机STC89C52RC为基数设计的*/#include#define uchar unsigned char#define uint unsigned intsbit lcdrs=P21; /液晶数据指令端sbit lcdrw=P22; /读,写端sbit lcden=P23; /液晶使能端sbit speaker=P32;/扬声器sbit led=P20; / 控制LED uchar code table= enter password; /输入密码uchar code table1=error!try again; /错误!再试一次uchar code table2= welecome!; /解锁成功uchar code table4=set password; /重置密码uchar code table5=input again:; /在输入密码uchar code table6= fuck you!; / 混蛋uchar code table7= get out!; / 滚开uchar code table8= set succeed; /成功咯!bit flag,flag1,flag2,flag3,flag4,flag5,rst;uchar key,count;/* 延时函数*/void delayms(uint x) uint i,j; for(i=x;i0;i-) for(j=110;j0;j-);/* 液晶指令函数*/void write_com(uchar com) lcdrw=0; lcdrs=0; P0=com; delayms(5); lcden=1; delayms(5); lcden=0; /* 液晶写数据函数*/void write_data(uchar date) lcdrw=0; lcdrs=1; P0=date; delayms(5); lcden=1; delayms(5); lcden=0;/* 液晶初始化函数*/void lcdinit() lcden=0; write_com(0x38); write_com(0x06); write_com(0x0f); write_com(0x01);/* 键盘扫描函数*/void keyscan() uchar temp; P1=0xfe; if(P1!=0xfe) delayms(8); if(P1!=0xfe) temp=0xf0&P1; switch(temp) case 0xe0:key=1;write_data(*);flag5=1;count+;break; case 0xd0:key=4;write_data(*);flag5=1;count+;break; case 0xb0:key=7;write_data(*);flag5=1;count+;break; case 0x70:flag=1;break; while(P1!=0xfe); speaker=1; delayms(8); speaker=0; P1=0xfd; if(P1!=0xfd) delayms(8); if(P1!=0xfe) temp=0xf0&P1; switch(temp) case 0xe0:key=2;write_data(*);flag5=1;count+;break;case 0xd0:key=5;write_data(*);flag5=1;count+;break;case 0xb0:key=8;write_data(*);flag5=1;count+;break;case 0x70:key=0;write_data(*);flag5=1;count+;break; while(P1!=0xfd); speaker=1; delayms(8); speaker=0; P1=0xfb; if(P1!=0xfb) delayms(8); if(P1!=0xfb) temp=0xf0&P1; switch(temp) case 0xe0:key=3;write_data(*);flag5=1;count+;break; case 0xd0:key=6;write_data(*);flag5=1;count+;break; case 0xb0:key=9;write_data(*);flag5=1;count+;break; case 0x70:rst=1; break; while(P1!=0xfb); speaker=1; delayms(8); speaker=0; P1=0xf7; if(P1!=0xf7) delayms(8); if(P1!=0xf7); temp=0xf0&P1;switch(temp) case 0xe0:switch(count) case 1: write_com(0xc5);write_data(*);write_com(0xc5);break; case 2: write_com(0xc6);write_data(*);write_com(0xc6);break; case 3: write_com(0xc7);write_data(*);write_com(0xc7);break; case 4: write_com(0xc8);write_data(*);write_com(0xc8);break; case 5: write_com(0xc9);write_data(*);write_com(0xc9);break; case 6: write_com(0xca);write_data(*);write_com(0xca);break;if(0count) count-;break;while(P1!=0xf7); void main() uchar a6,b6,i,num,table36=1,2,3,4,5,6; lcdinit(); speaker=0; led=0; while(1) keyscan(); if(!flag3) write_com(0x0f); write_com(0x80); for(i=0;i15;i+) write_data(tablei); write_com(0xc5); flag3=1; if(num=2) if(flag5) switch(count) case 1:acount-1=key;break; case 2:acount-1=key;break; case 3:acount-1=key;break; case 4:acount-1=key;break; case 5:acount-1=key;break; case 6:acount-1=key;break; flag5=0; if(count=6) if(a0=table30)&(a1=table31)&(a2=table32)&(a3=table33)&(a4=table34)&(a5=table35) if(!flag4) write_com(0x01); write_com(0x80); for(i=0;i13;i+) write_data(table2i); write_com(0x0c); flag=0; flag4=1; rst=0;led=1; while(!rst) keyscan(); if(flag)break; while(flag) keyscan(); if(!flag1) write_com(0x01); write_com(0x0f); write_com(0x80); for(i=0;i13;i+) write_data(table4i); write_com(0xc5); count=0; flag1=1; if(flag5) switch(count) case 1: table3count-1=key;break;case 2: table3count-1=key;break;case 3: table3count-1=key;break;case 4: table3count-1=key;break;case 5: table3count-1=key;break; case 6: table3count-1=key;break; flag5=0; if(count=6) if(!flag2) write_com(0x01);write_com(0x80);for(i=0;i12;i+)write_data(table5i);write_com(0xc5);flag2=1;count=0; while(1) keyscan();if(flag5) switch(count) case 1: bcount-1=key;break; case 2: bcount-1=key;break; case 3: bcount-1=key;break; case 4: bcount-1=key;break; case 5: bcount-1=key;break; case 6: bcount-1=key;break; flag5=0;if(count=6)if(b0=table30)&(b1=table31)&(b2=table32)&(b3=table33)&(b4=table34)&(b5=table35)write_com(0x01);write_com(0x80);for(i=0;i13;i+)write_data(table8i);write_com(0x0c);flag=0;flag1=0;flag2=0;flag3=0;flag4=0;count=0;num=0;while(!rst)keyscan(); else count=0;write_com(0x01);write_com(0x80);for(i=0;i12;i+)write_data(table5i);write_com(0xc5); if(rst) break; if(rst) break; else num+; if(num=2) write_com(0x01); write_com(0x80); for(i=0;i16;i+) write_data(ta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论