电子密码锁的电路设计hsb

上传人:mg****2 文档编号:122136233 上传时间:2020-03-01 格式:DOC 页数:9 大小:269KB
返回 下载 相关 举报
电子密码锁的电路设计hsb_第1页
第1页 / 共9页
电子密码锁的电路设计hsb_第2页
第2页 / 共9页
电子密码锁的电路设计hsb_第3页
第3页 / 共9页
电子密码锁的电路设计hsb_第4页
第4页 / 共9页
电子密码锁的电路设计hsb_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《电子密码锁的电路设计hsb》由会员分享,可在线阅读,更多相关《电子密码锁的电路设计hsb(9页珍藏版)》请在金锄头文库上搜索。

1、.作者:侯少博 QQ:604150086 实现功能:输入正确密码绿灯亮,输入错误密码报警并且红灯亮,可以输入三次密码。C程序:#include#define uchar unsigned char #define uint unsigned intsbit lcdrs=P10; /液晶数据、指令端sbit wr=P11; /读、写端sbit lcden=P12; /液晶使能端sbit green_light=P13; /绿灯1灭,0亮sbit speaker=P14; /扬声器0响sbit red_light=P15; / 红灯1灭,0亮uchar code table=enter passw

2、ord:; uchar code table1=error!try again:; uchar code table2= welcome!; uchar code table4=set password:; uchar code table5=input again:; uchar code table6= bad luck!;uchar code table7= get out!;uchar code table8= set succeed;bit flag,flag1,flag2,flag3,flag4,flag5,rst;uchar key,count;void delayms(uint

3、 x)uint i,j; for(i=x;i0;i-) /延时函数 for(j=110;j0;j-); void write_com(uchar com)/液晶写指令函数wr=0;lcdrs=0;P2=com;delayms(5);lcden=1;delayms(5);lcden=0;void write_data(uchar date) /液晶写数据函数 wr=0;lcdrs=1;P2=date;delayms(5);lcden=1;delayms(5);lcden=0; /液晶初始化函数void lcdinit ()lcden=0;write_com(0x38);write_com(0x0

4、6);write_com(0x0f);write_com(0x01);void keyscan() /键盘扫描函数uchar temp;P3=0xfe; if(P3!=0xfe) delayms(8);if(P3!=0xfe)temp=0xf0&P3;switch(temp)case 0xe0: key=0;flag5=1;break;/数字键盘按下时显示*字符,把对应的数字放入数组中case 0xd0: key=1;flag5=1;break;/flag5为1时才能把数据放进数组,只是为了防止删减密码case 0xb0: key=2;flag5=1;break;/时把key的值装进已输入正确

5、的密码中case 0x70: key=3;flag5=1;break; while(P3!=0xfe);write_data(*); count+; P3=0xfd;if(P3!=0xfd) delayms(8);if(P3!=0xfd)temp=0xf0&P3;switch(temp)case 0xe0: key=4;flag5=1;break;case 0xd0: key=5;flag5=1;break;case 0xb0: key=6;flag5=1;break;case 0x70: key=7;flag5=1;break; while(P3!=0xfd); write_data(*);

6、 count+;P3=0xfb;if(P3!=0xfb) delayms(8);if(P3!=0xfb)temp=0xf0&P3;switch(temp)case 0xe0: key=8;write_data(*);flag5=1;count+;break;case 0xd0: key=9;write_data(*);flag5=1;count+;break;case 0xb0: flag=1;break;case 0x70: rst=1;break; while(P3!=0xfb); P3=0xf7;if(P3!=0xf7) delayms(8);if(P3!=0xf7)temp=0xf0&

7、P3;switch(temp)case 0xe0: switch(count) case 1:write_com(0xc5);write_data( ); write_com(0xc5);break; /当按下delete键时,往前一个地址显示空字符, 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( );

8、 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(P3!=0XF7);void main()uchar a6,b6,i,num,table36=1,2,3,4,5,6; /初始化原始密码为“123456”lcdinit(); /液晶初始化while(1) k

9、eyscan(); /键盘扫描 if(!flag3) write_com(0x0f); /标志位flag3为0时, write_com(0x80); /显示“enter password:”字符串 for(i=0;i15;i+) write_data(tablei); write_com(0xc5);/令光标在液晶第二行中间闪烁 flag3=1; /flag3为1时不显示“enter password:”字符串,因为不停扫描此语句时会造成字符串的闪烁 if(num=2) /控制密码的输入次数为三次,超过了就不能再输入 if(flag5) switch(count) case 1: acount

10、-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; /防止delete键按下时把正确的密码改掉 if(count=6) /输入的数为够六位执行,密码正确时进入if(a0=table30)&(a1=table31)&(a2=table32)&(a3=table33)&(a4=table34)&(a5=tab

11、le35)if(!flag4)write_com(0x01); /显示“welconme字符串”write_com(0x80);for(i=0;i13;i+)write_data(table2i);write_com(0x0c); / 光标闪烁关闭green_light=0;delayms(5000);green_light=1;flag=0;flag4=1;rst=0; /清零,执行下面程序while(!rst)keyscan();if(flag)break;while(flag) / flag为1时进入修改密码状态 keyscan(); if(!flag1) write_com(0x01)

12、; write_com(0x0f); write_com(0x80); for(i=0;i13;i+) /显示“set password:”字符串 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: table3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号