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

📄 miam.c

📁 C语言编写的密码锁,能实现三次输入,如果三次不对就锁定,有万能密码.
💻 C
📖 第 1 页 / 共 2 页
字号:
  else
   {dat=0;}
  clk=1;
  short_delay();
  clk=0;
  short_delay();
  out_byte=out_byte*2;
  }
dat=0;
}

//***接收***
unsigned char receive_byte(void)
{
  unsigned char i, in_byte;
  dat=1;             //设为输入状态
  //long_delay();
  for (i=0;i<8;i++)
  {
  clk=1;
  short_delay();
  in_byte=in_byte*2;
  if (dat)
    {in_byte=in_byte|0x01;}
  clk=0;
  short_delay();
  }
dat=0;
return (in_byte);
}

//***长延时***
void long_delay(void)
{
unsigned char i;
for (i=0;i<0x30;i++);
}

//***短延时***
void short_delay(void)
{
unsigned char i;
for (i=0;i<8;i++);
}
// ********************* 延时n*10ms **********************
void delay10ms(unsigned char time)
{
unsigned char i;
unsigned int j;
for (i=0;i<time;i++)
{
for(j=0;j<0x390;j++)
{
//if (!key)
//{
      ;
//}
}
}
}
//中断处理
/*void time0(void) interrupt 1
{ uint k;
  //TH0=0xf8;
  //TL0=0x2f; //设定时每隔1ms中断一次

 zz=0;
 // fz=1;
  for(k=mk;k>0;k--)
  {}
  zz=1;
 }
void time1(void) interrupt 3
{ uint j;
  fz=0;

  for(j=mk;j>0; j--)
  {}
  fz=1;
  }         */


//***主程序***
main()
{
  uchar i;
    RES=0;
 RES=1;
 mk=10;
count = 0;
  step_index = 0;
  spcount = 0;
  stop_flag = 0;
 
  EA = 1;             //允许CPU中断
  TMOD = 0x11; //设定时器0和1为16位模式1
  ET0 = 1;           //定时器0中断允许
  TH0 = 0xFE;
  TL0 = 0x0C;   //设定时每隔0.5ms中断一次
  TR0 = 1;         //开始计数
 while(1){
      PSB=1 ;
      RW=0;
     lcdreset();       //初始化LCD屏
     lcdwc(0x01);
      delay(100);
      //lcdfill(0xff);
    // delay(500);
    // lcdfill(0);
    //  lcdwc(0x01);
    // delay(1000);

     hzklib();
     delay(1000);
    // lcdwc(0x01);
   // delay(1000);
     // Disp_img(logo);	//显示湘灵电子LOGO
     // delay(4000);
     //  lcdwc(0x01);
     // delay(1000);
   // wait_cnter=0x30000;

   for (tmr=0;tmr<0x2000;tmr++); //上电延时
 send_byte(CMD_RESET); // 复位HD7279A

wait_cnter=0;
//key_number=0xff;
i=0;

 
 do
 {
 if (!key) //如果有键按下
{
  key_number=read7279(0x15);//读出键码
      lcdwshu(key_number);

    switch(key_number)
    {
    case 0x0a:    speedlevel = 250;
                      delay1(100);
                      break;
      case 0x0b:  speedlevel =20;
                       delay1(10000);
                       break;
      case 0x0c:     stop_flag=1;
                      delay1(1000);
                      break;
       case 0x0d:     stop_flag=0;
                       delay1(1000);

    }

        }
        }
         while (!key);
        }
        }
    /*  if (key_number==0x0b)
     {  unsigned int l;
     l=0;
  while(l<=40)
 {

  AA = 0;
  BB = 0;
  CC = 0;
  DD = 0;
  // delay1(speedlevel);

 gorun1(20);
  // gorun(0,20);
   l++;

    }
      }
      if(key_number==0x0a)
       {

         unsigned int l;
     l=0;
  while(l<=12)
 {

  AA = 0;
  BB = 0;
  CC = 0;
  DD = 0;
  // delay1(speedlevel);
 gorun(100);
  // gorun(0,20);
   l++;

    }
         }
      // while (!key);
    if(key_number==0x0c)
        {
          gorun2();
         // for (tmr=0;tmr<0x2000;tmr++); //上电延时
 //send_byte(CMD_RESET); // 复位HD7279A
// continue;
        }
        while (!key);
     /*  if(key_number==0x03)
        {
        mk=mk+1;}

       if(mk>=25)
       {mk=5;}        */
    //lcdwshu(key_number);
    /*  while (!key); //等待按键放开

    /*  if (!key) //如果有键按下
{
  key_number=read7279(0x15);//读出键码
      lcdwshu(key_number);
   /*   if (key_number==0x0f)
     {  unsigned int l;
     l=0;
  while(l<=40)
 {

  AA = 0;
  BB = 0;
  CC = 0;
  DD = 0;
  // delay1(speedlevel);
 gorun(20);
  // gorun(0,20);
   l++;

    }
      }    */
   /*   if(key_number==0x01)
       {

         ET0=0;
         TR0=0;
         ET1=1;
         TR1=1;
        //  for (tmr=0;tmr<0x2000;tmr++); //上电延时
 //send_byte(CMD_RESET); // 复位HD7279A
         }

     /*if(key_number==0x02)
        {
         ET1=0;
         TR1=0;
         ET0=1;
         TR0=1;
         // for (tmr=0;tmr<0x2000;tmr++); //上电延时
 //send_byte(CMD_RESET); // 复位HD7279A
        }
       if(key_number==0x03)
        {
        mk=mk+1;}

       if(mk>=25)
       {mk=5;}        */
    //lcdwshu(key_number);
  /*    while (!key); //等待按键放开
    // wait_cnter=0;
     }
//wait_cnter++;
   /*if (key_number==0x0e)
   {
    AA = 0;
    BB = 0;
    CC = 0;
    DD = 0;

  }    */


/*}
  }


// while (wait_cnter<0x6000);

 }
     }     */
//定时器0中断处理
void timeint(void) interrupt 1
{
  TH0=0xFE;
  TL0=0x0C; //设定时每隔0.5ms中断一次

  count++;

  spcount--;
  if(spcount<=0)
  {
    spcount = speedlevel;
    gorun();
  }

}

void delay1(unsigned int endcount)
{
  count=0;
  do{}while(count<endcount);
}

void gorun()
{
  if (stop_flag==1)
  {
    AA = 0;
    BB = 0;
    CC = 0;
    DD = 0;
    return;
  }

  switch(step_index)
  {
  case 0: //0
    AA = 1;
    BB = 0;
    CC = 0;
    DD = 0;
    break;
  case 1: //0、1
    AA = 1;
    BB = 1;
    CC = 0;
    DD = 0;
    break;
  case 2: //1
    AA = 0;
    BB = 1;
    CC = 0;
    DD = 0;
    break;
  case 3: //1、2
    AA = 0;
    BB = 1;
    CC = 1;
    DD = 0;
    break;
  case 4:  //2
    AA = 0;
    BB = 0;
    CC = 1;
    DD = 0;
    break;
  case 5: //2、3
    AA = 0;
    BB = 0;
    CC = 1;
    DD = 1;
    break;
  case 6: //3
    AA = 0;
    BB = 0;
    CC = 0;
    DD = 1;
    break;
  case 7: //3、0
    AA = 1;
    BB = 0;
    CC = 0;
    DD = 1;
  }

  if (turn==0)
  {
    step_index++;
    if (step_index>7)
      step_index=0;
  }
  else
  {
    step_index--;
    if (step_index<0)
      step_index=7;
  }

}

⌨️ 快捷键说明

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