基于8051的电子密码锁程序
来源:互联网 发布:易语言手机编程 编辑:程序博客网 时间:2024/04/30 16:04
/****************************************功能:当电源接通时,LED灯以1S闪烁,键盘上可输入2位密码与预设密码比对,如相符则LED常亮,如不符仍需输入密码。为防止密码遗失,八段显示器会在2位密码输入后,过一段时间熄灭。****************************************/# include <reg52.h># define uchar unsigned char # define uint unsigned intuchar code table[]= //共阳极八段显示器{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};sbit LED=P2^3;sbit pian1=P2^0;sbit pian2=P2^1;uchar count,num1,num2,flag,key;void init();void keyboard();void delay(uchar a);void main(){init();while(1){uchar x,y;while(num1==10) {pian2=0;keyboard();P0=table[num1];}while(num2==10){keyboard();}for(x=2;x>0;x--)for(y=110;y>0;y--) {pian1=0;pian2=1;P0=table[num2];delay(10);pian2=0;pian1=1;P0=table[num1];delay(10); }if(num1==key/10&&num2==key%10){ TR0=0;LED=1;P0=0xff;num1=10;num2=10;flag=1;}else{P0=0xff;num1=10;num2=10;flag=1;} }}void keyboard(){ uchar temp,num;num=10;P1=0xef; temp=P1;temp=temp&0xe0;while(temp!=0xe0){delay(5);temp=P1;temp=temp&0xe0;while(temp!=0xe0){temp=P1;switch(temp){case 0xcf: num=1;break;case 0xaf: num=2;break;case 0x6f: num=3;break;default:break;}while(temp!=0xe0){temp=P1;temp=temp&0xe0;} }} P1=0xf7; temp=P1;temp=temp&0xe0;while(temp!=0xe0){delay(5);temp=P1;temp=temp&0xe0;while(temp!=0xe0){temp=P1;switch(temp){case 0xd7: num=4;break;case 0xb7: num=5;break;case 0x77: num=6;break;default:break;}while(temp!=0xe0){temp=P1;temp=temp&0xe0;} }} P1=0xfb;temp=P1;temp=temp&0xe0;while(temp!=0xe0){delay(5);temp=P1;temp=temp&0xe0;while(temp!=0xe0){temp=P1;switch(temp){case 0xdb: num=7;break;case 0xbb: num=8;break;case 0x7b: num=9;break;default:break;}while(temp!=0xe0){temp=P1;temp=temp&0xe0;} }}P1=0xfd;temp=P1;temp=temp&0xe0;while(temp!=0xe0){delay(5);temp=P1;temp=temp&0xe0;while(temp!=0xe0){temp=P1;switch(temp){case 0xdd: num=10;//这里星号键和井号键我是使数码管不显示任何数break;case 0xbd: num=0;break;case 0x7d: num=10;break;default:break;}while(temp!=0xe0){temp=P1;temp=temp&0xe0;} }}if(num!=10){if(flag!=0){flag=0;num1=num;}elsenum2=num;}}void init()//初始化函数{key=16;//对密码的初始化num1=10;num2=10;flag=1;P0=0xff;count=0;EA=1;ET0=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TMOD=0X11;TR0=1;}void delay(uchar a){uchar x,y;for(x=a;x>0;x--)for(y=110;y>0;y--);}void pause() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;LED=~LED;}}
在这个电路图中我只使用了两个八段数码管,旨在演示如何实现在利用8051实现密码锁功能,当密码正确时LED灯常亮,具体的使用可以视情况在中断服务程序中更改。
- 基于8051的电子密码锁程序
- 基于单片机的电子密码锁的实现
- 基于stc15系列芯片的电子密码锁代码
- 四位密码锁*电子密码锁的设计
- 红外线电子密码锁的制作
- 电子密码锁
- 电子密码锁
- 谁有基于AT89S51单片机的八位电子密码锁资料,谢谢!
- 基于C语言STC89C52单片机电子密码锁的设计与仿真
- 可以改密码的单片机电子密码锁
- 基于单片机的密码锁汇编程序
- 基于51单片机的密码锁
- 基于单片机的智能密码锁
- 基于汇编语言的电子闹钟小程序
- MS51 电子密码锁设计
- 电子密码锁设计
- 简易电子密码锁设计
- 单片机电子密码锁源代码
- 重庆高新技术交流会
- java的封装性
- 数据库三范式哲学
- linux字符设备注册相关函数
- 全球唯一标识[Globally Unique Identifier]工具类
- 基于8051的电子密码锁程序
- maven依赖本地非repository中的jar包
- 为黑马奋斗的日子--io流
- Struts2中Action的搜索顺序
- 修改Go语言(golang)编译器源代码让它支持UTF-8 BOM
- NOI04郁闷的出纳员
- 为黑马奋斗的日子--网络编程
- 基础知识
- 半球模型