资源简介
基于STC89C52制作的密码锁
1.选取STC89C52单片机,单片机内部自带EEPROM,支持掉电保存密码功能,不需要外置AT24C01保存密码。
2.为简化机械装置,采取5V继电器模拟开锁过程。输入的正确时,继电器吸合2-3秒,开锁指示灯亮2-3秒,模拟开锁。
3.自动报警部分选用蜂鸣器,当三次输入密码不同时就会发生报警信息。
4.显示屏采用LCD1602。
5.6位密码,密码可重置,重置密码时,先输入原始密码,正确后输入新密码,再交输入新密码,两次输入的密码一致辞时,密码修改成功。开锁时,密码通过键盘输入,若密码正确,则将锁打开,若密码不正确时,无法开锁,密码输入错误三次时,蜂鸣器报 警并且锁定键盘,10分钟。
6.4X4矩阵键盘输入,键盘扫描程序判定按键是否按下。
7.利用keil编程控制高低电平输出来控制各种功能的实现。
代码片段和文件信息
#include
#define uint unsigned int
#define uchar unsigned char
void key_scan();
uchar count0count1count3numn=0tempajcount4;
uchar mima[8]; //初始密码存储区
uchar tab_key[50]; //输入密码存储区
uchar code table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};
bit enterflag; //确认键按下与否的标志
bit mimaflag; //密码正确与否的标志
bit xiugaiflag; //修改密码标志
bit enter1flag; //修改密码确认键标志
sbit red=P3^7;
sbit bell=P3^6;
sbit rs=P2^0;
sbit rw=P2^1;
sbit lcden=P2^2;
sbit scl=P3^4;
sbit sda=P3^5;
uchar code table1[]=“Input the passcode“;
uchar code table2[]=“Code:------“;
uchar code table3[]=“*“;
uchar code table4[]=“Right(^_^)“;
uchar code table5[]=“First error!!!“;
uchar code table6[]=“Second error!!!“;
uchar code table7[]=“Third error!!!“;
uchar code table8[]=“Use tomorrow(^_^)“;
uchar code table9[]=“Cofirm passcode“;
uchar code table10[]=“Code:------“;
uchar code table11[]=“Code is new“;
//******************************键盘消抖函数*******************************
void delay1()
{ ;; }
void delay2(uchar x)
{
uchar ab;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//****************************e^2room的初始化*******************************
void start() //开始信号
{
sda=1;
delay1();
scl=1;
delay1();
sda=0;
delay1();
}
void stop() //停止
{
sda=0;
delay1();
scl=1;
delay1();
sda=1;
delay1();
}
//****************************应答信号*************************************
void respond()
{
uchar i;
scl=1;
delay1();
while((sda==1)&&(i<250))i++;
scl=0;
delay1();
}
//*****************************写字节操作函数**********************************
void write_byte(uchar date)
{
uchar itemp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1; //保持最高位,左移到进位CY
scl=0;
delay1();
sda=CY;
delay1();
scl=1;
delay1();
}
scl=0;
delay1();
sda=1;//总线释放
delay1();
}
//*******************************读字节操作函数*****************************
uchar read_byte()
{
uchar ik;
scl=0;
delay1();
sda=1;
delay1();
for(i=0;i<8;i++)
{
scl=1;
delay1();
k=(k<<1)|sda; //或运算,放到最低位
相关资源
- 基于C51单片机计时器
- 51单片机控制的GSM报警程序
- MQ-2烟雾传感器51单片机代码
- 单片机水塔水位控制系统课程设计p
- labview和单片机的温度监控系统
- 基于51单片机12864显示的指纹锁
- 027 简易电子秤 LCD1602显示 超重报警
- 基于PIC单片机的多功能万年历
- 基于51单片机的1602万年历设计_温度
- 密码科技全加密破解.rar
- TEWA-800G 联通 电信 光猫 管理员登录密
- 51单片机温度报警器设计程序及prote
- 基于单片机的热电偶测温系统设计
- 基于单片机的水质浊度分析仪的设计
- 51单片机 啤酒生产线计数器
- 基于51和hx711的电子秤
- ATMEGA16 PROTUES 热水器
- 基于传感器的温度测量与报警系统设
- 51单片机和1602显示18b20温度报警系统
- 梯控分析客户端解压密码012345.rar
- 51单片机 CH452驱动数码管,按键,按键
- 单片机数字温度计的设计与实现论文
- 蔬菜大棚温度的温度控制程序
- 51单片机多任务的切换和堆栈的保护
- 基于51单片机的的电子密码锁设计.r
- 基于嵌入式开发的智能医药箱设计与
- 单片机甲醛浓度
- 51单片机实现温度检测数码管显示,控
- 51单片机蜂鸣器音乐盒程序代码
- HC-SR04超声波测距显示LED灯闪烁
评论
共有 条评论