资源简介
使用51单片机设置的门禁系统,可以输入密码开锁,可以更改密码,也可以使用AT24C02存储密码,达到断电保护的功能
代码片段和文件信息
#include
#include
#include
//#include “IIC.h“
#include “matrix_key.h“
#include “HDG12864F1.h“
#include “Word_Code.h“
#include “Rose.h“
sbit LED = P2 ^ 2;//LED灯引脚定义
sbit BEEP = P2 ^ 3;//蜂鸣器引脚定义
unsigned char Key[] = “594200“;//初始密码
//unsigned char Buff[7] = “\0\0\0\0\0\0\0“;
unsigned int length = 0;
bit Key_Flag = 1;//按键按下标志位
bit Key_Display_Flag = 0;//密码是否显示标志
//void Write_Address_String(unsigned char address unsigned char dat[]);
//void Read_Address_String(unsigned char address unsigned char dat[]);
void Delay(unsigned int z);
void Display_First();
void Main_Key_Pro();
void External_Interrupt_Init();
void Input_Key(unsigned char Input_Buff[]);
void Alter(unsigned char Input_Buff[]);
void Log(unsigned char Key_Buff[]);
bit Check_Key(unsigned char Input_Buff1[] unsigned char Input_buff2[]);
void main()
{
LED = 0;
BEEP = 0;
P1 = 0x0F;//0000 1111
//IIC_Init();
External_Interrupt_Init();
HDG12864F1_Init();
Display_First();
while(1)
{
P1 = 0x0F;//0000 1111
if(Key_Flag == 1)
{
Key_Flag = 0;
Main_Key_Pro();
}
}
}
void Delay(unsigned int z)
{
unsigned int i j;
for(i = z; i > 0; i--)
for(j = 120; j > 0; j--);
}
void Display_First()
{
length = sizeof(Welcome) / sizeof(Welcome[0]);
HDG12864F1_Write_Char(4 3 Char_Table[10]);
HDG12864F1_Write_Char(4 4 Char_Table[10]);
HDG12864F1_Write_String(2 3 length Welcome);
HDG12864F1_Write_Char(4 13 Char_Table[10]);
HDG12864F1_Write_Char(4 14 Char_Table[10]);
}
void Main_Key_Pro()
{
switch(Matrix_Key_Scan())
{
case 0x7d://修改
Alter(Key);
break;
case 0x77:
Log(Key);
break;
}
HDG12864F1_Clear();
Display_First();
}
void External_Interrupt_Init()
{
EA = 1;
EX0 = 1;
IT0 = 1;
}
void External_Interrupt_0()interrupt 0
{
Key_Flag = 1;
}
void Input_Key(unsigned char Input_Buff[])
{
unsigned int i = 0;//记录密码输入个数
unsigned int j = 0;
while(i < 7)
{
if(i < 6)
{
switch(Matrix_Key_Scan())
{
//第一行键值码
case 0xee:
Input_Buff[i] = ‘7‘;
++i;
break;
case 0xde:
Input_Buff[i] = ‘8‘;
++i;
break;
case 0xbe:
Input_Buff[i] = ‘9‘;
++i;
break;
case 0x7e://清除
i = 0;
for(j = 0; j < 7; j++)
{
HDG12864F1_Write_Char(5 6 + j Char_Table[0]);
Input_Buff[j] = ‘\0‘;
}
break;
//第二行键值码
case 0xed:
Input_Buff[i] = ‘4‘;
++i;
break;
case 0xdd:
Input_Buff[i] = ‘5‘;
++i;
bre
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24630 2018-05-30 11:56 20180530115050.bmp
文件 32094 2018-07-08 12:49 Backup Of Experiment_7.pdsbak
文件 7559 2018-06-27 19:58 Experiment_7.c
文件 32094 2018-07-08 12:49 Experiment_7.pdsprj
文件 3100 2018-07-08 14:52 Experiment_7.pdsprj.LAPTOP-9QG1FV7R.Yu.workspace
文件 86695 2018-06-27 19:59 Experiment_7.uvgui.Yu
文件 5943 2018-05-10 22:18 Experiment_7.uvopt
文件 13893 2018-05-28 17:10 Experiment_7.uvproj
文件 4874 2018-05-30 12:08 HDG12864F1.h
文件 2234 2018-05-09 10:57 IIC.h
文件 32100 2018-05-28 16:39 Last Loaded Experiment_7.pdsbak
目录 0 2018-10-08 22:06 Listings\
文件 14767 2018-05-30 12:08 Listings\Experiment_7.lst
文件 29231 2018-05-30 12:08 Listings\Experiment_7.m51
文件 913 2018-05-06 12:31 matrix_key.h
目录 0 2018-10-08 22:06 ob
文件 27876 2018-05-30 12:08 ob
文件 1129 2018-05-30 12:08 ob
文件 21697 2018-05-30 12:08 ob
文件 97 2018-05-30 12:08 ob
文件 33516 2018-05-30 12:08 ob
文件 6581 2018-05-30 12:07 Rose.h
文件 24841 2018-05-09 08:39 Word_Code.h
- 上一篇:黑白点匹配问题代码
- 下一篇:铁塔公司选聘试题综合版含答案
相关资源
- AT89C51单片机--CC1101无线接收程序经本
- 基于AT89C51单片机的智能脉搏测试仪设
- 基于单片机at89c51的电子琴proteus仿真
- AT89C51控制超声波
- AT89c51元件库
- AT89C51数字时钟
- AT89C51单片机温度控制系统
- AT89C51单片机在直流电机闭环调速系统
- 基于AT89C51单片机电子体温计设计.ra
- AT89C51的矩阵键盘、跑马灯和呼吸灯设
- at89c51单片机最小系统介绍
- 由AT89C51/55构成的温湿度自动监测系统
- AT89C51/55构成温湿度自动监测系统
- 基于AT89C51单片机的温度测控系统设计
- 基于AT89C51和LCD1602的电子时钟
- 基于51单片机的温湿度检测与报警系统
- AT89C51+DAC0832+LM324做的信号发生器包含
- AT89C51原件库
- 基于AT89C51的数字电子钟设计(附代码
- 基于单片机AT89C51的热水器控制仿真
- 基于AT89C51的单片机秒表课程设计
- 温度控制直流电机转速.zip
- 4x4矩阵开关控制数码管显示0-F
- AT89C51原理图
- 基于汇编程序的AT89C51单片机交通灯控
- 单片机控制系统设计
- Proteus_AT89C51最小系统+点亮一个LED
- 基于AT89C51的电子日历时钟完整版
- 基于AT89C51单片机和DS18B20的数字温度计
- AT89C51单片机写的74HC595驱动程
评论
共有 条评论