资源简介
设计是以AT89C52单片机实现密码锁监控装置的检测和控制核心,实现密码信息的设定、加密、更改和错误输入发出警报等功能。分为键盘输入(此处采用4×4矩阵盘),显示输出,密码比对,实现开锁或警报的过程。该设计根据52单片机之间的串行通信原理,便于对密码信息的随机加密和保护。软件设计则是采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,该系统已达到本设计的各项功能的所有要求。
代码片段和文件信息
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar old1=0old2=0old3=0old4=0; //原始密码
uchar new1new2new3new4; //采集到的4位密码输入
uchar a=17b=17c=17d=17; //送入数码管显示的变量,初始----
uchar weikeytempfinishallow=1;
void fm();
bit open;
sbit DISP_DCS=P3^6; //数码管段选
sbit DISP_PCS=P3^7; //数码管位选
sbit MOTOR_CS=P2^7; //蜂鸣器
sbit LED_CS=P2^5; //LED
sbit LCD_CS=P3^4; //数码管
unsigned char code table[]=
{
0xC00xF90xA40xB0
0x990x920x820xF8
0x800x900x880x83
0xC60xA10x860x8E
0x8C0xBF0xFF
};
void delay(int i)
{ int j;
uchar k;
for(j=i;j>0;j--)
for(k=125;k>0;k--); //延时ims
}
void display(uchar auchar buchar cuchar d)
{
LED_CS=0; //关闭LED片选
DISP_DCS=0; //关闭数码管段选
P0=table[a]; //给数码管送一个数a
DISP_DCS=1; //打开段选
DISP_DCS=0;
DISP_PCS=0; //关闭片选
P0=0x01; //选择第一位
DISP_PCS=1; //打开片选
DISP_PCS=0; //关闭片选
delay(5); //延时
P0=table[b]; //送段码,开段选,关段选;送片选码,开片选,关片选;延时。
DISP_DCS=1;
DISP_DCS=0;
P0=0x02;
DISP_PCS=1;
DISP_PCS=0;
delay(5);
P0=table[c];
DISP_DCS=1;
DISP_DCS=0;
P0=0x04;
DISP_PCS=1;
DISP_PCS=0;
delay(5);
P0=table[d];
DISP_DCS=1;
DISP_DCS=0;
P0=0x08;
DISP_PCS=1;
DISP_PCS=0;
delay(5);
}
void keyscan()
{
MOTOR_CS=0; //关闭蜂鸣器片选
LED_CS=0; //关闭流水灯片选
{
P1=0x7f;
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(10);
if(temp!=0x0f) //----------消抖
{
temp=P1;
switch(temp)
{
case 0x7e: //扫描到第一个键,按键按下行列都为0
key=0; //设置按键对应的数值为0
wei++; //每按下一次位数就会加1
break;
case 0x7d:
key=1; //设置按键对应的数值为1
wei++;
break;
case 0x7b:
key=2; //设置按键对应的数值为2
wei++;
break;
case 0x77:
key=3;
wei++; //设置按键对应的数值为3
break;
}
while(temp!=0x0f)
{
temp=P1;
temp=temp&0x0f;
}
fm(); //扫描到这一行的每一个键都调用蜂鸣器响1秒程序
}
}
P1=0xbf; //给P1赋值,第二行为0其他都为1
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f)
{
delay(10);
if(temp!=0x0f)
{
temp=P1;
switch(temp)
{
case 0xbe:
key=4; //设置按键对应的数值为4
wei++;
break;
case 0xbd:
key=5; //设置按键对应的数值为5
wei++;
break;
case 0xbb:
key=6; //设置按键对应的数值为6
wei++;
break;
case 0xb7:
key=7; //设置按键对应的数值为7
wei++;
break;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1366 2015-06-30 09:31 密码锁电路图.PWI
文件 925 2015-06-30 09:56 密码锁工程文件夹\DISPLAY.lst
文件 19 2015-06-30 08:19 密码锁工程文件夹\ExtDll.iex
文件 6106 2015-06-30 20:26 密码锁工程文件夹\mms.c
文件 14802 2015-07-01 22:52 密码锁工程文件夹\mms.LST
文件 11499 2015-07-01 22:52 密码锁工程文件夹\mms.OBJ
文件 6376 2010-09-03 17:12 密码锁工程文件夹\STARTUP.A51
文件 14058 2015-06-29 08:13 密码锁工程文件夹\STARTUP.LST
文件 749 2015-06-29 08:13 密码锁工程文件夹\STARTUP.OBJ
文件 9697 2015-07-01 22:52 密码锁工程文件夹\密码锁
文件 2502 2015-07-01 22:52 密码锁工程文件夹\密码锁.hex
文件 26 2015-07-01 22:52 密码锁工程文件夹\密码锁.lnp
文件 15185 2015-07-01 22:52 密码锁工程文件夹\密码锁.M51
文件 216 2015-07-03 22:57 密码锁工程文件夹\密码锁.plg
文件 235200 2015-07-03 22:57 密码锁工程文件夹\密码锁.uvgui.Administrator
文件 233222 2015-07-02 00:01 密码锁工程文件夹\密码锁.uvgui_Administrator.bak
文件 6047 2015-07-03 22:57 密码锁工程文件夹\密码锁.uvopt
文件 13268 2015-06-29 08:14 密码锁工程文件夹\密码锁.uvproj
文件 6049 2015-07-02 00:01 密码锁工程文件夹\密码锁_uvopt.bak
文件 13440 2015-06-28 10:15 密码锁工程文件夹\密码锁_uvproj.bak
文件 135068 2014-12-13 22:31 密码锁电路图.DSN
目录 0 2015-07-03 23:12 密码锁工程文件夹
----------- --------- ---------- ----- ----
725820 22
相关资源
- 基于51单片机的智能大棚设计
- 基于ti 的单片机msp430g2553的硬件spi控制
- 51单片机数码管时钟
- DS18B20 多点温度测量 用proteus仿真 课
- protues仿真 数字时钟的课程设计
- 基于单片机控制的智能洗衣机设计的
- 基于51单片机的ds18b20的proteus仿真
- 单片机微波雷达信号检测程序
- 汇编语言的饮水机控制程序
- 51单片机12864液晶屏proteus仿真源代码
- 单片机简易计算器项目
- STC15系列单片机原理图/PCB库
- 基于单片机的数字电能表 程序设计
- 模拟电梯控制模拟电梯控制
- 基于51单片机的自动量程数字电压表
- 基于AT89C52单片机的智能交通灯系统设
- 基于STC89C52RC单片机的交通灯设计
- modbus RTU 的C51源程序单片机89S52编译器
- 基于msp430单片机PWM调速
- VL53l0x的51单片机程序
- 铁电存储器FM25xx驱动程序15单片机
- [程序源代码]MSP430单片机原理与应用—
- 单片机毕业设计。基于单片机的智能
- 基于51单片机循迹、红外避障、遥控综
- 基于51单片机的低频信号发生器的设计
- 基于51单片机的LED灯控制Proteus仿真
- 单片机交通灯带仿真图
- 51单片机 矩阵键盘 protues ISIS 源码和仿
- 基于单片机的交通灯keil仿真程序和
- 马达测试单片机程序
评论
共有 条评论