• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 自己做的基于單片機(jī)的密碼鎖設(shè)計(c語言設(shè)計)

    自己做的基于單片機(jī)的密碼鎖設(shè)計(c語言設(shè)計)

    作者: 時間:2011-08-16 來源:網(wǎng)絡(luò) 收藏

    做的(c

    本文引用地址:http://www.czjhyjcfj.com/article/172558.htm

    系統(tǒng)說明

    該系統(tǒng)如圖所示使用了80C51、普通鍵盤、排阻、1602液晶。

    該系統(tǒng)的功能:

    ①該系統(tǒng)輸入正確的密碼LED燈會亮(其實就是很多操作都可以,用LED只是代表作用,主要是操作簡單,效果明顯。)

    ②系統(tǒng)可以修改密碼;(系統(tǒng)斷電后重啟后必須用初始密碼(初始密碼是:000000)重新改密,當(dāng)然修改的密碼可以與掉電前的一樣。)

    具體操作:

    ①系統(tǒng)開機(jī)時顯示請輸入密碼的提示,直接輸入密碼#鍵確認(rèn)

    ②系統(tǒng)會自動提醒密碼錯誤,數(shù)秒后系統(tǒng)會再次提醒重新輸密碼。

    ③在系統(tǒng)提醒輸入密碼的界面可以按*鍵修改密碼,系統(tǒng)會提醒輸入兩次密碼,并且會檢查兩次密碼是否相同。同則修改成功。否則在數(shù)秒后可以重新按*鍵修改。

    ④在改密前(就是按了*鍵后系統(tǒng))會提醒身份識別,請輸入舊密碼,系統(tǒng)判斷舊密碼正確方可更改密碼。

    源程序

    #includereg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit lcdrs=P3^0;
    sbit lcdrw=P3^1;
    sbit lcden=P3^2;
    sbit h1=P1^0;
    sbit h2=P1^1;
    sbit h3=P1^2;
    sbit sa=P1^3;
    sbit sb=P1^4;
    sbit sc=P1^5;
    sbit sd=P1^6;
    sbit kd=P3^7;
    uchar code table[]= PLEASE INPUT ;
    uchar code table1[]=CODE: ;
    uchar code table2[]= *****WIN*****;
    uchar code table3[]= PLEASE AFFIRM;
    uchar code table4[]= *****FAIL*****;
    uchar code table5[]= MODIFICATION;
    uchar code table6[]= IDENTITY LIMITS ;
    uchar unm,M1,M2,M3,M4,M5,M6,sex,k1,k2,k3,k4,k5,k6,flge,flge1;
    uchar q1,q2,q3,q4,q5,q6,w1,w2,w3,w4,w5,w6,g;

    void delay(int z)
    {
    int x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }

    void delay1(int z)
    {
    int x,y;
    for(x=z;x>0;x--)
    for(y=20000;y>0;y--);
    }

    void writen_com(uchar com) //1602寫命令
    {
    lcdrs=0;
    P0=com;
    delay(1);
    lcden=1;
    delay(1);
    lcden=0;
    }

    void writen_dat(uchar dat) //1602寫數(shù)據(jù)
    {
    lcdrs=1;
    P0=dat;
    delay(1);
    lcden=1;
    delay(1);
    lcden=0;
    }

    void main();

    void cheak_mima() //檢查第二次確認(rèn)密碼是否與第一次相同
    {
    if(q1==w1)
    {
    if(q2==w2)
    {
    if(q3==w3)
    {
    if(q4==w4)
    {
    if(q5==w5)
    {
    if(q6==w6)
    {
    writen_com(0x01);
    writen_com(0x0f);
    writen_com(0x06);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table5[unm]);
    delay(5);
    }
    writen_com(0x80+0x40+1);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table2[unm]);
    delay(5);
    }

    M1=w1;
    M2=w2;
    M3=w3;
    M4=w4;
    M5=w5;
    M6=w6;

    delay1(6);
    main();
    }
    /*-----------------------------------*///密碼確認(rèn)錯誤返回
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }
    writen_com(0x01);
    writen_com(0x80);
    for(unm=0;unm14;unm++)
    {
    writen_dat(table4[unm]);
    delay(5);
    }
    delay1(6);
    main();
    }

    /*------------------------------------*/ //第二次確認(rèn)密碼

    void affirm_code()
    {
    P1=0x07;
    if(P1!=0x07)
    delay(1);
    if(P1!=0x07)
    {
    P1=0x77;
    if(h1==0)
    {
    delay(1);
    if(h1==0)
    {
    while(!h1);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=1;break;
    case 1:w2=1;break;
    case 2:w3=1;break;
    case 3:w4=1;break;
    case 4:w5=1;break;
    case 5:w6=1;break;
    }
    sex++;
    }
    }
    if(h2==0)
    {
    delay(1);
    if(h2==0)
    {
    while(!h2);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=2;break;
    case 1:w2=2;break;
    case 2:w3=2;break;
    case 3:w4=2;break;
    case 4:w5=2;break;
    case 5:w6=2;break;
    }
    sex++;
    }
    }
    if(h3==0)
    {
    delay(1);
    if(h3==0)
    {
    while(!h3);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=3;break;
    case 1:w2=3;break;
    case 2:w3=3;break;
    case 3:w4=3;break;
    case 4:w5=3;break;
    case 5:w6=3;break;
    }
    sex++;
    }
    }
    /*-------------------------------*/
    P1=0x6f;
    if(h1==0)
    {
    delay(1);
    if(h1==0)
    {
    while(!h1);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=4;break;
    case 1:w2=4;break;
    case 2:w3=4;break;
    case 3:w4=4;break;
    case 4:w5=4;break;
    case 5:w6=4;break;
    }
    sex++;
    }
    }
    if(h2==0)
    {
    delay(1);
    if(h2==0)
    {
    while(!h2);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=5;break;
    case 1:w2=5;break;
    case 2:w3=5;break;
    case 3:w4=5;break;
    case 4:w5=5;break;
    case 5:w6=5;break;
    }
    sex++;
    }
    }
    if(h3==0)
    {
    delay(1);
    if(h3==0)
    {
    while(!h3);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=6;break;
    case 1:w2=6;break;
    case 2:w3=6;break;
    case 3:w4=6;break;
    case 4:w5=6;break;
    case 5:w6=6;break;
    }
    sex++;
    }
    }
    /*--------------------------------*/
    P1=0x5f;
    if(h1==0)
    {
    delay(1);
    if(h1==0)
    {
    while(!h1);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=7;break;
    case 1:w2=7;break;
    case 2:w3=7;break;
    case 3:w4=7;break;
    case 4:w5=7;break;
    case 5:w6=7;break;
    }
    sex++;
    }
    }
    if(h2==0)
    {
    delay(1);
    if(h2==0)
    {
    while(!h2);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=8;break;
    case 1:w2=8;break;
    case 2:w3=8;break;
    case 3:w4=8;break;
    case 4:w5=8;break;
    case 5:w6=8;break;
    }
    sex++;
    }
    }
    if(h3==0)
    {
    delay(1);
    if(h3==0)
    {
    while(!h3);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=9;break;
    case 1:w2=9;break;
    case 2:w3=9;break;
    case 3:w4=9;break;
    case 4:w5=9;break;
    case 5:w6=9;break;
    }
    sex++;
    }
    }
    /*-----------------------------------*/
    P1=0x3f;
    if(h2==0)//0鍵掃描
    {
    delay(1);
    if(h2==0)
    {
    while(!h2);
    writen_com(0x80+0x45+sex);
    writen_dat('*');
    switch(sex)
    {
    case 0:w1=0;break;
    case 1:w2=0;break;
    case 2:w3=0;break;
    case 3:w4=0;break;
    case 4:w5=0;break;
    case 5:w6=0;break;
    }
    sex++;
    }
    }
    if(h3==0) //#鍵掃描
    {
    delay(1);
    if(h3==0)
    {
    while(!h3);
    while(!flge1)
    cheak_mima();
    }
    }
    }
    }

    /*--------------------------------------*/ //修改密碼


    上一頁 1 2 3 4 5 下一頁

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 昌宁县| 滨海县| 关岭| 平昌县| 宜川县| 綦江县| 浦东新区| 察隅县| 曲阳县| 阳江市| 扎囊县| 阳高县| 金秀| 安康市| 罗城| 贺州市| 漳平市| 前郭尔| 东辽县| 伽师县| 鄂托克前旗| 东丽区| 垣曲县| 介休市| 庆城县| 阿巴嘎旗| 日土县| 博乐市| 灵川县| 广水市| 蒙阴县| 砀山县| 威远县| 亳州市| 塘沽区| 应城市| 白朗县| 清苑县| 崇文区| 台东县| 新蔡县|