资源简介

4*4按键完成输入,LCD1602显示,24C04掉电存储

资源截图

代码片段和文件信息

//----------main.c

#include 
#include 
#include <24C04.h>
#include “LCD1602.h“
#define uchar unsigned char
#define uint unsigned int 
uchar Pre_KeyNo = 16 KeyNo = 16;
uchar code title_Text[] = “Your Password...“;
uchar DSY_BUFFER[10] = ““;
uchar UserPassword[10] = ““;
sbit LED_OPEN = P2^7;
sbit Psaaword_Error = P2^6;
sbit BEEP = P3^7;
sbit LOCK =P3^0;


void Beep()
{
uchar i;
for(i = 0; i < 100; i++)
{
DelayMS(1);
BEEP = ~BEEP;
}
BEEP=0;
}

void Clear_Password()
{
UserPassword[0] = ‘\0‘;
DSY_BUFFER[0] = ‘\0‘;
}

// 主程序
//-----------------------------------------------------------------
void main()
{
   uchar i = 0;
   uchar IIC_Password[10];
   uchar IS_Valid_User = 0;
   P0 = 0xFF;     
   P1 = 0xFF;
   P2 = 0xFF;  

 //  TMOD = 0x02;                     //T0设置为8位自动重装模式
 //  TH0 = 175;                  
 //  TL0 = 175;
 //  TR0 = 1;                         //启动T0

   DelayMS(10);                
   LCD_Init();                      //初始化LCD  
   
   IIC_24C04_Init();                //初始化24C04  
   Display_String(title_Text0x00); //在第1行显示标题
   
   //24C04的内容已由初始化BIN文件导入
   //将24C04中预先写入的密码读入pass
   RecString(0xa0 0  IIC_Password 6);   
   IIC_Password[6] = ‘\0‘;
    
   while(1)
   {  
      P1 = 0xF0;
      if(P1 != 0xF0) KeyNo = Key_Scan();  //扫描键盘获取键序号KeyNo
 
      switch ( KeyNo )
      {
           case 0:  case 1: case 2: case 3: case 4: 
           case 5:  case 6: case 7: case 8: case 9:
                        
                   if ( i<= 5 )             //密码限制在6位以内
                   {
                        //如果i为0则执行一次清屏
                        if (i ==0) Display_String(“                “0x40);
                    
                        UserPassword[i] = KeyNo + ‘0‘;
                        UserPassword[i+1] = ‘\0‘;
              
                        DSY_BUFFER[i] = ‘*‘;
                        DSY_BUFFER[i+1] = ‘\0‘;
                    
                        Display_String(DSY_BUFFER0x40);
                     
                        i++;
                    }
                    break;
                
           case 10: //按A键开锁
                    if (strcmp(UserPasswordIIC_Password) == 0) 
                    {
                       LED_OPEN = 0;  //点亮LED
                       Clear_Password();
                       Display_String(“Unlock OK!      “0x40);
                       IS_Valid_User = 1;
   LOCK = 0;
   DelayMS(2500);
   LOCK = 1;
                    }
                    else 
                    {  
                       LED_OPEN =1;   //关闭LED
   while(i--){
   LOCK=1;
   Psaaword_Error = 0; 
   DelayMS(100);
   Psaaword_Error = 1;
   DelayMS(100); 
   }
   
   
                       Clear_Password();
                       Display_String(“ERROR !         “0x40);
                       IS_Val

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6056  2020-11-02 12:11  111.hex
     目录           0  2020-11-02 19:07  24C04 BIN 文件\
     文件         126  2009-02-27 16:28  24C04 BIN 文件\24c04-bin.cpp
     文件           6  2008-08-20 10:14  24C04 BIN 文件\24C04.BIN
     文件          32  2020-11-02 19:10  24C04 BIN 文件\说明.txt
     文件        1757  2020-11-02 12:07  24C04.h
     文件      108221  2009-06-04 22:02  Backup Of 用24C04与1602LCD设计电子密码锁.DBK
     文件         637  2020-11-01 14:30  KeyPAD.h
     文件      140085  2020-11-02 19:08  Last Loaded 用24C04与1602LCD设计电子密码锁.DBK
     文件        1415  2020-10-31 14:10  LCD1602.h
     文件        5331  2020-11-02 12:11  main.c
     文件      140067  2020-11-02 19:09  用24C04与1602LCD设计电子密码锁.DSN
     文件        1054  2020-11-02 19:11  用24C04与1602LCD设计电子密码锁.PWI

评论

共有 条评论