资源简介

设计是以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


评论

共有 条评论