久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4209|回復: 9
收起左側

密碼鎖源代碼

  [復制鏈接]
ID:78027 發表于 2015-4-25 15:35 | 顯示全部樓層 |閱讀模式
                                                 
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define ulong unsigned long
#define uint  unsigned  int
sbit en=P2^6;
sbit rs=P2^4;
sbit rw=P2^5;
sbit  fmq=P2^0;
sbit   qd=P2^1;
sbit LA=P3^0;  //定義兩相,選擇P2口的低四位輸
sbit LB=P3^1;        //LAALBBLCCLDD
sbit LC=P3^2;
sbit LD=P3^3;
sbit key2=P3^5;//定義按鍵3
sbit key1=P3^4;//定義按鍵4
/********函數聲明*****/
void right(unsigned int Speed,unsigned int road);//正轉
void left(unsigned int Speed,unsigned int road); //反轉
void mDelay(unsigned int DelayTime);//延時函數
int MotorStep=0;//步進索引
/*****正轉,兩個參數代表轉速和步進量**********/
void right(unsigned int Speed,unsigned int road)
{                       //步進節拍:A-B-C-D
while(road)
{
  switch(MotorStep)
  {
  case 0:LB=0;
         LC=0;
         LD=0;
         LA=1;//A
         MotorStep=1;break;
case 1:LA=0;
       LC=0;
           LD=0;
       LB=1;//B
           MotorStep=2;break;
case 2:LA=0;
       LB=0;
           LD=0;
       LC=1;//C
           MotorStep=3;break;
case 3:LA=0;
        LB=0;
                LC=0;
        LD=1;//D
                MotorStep=0;break;
                }
  mDelay(Speed);//這里的延時即控制轉速
  road--;//完成一步
  }
P2&=0XF0;//將四個腳復位0,停止
}
/********反轉,兩個參數代表轉速和步進量********/
void left(unsigned int Speed,unsigned int road)
{//步進節拍:D-C-B-A
while(road)
{
switch(MotorStep)
{
  case 3:LA=0;LC=0;LD=0;LB=1;//B
  MotorStep=2;break;
  case 2:LB=0;LC=0;LD=0;LA=1; //A
  MotorStep=1;break;
  case 1:LA=0;LB=0;LC=0;LD=1; //D
  MotorStep=0; break;
  case 0:LA=0;LB=0;LD=0;LC=1;//C
  MotorStep=3;break;
  }
mDelay(Speed);//這里的延時即控制轉速
  road--;//完成一步
  }
  P2&=0XF0;//將四個腳復位0
  }
/***********延時函數***************/
void mDelay(unsigned int DelayTime)
{
unsigned char j=0;
while(DelayTime--)
{
for(j=0;j<100;j++)
{}
}
}
void delay_1ms(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void delay()
{
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
}
bit busy(void)                  //讀出函數是否處于忙狀態
{
   bit busy_flag=0;
   rs=0;
   rw=1;
   en=1;
   delay();
   busy_flag=(bit)(P0&0x80);
   en=0;
   return busy_flag;
   }
void write_com(uchar com)                        //寫指令函數
{
    while(busy());
        rs=0;        //選擇指令寄存器
        rw=0;          //選擇寫操作
        en=0;
        delay();       
        P0=com;
        delay();
        en=1;
        delay();
        en=0;
}
void write_data(uchar date)                 //寫數據函數
{
    while(busy());    //
        rs=1;                //選擇數據寄存器
        rw=0;//選擇讀操作
        en=0;
        delay();
        P0=date;
        delay();
        en=1;
        delay();
        en=0;
}
void l1602_init()                                        //        初始化函數
{
        write_com(0x38);           //顯示模式設置
        delay_1ms(5);                   //延時5ms
        write_com(0x08);           //開顯示
        write_com(0x0f);           //開光標顯示且閃爍
        write_com(0x01);                //清屏
}
void  l1602_char(uchar hang,uchar lie,char sign)
{
  uchar a;
if(hang==1)a=0x80;
if(hang==2)a=0xc0;
  a=a+lie-1;
  write_com(a);
  write_data(sign);
}
void  l1602_string(uchar hang,uchar lie,uchar *p)
{
  uchar a,b=0;
  if(hang==1)a=0x80;
  if(hang==2)a=0xc0;
  a=a+lie-1;
  while(1)
  {write_com(a++);
   b++;
   if((*p=='\0')||(b==16))break;
    write_data(*p);
        p++;
        }
}
uchar keyscan(void)                 //鍵盤函數
  {
  uchar i,j,temp,buffer[4]={0xfe,0xfd,0xfb,0xf7} ;
   
  for(j=0;j<4;j++)
   {
    P1=buffer[j];
     temp=0x10;
     for(i=0;i<4;i++)
     {
      if(!(P1&temp))
       {   
         return(i+j*4);
        }
      temp<<=1;
      }
    }
  return 10;
  }
  void main(void)
  { uint k=1;
  uchar i=6 ,j=0;
    uchar SLED[6]={0};
    ulong key_value;
    ulong code6wei=0x123456;
    ulong  codebijiao=0;
    l1602_init();
    l1602_string(1,1,"The code is:");
        fmq=0;
        qd=1;
  while(1)
    {        key_value=10;
      P1=0xf0;
     if(P1!=0Xf0)
      {delay_1ms(70);
     if(P1!=0xf0)
     {delay_1ms(70);
       if(P1!=0Xf0)
           {
         key_value=keyscan();
                }
      }
    }
        if(key_value<10)
        {
        l1602_char(2,i,key_value+48);
        codebijiao=codebijiao|(key_value<<((5-j)*4));
        i++;
        j++;
        delay_1ms(200);
        }
        if(j==6)
        {
           if(codebijiao==code6wei)
           { qd=0;
           write_com(0x01);
            l1602_string(1,1,"right!");
            l1602_string(2,1,"welcome back!");
                   P2&=0XF0;//ULN2003A直接驅動,初始時為低電平
                while(1)                         //循環
         {
                 if(((k==1)||(k==2))&&key1==0) //1鍵按下正轉
               {  k=3;
                   if(k==4)
                   {P2=0X00;
                           while(1){}
                   }
                    right(10,200);//兩個參數代表轉速和步進量,以10的速度進200         
                                 P2=0X00;
                                 k=4;
                        }
                 if(((k==3)||(k==4))&&(key2==0))//2鍵按下反轉
                            { k=1;
                                if(k==2)
                                {P2=0X00;
                             while(1){}
                        }
                                left(10,200);
                                P2=0X00;
                                k=2;                                    
                                }
                  }
                   }
       else
             { fmq=1;
          delay_1ms(2000);
                  write_com(0x01);
              l1602_string(1,1,"wrong!");
              l1602_string(2,1,"Input again!");
              delay_1ms(1000);
                j=0;
                i=6;
                write_com(0x01);
               l1602_string(1,1,"The code is:");
                   main();
      }
        }
   }
  }
  

評分

參與人數 2黑幣 +53 收起 理由
gsgsg + 3 共享資料的黑幣獎勵!
admin + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:44267 發表于 2015-9-7 08:20 | 顯示全部樓層
沒有原理圖啊
回復

使用道具 舉報

ID:120850 發表于 2016-5-15 22:17 | 顯示全部樓層
原理圖不給一下嗎?謝謝啊
回復

使用道具 舉報

ID:122508 發表于 2016-5-22 10:27 | 顯示全部樓層
看不懂這原理啊
回復

使用道具 舉報

ID:115515 發表于 2016-5-22 12:49 | 顯示全部樓層
能給出原理圖和功能說明么不然直接這個程序也看不出所以然來
回復

使用道具 舉報

ID:122571 發表于 2016-5-22 14:44 | 顯示全部樓層
有程序就好
回復

使用道具 舉報

ID:146689 發表于 2016-11-7 22:19 | 顯示全部樓層
很不錯的,有幫助
回復

使用道具 舉報

ID:146882 發表于 2016-11-8 21:16 | 顯示全部樓層
有圖就好了
回復

使用道具 舉報

ID:158952 發表于 2016-12-30 19:55 | 顯示全部樓層
可以的不錯
回復

使用道具 舉報

ID:152650 發表于 2017-1-1 16:37 | 顯示全部樓層
怎么看著像步進電機的,,,不像密碼鎖的呢
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色精品| 国产精品视频一区二区三区, | 久久精品久久久 | 成人av大全| 欧美日韩综合 | 免费黄视频网站 | 国产精品入口麻豆www | 久久久综合网 | 日韩中文字幕视频在线 | 98久久| 三级av在线| 亚洲精品中文字幕 | 国产日韩欧美中文字幕 | 老司机精品福利视频 | 国产精产国品一二三产区视频 | 欧美在线国产精品 | 午夜免费电影院 | 91影院| 尤物视频在线免费观看 | 成人在线免费电影 | 最新日韩欧美 | 欧美精品一区二区三区在线播放 | 国产成人在线一区二区 | 精品国产99 | 成人在线一区二区 | 欧美a在线 | 日日日干干干 | 久久久久久久久久影视 | 天天躁人人躁人人躁狂躁 | 久久久久久91| 99中文字幕 | 日韩免费福利视频 | 一本色道久久综合亚洲精品高清 | 精品久久久久久国产 | 一区二区三区视频播放 | 亚洲一区国产精品 | 日韩欧美在线一区 | 亚洲精品影院 | 国产精品日韩欧美一区二区三区 | 性在线| 久久久精品视 |