




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册验船师资格考试(A级船舶检验法律法规)考前模拟试题及答案二
- 2025年殡仪服务职业认证考试面试要点及模拟题集
- 桃花心木课件教学
- 公务员应变面试题及答案
- 2025年艺术设计领域招聘考试试题预测及备考策略
- 2025年国家历史局选拔考试复习题目与答案详解
- 公务员面试题及答案最佳
- 公务员面试题及答案扶贫
- 莫言小说中的民俗元素呈现及其意义
- 2025年环境科学与管理专业高级考试题库及答案
- 矿山基金管理办法
- 肥料登记证授权合同范本
- 工业厂房租赁管理办法
- 辽宁动物检疫管理办法
- 肺癌免疫治疗病例分享
- 2025年汽车智能驾驶技术及产业发展白皮书-清华大学
- 2025云南师范大学辅导员考试题库
- 2025年国考行测试题及答案解析
- 财务岗位安全培训课件
- 2025年贵州省中考语文试卷真题(含答案)
- 2025至2030中国电容膜片真空计行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论