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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6851|回復: 4
收起左側(cè)

強大的單片機密碼鎖程序(可密碼更改,按上鎖按鍵關(guān)閉密碼鎖,設置密碼)

[復制鏈接]
ID:430893 發(fā)表于 2019-7-27 09:59 | 顯示全部樓層 |閱讀模式
/*******************************************************************************
初始密碼:000000         密碼位數(shù):6位
注意:掉電后,所設密碼會丟失,重新上電時,密碼恢復為原始的000000
與P1.0相連的8位發(fā)光LED點亮代表鎖被打開;熄滅代表鎖被鎖上
程序功能:
                  1、開鎖:
                  下載程序后,直接按六次數(shù)字0(即代表密碼000000),LED亮,鎖被打開,輸入密碼時,
                  六位數(shù)碼管依次顯示小橫杠。
                  2、更改密碼:
                  只有當開鎖(LED亮)后,該功能方可使用。
                  首先按下更改密碼鍵,然后設置相應密碼,此時六位數(shù)碼管會顯示設置密碼對應
                  的數(shù)字。最后設置完六位后,按下
      確認密碼更改,此后新密碼即生效。
                  3、重試密碼:
                  當輸入密碼時,密碼輸錯后按下重試鍵,可重新輸入六位密碼。
                  當設置密碼時,設置中途想更改密碼,也可按下此鍵重新設置。
                  4、關(guān)閉密碼鎖:
                  按下上鎖按鍵即可將打開的密碼鎖關(guān)閉。
                  
功能測試:輸入原始密碼000000---按下更改密碼按鍵---按0到9設置密碼---按確認鍵
       密碼更改---按上鎖按鍵關(guān)閉密碼鎖---輸入新的密碼打開密碼鎖
*******************************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar old1,old2,old3,old4,old5,old6; //原始密碼000000
unsigned char PassWord[6];
uchar new1,new2,new3,new4,new5,new6;  //每次MCU采集到的密碼輸入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入數(shù)碼管顯示的變量
uchar wei,key,temp;
unsigned char st=0;
bit allow,genggai,ok,wanbi,retry,close;         //各個狀態(tài)位         

sbit beep=P3^6;
sbit Lock=P3^7;
sbit GLED=P3^5;
sbit RLED=P3^4;
sbit SCL = P3^3;                  //引腳定義
sbit SDA = P3^2;
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};

void InitI2C();
void I2CStart();
void I2CStop();
void I2CSend(uchar byte);
uchar I2CRead();
uchar read_eeprom(uchar addr);
void write_eeprom(uchar addr, uchar databyte);
/*****************************************************************************
** 函數(shù)名稱:delay
** 功能描述:延時
******************************************************************************/
void delay(unsigned int i)
{
        uint j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}

/*****************************************************************************
** 函數(shù)名稱:InitI2C
** 功能描述:配置模擬I2C的IO端口
******************************************************************************/
void InitI2C()
{
         SDA = 1;
         SCL = 1;
}
/*****************************************************************************
** 函數(shù)名稱:I2CStart
** 功能描述:發(fā)送I2C總線起始狀態(tài)
** 輸    入:無
** 輸    出:無
** 全局變量:無
** 調(diào)用模塊:delay()
** 可移植性:直接移植
******************************************************************************/
void I2CStart()
{
        SDA = 1;   
        delay(1);      // 延時子程序
        SCL = 1;
        delay(1);
        SDA = 0;
        delay(1);
        SCL = 0;
}
/*****************************************************************************
** 函數(shù)名稱:I2CStop
** 功能描述:發(fā)送I2C總線停止起始狀態(tài)
** 輸    入:無
** 輸    出:無
** 全局變量:無
** 調(diào)用模塊:delay()
** 可移植性:直接移植
******************************************************************************/
void I2CStop()
{
        SCL = 0;
    delay(1);
        SDA = 0;
        delay(1);
        SCL = 1;
        delay(1);
        SDA = 1;
        delay(1);
}
/*****************************************************************************
** 函數(shù)名稱:I2CSend
** 功能描述:向I2C總線發(fā)送一個字節(jié)數(shù)據(jù),并檢測應答
** 輸    入:待發(fā)送字節(jié)byte
** 輸    出:無
** 全局變量:無
** 調(diào)用模塊:delay()
** 可移植性:直接移植
******************************************************************************/
void I2CSend(uchar byte)
{
        uchar mask;
        uchar i;
        mask = 0x80;
        for(i = 0; i < 8; i++)
        {
                SCL = 0;
                delay(1);
                if((mask & byte) == 0)
                {
                        SDA = 0;
                }
                else
                {
                        SDA = 1;
                }
                mask >>= 1;
                delay(1);
                SCL = 1;
                delay(1);
        }
        
        SCL = 0;
        SDA = 1;
        delay(1);
        SCL = 1;
        delay(1);
        SCL = 0;

        
}
/*****************************************************************************
** 函數(shù)名稱:I2CRead
** 功能描述:從I2C總線讀取最后一個字節(jié)數(shù)據(jù),并發(fā)送非應答位
** 輸    入:無
** 輸    出:接收到的字節(jié)byte
** 全局變量:無
** 調(diào)用模塊:delay()
** 可移植性:直接移植
******************************************************************************/
uchar I2CRead()
{
        uchar byte;
        uchar i;
        byte = 0;
        for(i = 0; i < 8; i++)
        {
                SCL = 0;
                SDA = 1;
                delay(1);
                SCL = 1;
                delay(1);
                byte <<= 1;         
                if(SDA == 1)
                {
                        byte |= 0x01;
                }
                delay(1);
        }
        SCL = 0;
        SDA = 1;
        delay(1);
        SCL = 1;
        delay(1);
        SCL = 0;
        
        return byte;
}
/*****************************************************************************
** 函數(shù)名稱:read_eeprom
** 功能描述:讀取EEPROM數(shù)據(jù)函數(shù)
** 輸    入:EEPROM中目的地址addr
** 輸    出:讀取的數(shù)據(jù)
******************************************************************************/
uchar read_eeprom(uchar addr)
{
        uchar databyte;
        I2CStart();
        I2CSend(0xa0);
        I2CSend(addr);
        I2CStart();
        I2CSend(0xa1);
        databyte = I2CRead();
        I2CStop();
        return databyte;
        
}
/*****************************************************************************
** 函數(shù)名稱:write_eeprom
** 功能描述:向EEPROM寫入數(shù)據(jù)函數(shù)
** 輸    入:EEPROM中目的地址addr及寫入的數(shù)據(jù)
** 輸    出:無
******************************************************************************/
void write_eeprom(uchar addr, uchar databyte)
{
        I2CStart();
        I2CSend(0xa0);            
        I2CSend(addr);
        I2CSend(databyte);
        I2CStop();
}
void display(void)
{
        
   switch(st)
        {
                case 0: st=1;P0=0xff;P2=table[a];P0=0xfe;break;
                case 1: st=2;P0=0xff;P2=table;P0=0xfd;break;
                case 2: st=3;P0=0xff;P2=table[c];P0=0xfb;break;
                case 3: st=4;P0=0xff;P2=table[d];P0=0xf7;break;
                case 4: st=5;P0=0xff;P2=table[e];P0=0xef;break;
                case 5: st=0;P0=0xff;P2=table[f];P0=0xdf;break;
        }
}
void Timer0() interrupt 1
{
        TR0=0;
         TH0  = (65535-2000)/256;
        TL0  = (65535-2000)%256;
        display();

//............................................剩余代碼請下載壓縮包..........................................

QQ圖片20190727095845.png

密碼鎖.zip

49.43 KB, 下載次數(shù): 60, 下載積分: 黑幣 -5

強大的密碼鎖(可密碼更改,按上鎖按鍵關(guān)閉密碼鎖,設置密碼)

回復

使用道具 舉報

ID:1 發(fā)表于 2019-7-27 22:17 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

ID:56665 發(fā)表于 2019-7-31 08:21 | 顯示全部樓層
下載了,謝謝分享,最好有原理圖。
回復

使用道具 舉報

ID:863477 發(fā)表于 2020-12-19 16:32 | 顯示全部樓層
有沒有原理圖
回復

使用道具 舉報

ID:851329 發(fā)表于 2020-12-19 17:13 | 顯示全部樓層
來個原理圖就完美了。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本中文字幕一区 | аⅴ资源新版在线天堂 | 亚洲福利一区 | 九九热在线免费视频 | 嫩草最新网址 | 国产日产久久高清欧美一区 | 日本在线视频一区二区 | 成人一区二区三区在线观看 | 成人乱人乱一区二区三区软件 | 午夜视频免费 | 美女在线视频一区二区三区 | 欧美成人在线影院 | a级黄色片在线观看 | 一道本视频| 国产精品国产成人国产三级 | 国产玖玖 | 婷婷久久精品一区二区 | 人人爽人人爽人人片av | 精品国产伦一区二区三区观看说明 | 国产一区视频在线 | 亚洲成人精品一区二区 | 欧美精品在欧美一区二区 | 亚洲人成免费 | a中文在线视频 | 国产一区精品在线 | 久久久婷婷 | 国产成人精品久久二区二区 | 一区二区在线不卡 | 99热.com| 欧美久久精品一级黑人c片 91免费在线视频 | 欧美mv日韩mv国产网站91进入 | 亚洲精品乱码久久久久久黑人 | 欧美日韩一区精品 | 91免费电影 | 一级欧美日韩 | 欧美乱码精品一区二区三区 | 成人精品一区二区三区 | 亚洲视频在线观看 | 先锋资源网| 国产成人精品在线播放 | 欧美国产一区二区 |