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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1733|回復: 1
打印 上一主題 下一主題
收起左側

這是我做的單片機設計代碼,實現密碼鎖功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:278453 發表于 2018-1-22 01:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <REG51.h>
#include<intrins.h>
//宏定義
#define LCM_Data  P0                  //將P0口定義為LCM_Data
#define uchar unsigned char
#define uint  unsigned int
#define w 6                                //定義密碼位數
//1602的控制腳
sbit lcd1602_rs=P2^7;
sbit lcd1602_rw=P2^6;
sbit lcd1602_en=P2^5;


sbit Scl=P3^4;                        //24C02串行時鐘
sbit Sda=P3^5;                        //24C02串行數據


sbit ALAM = P2^1;                //報警        
sbit KEY = P3^6;                //開鎖


sbit open_led=P2^2;                //開鎖指示燈(選配)


bit  operation=0;                //操作標志位
bit  pass=0;                        //密碼正確標志
bit  ReInputEn=0;                //重置輸入允許標志        
bit  s3_keydown=0;                //3秒按鍵標志位
bit  key_disable=0;                //鎖定鍵盤標志


unsigned char countt0,second;        //t0中斷計數器,秒計數器


void Delay5Ms(void);                //聲明延時函數


unsigned char code a[]={0xFE,0xFD,0xFB,0xF7};                                 //控盤掃描控制表
//液晶顯示數據數組
unsigned char code start_line[]        = {"password:       "};
unsigned char code name[]                  = { "===Coded Lock==="};        //顯示名稱
unsigned char code Correct[]         = {"     correct    "};                //輸入正確
unsigned char code Error[]           = {"      error     "};          //輸入錯誤
unsigned char code codepass[]        = {"      pass      "};
unsigned char code LockOpen[]        = {"      open      "};                //OPEN
unsigned char code SetNew[]         = {"SetNewWordEnable"};
unsigned char code Input[]           = {"input:          "};                //INPUT
unsigned char code ResetOK[]         = {"ResetPasswordOK "};
unsigned char code initword[]        = {"Init password..."};
unsigned char code Er_try[]                = {"error,try again!"};
unsigned char code again[]                = {"input again     "};


unsigned char InputData[6];                                                                        //輸入密碼暫存區
unsigned char CurrentPassword[6]={1,3,1,4,2,0};                         //管理員密碼(只可在程序中修改)
unsigned char TempPassword[6];
unsigned char N=0;                                //密碼輸入位數記數
unsigned char ErrorCont;                        //錯誤次數計數
unsigned char CorrectCont;                        //正確輸入計數
unsigned char ReInputCont;                         //重新輸入計數
unsigned char code initpassword[6]={0,0,0,0,0,0};                        //輸入管理員密碼后將密碼初始為000000




//=====================5ms延時==============================
void Delay5Ms(void)
{
        unsigned int TempCyc = 5552;
        while(TempCyc--);
}


//===================400ms延時==============================
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
while(TempCycA--)
{
  TempCycB=7269;
  while(TempCycB--);
}
}


//=============================================================================================
//================================24C02========================================================
//=============================================================================================


void mDelay(uint t) //延時
{
        uchar i;
           while(t--)
           {
                   for(i=0;i<125;i++)
                   {;}
           }
}



void Nop(void)                  //空操作
{
         _nop_();                  //僅作延時用一條語句大約1us
         _nop_();
        _nop_();
}


/*****24c02程序參照24c02時序圖*****/
/*起始條件*/


void Start(void)
{
        Scl=1;
         Nop();
         Sda=0;
         Nop();
}




/*停止條件*/
void Stop(void)
{
         Sda=0;
         Scl=1;
         Nop();
         Sda=1;
         Nop();
}


/*應答位*/
void Ack(void)
{
        Sda=0;
        Nop();
        Scl=1;
        Nop();
        Scl=0;
}


/*反向應答位*/
void NoAck(void)
{
         Sda=1;
         Nop();
         Scl=1;
         Nop();
         Scl=0;
}


/*發送數據子程序,Data為要求發送的數據*/
void Send(uchar Data)
{
           uchar BitCounter=8;
           uchar temp;
           do
           {
                   temp=Data;                                           //將待發送數據暫存temp
                   Scl=0;
                   Nop();
                   if((temp&0x80)==0x80)                   //將讀到的數據&0x80
                   Sda=1;
                   else
                   Sda=0;
                   Scl=1;
                   temp=Data<<1;                                   //數據左移
                   Data=temp;                                           //數據左移后重新賦值Data
                   BitCounter--;                                   //該變量減到0時,數據也就傳送完成了
           }
           while(BitCounter);                                   //判斷是否傳送完成
           Scl=0;
}


/*讀一字節的數據,并返回該字節值*/
uchar Read(void)
{
    uchar temp=0;
        uchar temp1=0;
        uchar BitCounter=8;
        Sda=1;
        do
        {
                Scl=0;
                Nop();
                Scl=1;
                Nop();
                if(Sda)                                   //數據位是否為1
                        temp=temp|0x01;           //為1 temp的最低位為1(|0x01,就是將最低位變為1)
                else                                   //如果為0
                        temp=temp&0xfe;           //temp最低位為0(&0xfe(11111110)最低位就是0)
                if(BitCounter-1)           //BitCounter減1后是否為真
                {
                        temp1=temp<<1;           //temp左移
                        temp=temp1;
                }
                BitCounter--;                   //BitCounter減到0時,數據就接收完了
        }
        while(BitCounter);                   //判斷是否接收完成
        return(temp);
}


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:278453 發表于 2018-1-22 01:09 | 只看該作者
大家可以試一試
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲一区二区三区四区 | 日韩国产在线 | 成人精品一区二区三区 | 九九综合 | 美女日批免费视频 | 妹子干综合| 久久久久久亚洲精品不卡 | 麻豆久久久久久久 | 国产精品久久久久9999鸭 | 久久精品1 | 亚洲a人| 欧美激情久久久 | 亚洲日韩欧美一区二区在线 | 精品久久久久久久久久久久久久 | 中文字幕亚洲欧美 | 在线观看中文视频 | 一区视频在线播放 | 成人av观看 | 国产精品久久久久久高潮 | av在线播放网 | 久久神马 | 波波电影院一区二区三区 | 在线精品一区二区 | 国产成人精品午夜视频免费 | 在线观看黄免费 | 精品国产99 | 精品国产免费一区二区三区五区 | 中文字幕综合 | 午夜欧美 | 精品欧美一区二区三区久久久 | 一级毛片免费看 | av色站 | 欧美一区2区三区4区公司二百 | 国产欧美日韩综合精品一 | 一区二区三区国产 | 国产丝袜一区二区三区免费视频 | 日韩电影在线一区 | 久久精品一级 | 激情a| 国产精品海角社区在线观看 | 亚洲区在线 |