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

📄 +_-

📁 avr单片机icc写的密码锁
💻
字号:
#include <iom16v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
#define  ulong unsigned long
#pragma  interrupt_handler  miao2:2
#include "yejing.c"
#include "451.c"
uchar j=0,g=0;
uint xg=0;
uchar mimas[]={0,0,0,0,0,0},mimac[]={2,2,2,2,2,2},mima_xg[]={0,0,0,0,0,0}; 
 void miao2()
{uchar q;
  q=ch451_read();
  switch(q)
  {
    case keycode_s1:  g=1;break;
	case keycode_s2:  g=2;break;
	case keycode_s3:  g=3;break;
	case keycode_s9:  g=4;break;
	case keycode_s10: g=5;break;
	case keycode_s11: g=6;break;
	case keycode_s17: g=7;break;
	case keycode_s18: g=8;break;
	case keycode_s19: g=9;break;
	case keycode_s4:  g=0;break;
    case keycode_s12: g=12;break;
	case keycode_s20: g=20;break;
}
if(g>=0&&g<=9)
{j++,mimas[j-1]=g;
if(j==7){j=0;}}
if(g==12)
{j=0,write_com12864(0x01),  
      delay(5); }
if(g==20)
{j=0,xg=1;
}

}

void main()
{uint i;
 //液晶配置
   port_init12864();
   lcd_init12864();
   
   write_com12864(0x01);
   delay_ms(10);
   
   //451配置
   port_init451();
   int0_init();
   ch451_init();
   ch451_write(CH451_RESET);
   ch451_write(CH451_SYSON2);
   ch451_write(CH451_TWINKLE);
   ch451_write(CH451_BCD);
   for(;;)
   {
   switch(j)
      {
     case 0:
     {if(xg==3){
	 write_com12864(0x06);  
      delay(5);
     lcd_pos12864(0,0);
     writeString12864("再入新密码");
	           }
	 if(xg==2){
	 write_com12864(0x06);  
      delay(5);
     lcd_pos12864(0,0);
     writeString12864("输入新密码");
	           }
	 if(xg==1){
	 write_com12864(0x06);  
      delay(5);
     lcd_pos12864(0,0);
     writeString12864("输入原密码");
	           }
	 if(xg==0){
	 write_com12864(0x06);  
      delay(5);
     lcd_pos12864(0,0);
     writeString12864("请输入密码");
	          }
     break;}
	  case 1:
	  {lcd_pos12864(0,5);
      write_dat12864(0X0f);
	  break;}
	  case 2:
	  {lcd_pos12864(0,5);
      write_dat12864(0X0f);
	  write_dat12864(0X0f); 
	  break;}
	  case 3:
	  {lcd_pos12864(0,6);
      write_dat12864(0X0f);
	  break;}
	  case 4:
	  {lcd_pos12864(0,6);
      write_dat12864(0X0f);
	  write_dat12864(0X0f);
	  break;}
	  case 5:
	  {lcd_pos12864(0,7);
      write_dat12864(0X0f);
	  break;}
	  case 6:
	  {lcd_pos12864(0,7);
      write_dat12864(0X0f);
	  write_dat12864(0X0f);
	  if(xg==3){
	  if(mimas[0]==mima_xg[0]&&mimas[1]==mima_xg[1]&&mimas[2]==mima_xg[2]&&mimas[3]==mima_xg[3]&&mimas[4]==mima_xg[4]&&mimas[5]==mima_xg[5])
	    {for(i=0;i<6;i++){mimac[i]=mimas_xg[i];}
		write_com12864(0x06);  
      delay(5);
     lcd_pos12864(1,0);
     writeString12864("密码修改成功!"),delay_ms(1000),write_com12864(0x01),  
      delay(5),xg=0,j=0;}
	  else{write_com12864(0x06);  
      delay(5);
     lcd_pos12864(1,0);
     writeString12864("两次密码输入不一样!");delay_ms(1000),write_com12864(0x01),  
      delay(5),xg=1,j=0;}       
			   }
	  if(xg==2) 
	  {for(i=0;i<6;i++){mima_xg[i]=mimas[i];} j=0,write_com12864(0x01);  
      delay(5); xg=3;}
	  if(xg<=1)
	  {if(mimas[0]==mimac[0]&&mimas[1]==mimac[1]&&mimas[2]==mimac[2]&&mimas[3]==mimac[3]&&mimas[4]==mimac[4]&&mimas[5]==mimac[5])
	          {
	  write_com12864(0x06);  
      delay(5);
      lcd_pos12864(1,0);
      writeString12864("密码正确!");
	  if(xg==1){delay_ms(1000),j=0,xg=2,write_com12864(0x01),  
      delay(5);}
	          }
		else{ write_com12864(0x06);  
      delay(5);
      lcd_pos12864(1,0);
      writeString12864("密码错误!");delay_ms(1000),j=0;
	     write_com12864(0x01),  
      delay(5);   }	  
	  }
	  break;}
	   }
   }   
}

⌨️ 快捷键说明

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