资源简介
电子密码锁课程设计,本系统由AT89S51单片机系统(主要是AT89S51单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能(本设计由P0口控制LCD显示,密码正确显示password ok! 密码错误显示password error!超过三次输入错误自动锁定。由P1口控制矩阵键盘含有0-9数字键和A-F功能键。)。除上述基本的密码锁功能外,依据实际的情况还可以添加遥控功能。
代码片段和文件信息
//包含头文件
#include
#include
//宏定义
#define LCM_Data P0 //将P0口定义为LCM_Data
#define uchar unsigned char
#define uint unsigned int
//1602的控制脚
sbit lcd1602_rs=P2^5;
sbit lcd1602_rw=P2^6;
sbit lcd1602_en=P2^7;
sbit Scl=P3^4; //24C02串行时钟
sbit Sda=P3^5; //24C02串行数据
sbit ALAM = P2^1; //报警
sbit KEY = P3^6; //开锁
bit pass=0; //密码正确标志
bit ReInputEn=0; //重置输入允许标志
bit s3_keydown=0; //3秒按键标志位
bit key_disable=0; //锁定键盘标志
unsigned char countt0second; //t0中断计数器秒计数器
void Delay5Ms(void); //声明延时函数
unsigned char code a[]={0xFE0xFD0xFB0xF7}; //控盘扫描控制表
//液晶显示数据数组
unsigned char code start_line[] = {“password: “};
unsigned char code name[] = {“===Coded Lock===“}; //显示名称
unsigned char code Correct[] = {“ correct “}; //输入正确
unsigned char code Error[] = {“ error “}; //输入错误
unsigned char code codepass[] = {“ pass “};
unsigned char code LockOpen[] = {“ open “}; //OPEN
unsigned char code SetNew[] = {“SetNewWordEnable“};
unsigned char code Input[] = {“input: “}; //INPUT
unsigned char code ResetOK[] = {“ResetPasswordOK “};
unsigned char code initword[] = {“Init password...“};
unsigned char code Er_try[] = {“errortry again!“};
unsigned char code again[] = {“input again “};
unsigned char InputData[6]; //输入密码暂存区
unsigned char CurrentPassword[6]={000000}; //读取EEPROM密码暂存数组
unsigned char TempPassword[6];
unsigned char N=0; //密码输入位数记数
unsigned char ErrorCont; //错误次数计数
unsigned char CorrectCont; //正确输入计数
unsigned char ReInputCont; //重新输入计数
unsigned char code initpassword[6]={000000}; //输入管理员密码后将密码初始为000000
unsigned char code adminpassword[6]={131420}; //输入管理员密码后将密码初始为000000
//=====================5ms延时==============================
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//===================400ms延时==============================
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
}
}
//=============================================================================================
//================================24C02========================================================
//=============================================================================================
void mDelay(uint t) //延时
{
uchar i;
while(t--)
{
for(i=0;i<125;i++)
{;}
}
}
void Nop(void) //空操作
{
_nop_(); //仅作延时用一条语句大约1us
_nop_();
_nop_();
_nop_();
}
/*****24c02程序参照24c02时序图*****/
/*起始条件*/
void Start(void)
{
Sda=1;
Scl=1;
Nop();
Sda=0;
Nop();
}
/*停止条件*/
void Stop(void)
{
Sda=0;
Scl=1;
Nop();
Sda=1;
Nop();
}
/*应答位*/
void Ack(void)
{
Sda=0;
Nop();
Scl=1;
Nop();
Scl=0;
}
/*反向应答位*/
void NoAck(void)
{
Sda=1;
Nop();
Scl=1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 262017 2014-04-09 23:59 1602资料\1602液晶说明.pdf
----------- --------- ---------- ----- ----
262017 1
- 上一篇:编译原理与技术第二版高清pdf含目录
- 下一篇:Protel99se
相关资源
- 基于51单片机的智能小车避障
- 基于proteus的51单片机电子称设计
- 51单片机 通过蓝牙连接app 控制继电器
- 18B20温湿度传感器 51单片机程序
- 基于51单片机的12864液晶显示的“204
- 51单片机最小系统原理图加PCB
- 基于51单片机PID算法的直流电机测速控
- 51单片机 GSM模块防火防盗
- 51单片机程序
- STC51单片机控制SIM900A数据发送与接收
- 51单片机 红外寻迹 + 蓝牙 + 超声避障
- 51单片机与蓝牙模块的串口通信C程序
- 51单片机蜂鸣器播放音乐、暂停音乐以
- 51单片机自制游戏机内置四款
- 模块最全的51单片机开发板原理图
- 基于51单片机的电子秤设计
- 第四届模拟题--自动售水机.rar
- 基于proteus的电子秤设计及仿真+51单片
- 基于51单片机和DS18B20的温度控制器带
- 51单片机串行通信程序
- 基于51单片机的DHT11温湿度测量报警系
- 基于51单片机的温度报警器
- 51单片机题库含答案
- C51单片机八段LED静态显示电子时钟M
- 基于51单片机的家庭防火防盗设计
- 基于51单片机LCD1602显示时钟温度报警
- 基于51单片机电子密码锁的设计 C程序
- 基于51单片机的温度报警器程序和原理
- 51单片机音调发生器程序
- 基于51单片机的智能家居监测系统硬件
评论
共有 条评论