找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2187|回复: 2
收起左侧

密码锁电路图求程序

[复制链接]
ID:77457 发表于 2015-4-19 16:40 | 显示全部楼层 |阅读模式
各位大圣谁有程序呀?求程序
QQ图片20150419163647.png
回复

使用道具 举报

ID:254104 发表于 2017-11-27 14:06 | 显示全部楼层
#include<reg51.h> #include<intrins.h> sbit RS=P3^1; sbit RW=P3^2; sbit E=P3^3; void lcd_w_cmd(unsigned char com); void lcd_w_dat(unsigned char dat); unsigned char lcd_r_start(); void lcd_int(); void delay(unsigned int i); void delay1(); char keyscan(); void puts(unsigned char ch[]); void set_pw();                                                                                                           unsigned char codekey_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; unsigned char pw[6]={0,0,0,0,0,0,}; unsigned char pwnew[10]={0,0,0,0,0,0,0,0,0,0}; sbit P30=P3^0;   void puts(unsigned char ch[]) {  unsigned char i;  i=0;  while(ch[i]!='\0')  {   lcd_w_dat(ch[i]);   i++;   }   }   void set_pw() {  unsigned char key,count;  lcd_w_cmd(0x01);  puts("password setup:");  lcd_w_cmd(0xc0);  while(1)  {   key=keyscan();   if(key>=0&&key<=9)   {    lcd_w_dat(key+0x30);    pw[count]=key;    count++;    if(count==6)break;    P2=0xf0;    while(P2!=0xf0);}    }    }   void main() {  unsigned char i,count;  bit pw_flag;  P1=0xff;  lcd_int();  delay(255);  lcd_w_cmd(0x80);  puts("password:");  count=0;  while(1)  {   i=keyscan();   if(i!=-1)   {    if(i>=0&&i<=9)    {     pwnew[count]=i;         lcd_w_dat(i+0x30);         count++;         P2=0xf0;         while(P2!=0xf0);}         else if(i==10)         {          pw_flag=1;          if(count!=6)          pw_flag=0;          else           {            for(i=0;i<6;i++)            {             if(pw[i]!=pwnew[i])                 {                  pw_flag=0;break;}                  }             } if(pw_flag==1) {  lcd_w_cmd(0xc0);  puts("pass");  P30=0;   P2=0xf0;   while(P2!=0xf0);  while(1)  {   i=keyscan();   if(i!=-1)   break;   }   P2=0xf0;   while(P2!=0xf0);   if(i==11)set_pw();   }   else   {    lcd_w_cmd(0xc0);    P30=1;    puts("error");}    count=0;    delay(50000);    lcd_w_cmd(0x01);    puts("password:");    }}}}   char keyscan() {  char scan1,scan2,keycode,j,key;  key=-1;  P2=0xf0;  scan1=P2;  if(scan1!=0xf0)  {  delay(1200);  scan1=P2;  if(scan1!=0xf0)  {   P2=0x0f;   scan2=P2;   keycode=scan1|scan2;   for(j=0;j<16;j++)   {    if(keycode==codekey_code[j])    {     key=j;break;}         }}}         return(key);         }   void delay1() {  _nop_();  _nop_();  _nop_(); } void lcd_int() {  lcd_w_cmd(0x3c);  lcd_w_cmd(0x0e);  lcd_w_cmd(0x01);  lcd_w_cmd(0x06);  lcd_w_cmd(0x80);  }  unsigned char lcd_r_start() {  unsigned char s;  RW=1;  delay1();  RS=0;  delay1();  E=1;  delay1();  s=P1;  delay1();  E=0;  delay1();  RW=0;  delay1();  return(s);  } void lcd_w_cmd(unsigned char com) {  unsigned char i;  do{     i=lcd_r_start();         i&=0x80;         delay(2);         }         while(i!=0);  RW=0;  delay1();  RS=0;  delay1();  E=1;  delay1();  P1=com;  delay1();  E=0;  delay1();  RW=1;  delay(255);  } void lcd_w_dat(unsigned char dat) {  unsigned char i;  do{     i=lcd_r_start();         i&=0x80;         delay(2);         }         while(i!=0);  RW=0;  delay1();  RS=1;  delay1();  E=1;  delay1();  P1=dat;  delay1();  E=0;  delay1();  RW=1;  delay(255);  }    void delay(unsigned int i)   {unsigned int k;    for(k=0;k<i;k++);    }
回复

使用道具 举报

ID:254104 发表于 2017-11-27 14:07 | 显示全部楼层
#include<reg51.h>
#include<intrins.h>
sbit RS=P3^1;
sbit RW=P3^2;
sbit E=P3^3;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void lcd_int();
void delay(unsigned int i);
void delay1();
char keyscan();
void puts(unsigned char ch[]);
void set_pw();                                                                                                         
unsigned char codekey_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
unsigned char pw[6]={0,0,0,0,0,0,};
unsigned char pwnew[10]={0,0,0,0,0,0,0,0,0,0};
sbit P30=P3^0;


void puts(unsigned char ch[])
{
unsigned char i;
i=0;
while(ch[i]!='\0')
{
  lcd_w_dat(ch[i]);
  i++;
  }
  }


void set_pw()
{
unsigned char key,count;
lcd_w_cmd(0x01);
puts("password setup:");
lcd_w_cmd(0xc0);
while(1)
{
  key=keyscan();
  if(key>=0&&key<=9)
  {
   lcd_w_dat(key+0x30);
   pw[count]=key;
   count++;
   if(count==6)break;
   P2=0xf0;
   while(P2!=0xf0);}
   }
   }


void main()
{
unsigned char i,count;
bit pw_flag;
P1=0xff;
lcd_int();
delay(255);
lcd_w_cmd(0x80);
puts("password:");
count=0;
while(1)
{
  i=keyscan();
  if(i!=-1)
  {
   if(i>=0&&i<=9)
   {
    pwnew[count]=i;
        lcd_w_dat(i+0x30);
        count++;
        P2=0xf0;
        while(P2!=0xf0);}
        else if(i==10)
        {
         pw_flag=1;
         if(count!=6)
         pw_flag=0;
         else
          {
           for(i=0;i<6;i++)
           {
            if(pw[i]!=pwnew[i])
                {
                 pw_flag=0;break;}
                 }
            }
if(pw_flag==1)
{
lcd_w_cmd(0xc0);
puts("pass");
P30=0;
  P2=0xf0;
  while(P2!=0xf0);
while(1)
{
  i=keyscan();
  if(i!=-1)
  break;
  }
  P2=0xf0;
  while(P2!=0xf0);
  if(i==11)set_pw();
  }
  else
  {
   lcd_w_cmd(0xc0);
   P30=1;
   puts("error");}
   count=0;
   delay(50000);
   lcd_w_cmd(0x01);
   puts("password:");
   }}}}


char keyscan()
{
char scan1,scan2,keycode,j,key;
key=-1;
P2=0xf0;
scan1=P2;
if(scan1!=0xf0)
{
delay(1200);
scan1=P2;
if(scan1!=0xf0)
{
  P2=0x0f;
  scan2=P2;
  keycode=scan1|scan2;
  for(j=0;j<16;j++)
  {
   if(keycode==codekey_code[j])
   {
    key=j;break;}
        }}}
        return(key);
        }


void delay1()
{
_nop_();
_nop_();
_nop_();
}
void lcd_int()
{
lcd_w_cmd(0x3c);
lcd_w_cmd(0x0e);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
lcd_w_cmd(0x80);
}

unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P1;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
    i=lcd_r_start();
        i&=0x80;
        delay(2);
        }
        while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P1=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do{
    i=lcd_r_start();
        i&=0x80;
        delay(2);
        }
        while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P1=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
   void delay(unsigned int i)
  {unsigned int k;
   for(k=0;k<i;k++);
   }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表