⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_d.c

📁 通过键盘输入电子密码锁密码
💻 C
字号:
/********************************************************************************
*  描述:                                                                       *
*          应首先将8字节的ROM码(可从IBUTTION的表面获取)写入到数组      *
*       rom_secret[]中去,否则系统会提示密码验证通不过。                       *
*                                                                              *
*******************************************************************************/
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include<DEFINE.h>

uchar  rom_secret[8]={0x59,0x00,0x00,0x0d,0xea,0x45,0x77,0x01};
uchar  rom_n[8];
uchar  rom_num[8];
uchar  flag_code;
void delay_1s(void)
{
  uint i;
  uchar j;
 
  for(i=0;i<1000;i++)
    for(j=0;j<200;j++);
}
void compare_code(void)
{
  uchar i;

  i=0;
  while(rom_num[i]==rom_n[i])
  {
    i++;
  }
  if(i==8)
  {
    flag_code=1;
  }
  else
  {
    flag_code=0;
  }
  for(i=0;i<8;i++)
  {
    rom_n[i]=0x00;
  }
}
/********************************************************************
函 数 名:LED8X8_init()
功    能:8X8LED矩阵显示初始化子程序
说    明:
调    用:
入口参数:command
返 回 值:
***********************************************************************/
void LED8X8_inti()
{
  P2_0 = 0;
  P3_6 = 0;
  P2_1 = 1;
  P2_2 = 1;
  
}
main()
{
  uchar pdata hz_ts1[14]={"  密码验证通过"};
  uchar pdata hz_ts2[28]={"欢迎使用蓝海微芯实验开发系统"};
  uchar pdata hz_ts3[14]={"  输入密码有误"};
  uchar pdata hz_ts4[]={"  请输入密码"};
  uchar	i;
  uchar m;

  EX1=1;
  EA=1;
  flag=0;
  ch451_init();
  ch451_write(0x403);
  P1_4=1;
  P1_4=0;
  P1_3=1;
  P1_5=1;
  write_iic_data(rom_secret,0,8); /*将8字节的ROM码写入到24C02*/          
  delay_1s();
  read_iic_data(rom_num,0,8);     /*读出8字节的ROM码*/
  P2_1=1;
  P2_2=1;
  loop:
  initial_GLCD();
  command_GLCD(0x80);
  
  for(i=0;i<14;i++)
  {
    write_GLCD(hz_ts4[i]);
  }
  while(flag==0);
  flag=0;

  ow_reset();                     /* 发送复位信号 */
  Delay_DS1990R(20);
  write_byte(0x0f); 	          /* 发送读取DS1990R的64位ROM码命令 */
  Delay_DS1990R(14);
  for(i=8;i>0;i--)          
  {
    rom_n[i-1] = read_byte();     /*获取8字节的ROM码*/

  }
  compare_code();
  initial_GLCD();                 /*液晶屏初始化*/
  command_GLCD(0x80);             /*第一行显示*/
  if(flag_code)                   /*flag_code=1密码正确*/
  {
    flag_code=0;
    for(i=0;i<14;i++)             /*显示密码验证通过*/
    {
      write_GLCD(hz_ts1[i]);      
    }
    delay_1s();
    delay_1s();
    initial_GLCD();
    command_GLCD(0x80);
    for(i=0;i<14;i++)
    {
      write_GLCD(hz_ts2[i]);
    }
    command_GLCD(0x90);
    for(i=14;i<28;i++)
    {
      write_GLCD(hz_ts2[i]);
    }
    LED8X8_inti();
    delay_1s();
    while(1)
    {
      LED8X8_BRISK();               /*密码验证通过则使8X8LED点阵不停地闪烁*/
    }
  }
  else
  {
    for(i=0;i<14;i++)
    {
      write_GLCD(hz_ts3[i]);
    }
  }
  m=0;
  while(m<3)
  {
    m++;
    P0=0x00;                        /*密码错误则使8个红色LED不停地闪烁*/
    delay_1s();
    P0=0xff;
    delay_1s();
  }
  goto loop;                        /*提示重新输入密码*/
}
/*-----------------------------END-----------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -