资源简介
设计是以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 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- LED灯串电路图说明
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- silicon lab公司的收音IC SI47XX全套开发工
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 毕业论文之温度传感器DS18B20(源码
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
评论
共有 条评论