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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)密碼鎖設(shè)計(jì)

作者:89s51   來源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2007年05月16日   【字體:
  1.實(shí)驗(yàn)任務(wù)

根據(jù)設(shè)定好的密碼,采用二個(gè)按鍵實(shí)現(xiàn)密碼的輸入功能,當(dāng)密碼輸入正確之后,鎖就打開,如果輸入的三次的密碼不正確,就鎖定按鍵3秒鐘,同時(shí)發(fā)現(xiàn)報(bào)警聲,直到?jīng)]有按鍵按下3種后,才打開按鍵鎖定功能;否則在3秒鐘內(nèi)仍有按鍵按下,就重新鎖定按鍵3秒時(shí)間并報(bào)警。

2.電路原理圖

圖4.32.1

3.系統(tǒng)板上硬件連線

(1).            把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的SPK IN端子上;

(2).            把“音頻放大模塊”區(qū)域中的SPK OUT端子接喇叭和;

(3).            把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0/A8-P2.7/A15用8芯排線連接到“四路靜態(tài)數(shù)碼顯示”區(qū)域中的任一個(gè)ABCDEFGH端子上;

(4).            把“單片機(jī)系統(tǒng)“區(qū)域中的P1.0用導(dǎo)線連接到“八路發(fā)光二極管模塊”區(qū)域中的L1端子上;

(5).            把“單片機(jī)系統(tǒng)”區(qū)域中的P3.6/WR、P3.7/RD用導(dǎo)線連接到“獨(dú)立式鍵盤”區(qū)域中的SP1和SP2端子上;

4.程序設(shè)計(jì)內(nèi)容

(1).            密碼的設(shè)定,在此程序中密碼是固定在程序存儲(chǔ)器ROM中,假設(shè)預(yù)設(shè)的密碼為“12345”共5位密碼。

(2).            密碼的輸入問題:

由于采用兩個(gè)按鍵來完成密碼的輸入,那么其中一個(gè)按鍵為功能鍵,另一個(gè)按鍵為數(shù)字鍵。在輸入過程中,首先輸入密碼的長(zhǎng)度,接著根據(jù)密碼的長(zhǎng)度輸入密碼的位數(shù),直到所有長(zhǎng)度的密碼都已經(jīng)輸入完畢;或者輸入確認(rèn)功能鍵之后,才能完成密碼的輸入過程。進(jìn)入密碼的判斷比較處理狀態(tài)并給出相應(yīng)的處理過程。

(3).            按鍵禁止功能:初始化時(shí),是允許按鍵輸入密碼,當(dāng)有按鍵按下并開始進(jìn)入按鍵識(shí)別狀態(tài)時(shí),按鍵禁止功能被激活,但啟動(dòng)的狀態(tài)在3次密碼輸入不正確的情況下發(fā)生的。

5.C語言源程序

#include <AT89X52.H>

unsigned char code ps[]={1,2,3,4,5};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

                               0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsigned char pslen=9;

unsigned char templen;

unsigned char digit;

unsigned char funcount;

unsigned char digitcount;

unsigned char psbuf[9];

bit cmpflag;

bit hibitflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa;

unsigned int bb;

bit alarmflag;

bit exchangeflag;

unsigned int cc;

unsigned int dd;

bit okflag;

unsigned char oka;

unsigned char okb;

void main(void)

{

  unsigned char i,j;

  P2=dispcode[digitcount];

  TMOD=0x01;

  TH0=(65536-500)/256;

  TL0=(65536-500)%6;

  TR0=1;

  ET0=1;

  EA=1;

  while(1)

    {

      if(cmpflag==0)

        {

          if(P3_6==0) //function key

            {

              for(i=10;i>0;i--)

              for(j=248;j>0;j--);

              if(P3_6==0)

                {

                  if(hibitflag==0)

                    {

                      funcount++;

                      if(funcount==pslen+2)

                        {

                          funcount=0;

                          cmpflag=1;

                         }

                       P1=dispcode[funcount];

                    }

                    else

                      {

                         second3=0;

                      }

                  while(P3_6==0);

                }

            }

          if(P3_7==0) //digit key

            {

              for(i=10;i>0;i--)

              for(j=248;j>0;j--);

              if(P3_7==0)

                {

                  if(hibitflag==0)

                    {

                      digitcount++;                     

                      if(digitcount==10)

                        {

                          digitcount=0;

                        }

                      P2=dispcode[digitcount];

                      if(funcount==1)

                        {

                          pslen=digitcount;

                          templen=pslen;

                        }

                        else if(funcount>1)

                          {

                            psbuf[funcount-2]=digitcount;

                          }

                    }

                    else

                      {

                        second3=0;

                      }

                  while(P3_7==0);

                }

            }

        }

        else

          {

            cmpflag=0;

            for(i=0;i<pslen;i++)

              {

                if(ps[i]!=psbuf[i])

                  {

                    hibitflag=1;

                    i=pslen;

                    errorflag=1;

                    rightflag=0;

                    cmpflag=0;

                    second3=0;

                    goto a;

                  }

              }

            cc=0;

            errorflag=0;

            rightflag=1;

            hibitflag=0;

a:          cmpflag=0;

          }

    }

}

 

void t0(void) interrupt 1 using 0

{

  TH0=(65536-500)/256;

  TL0=(65536-500)%6;

  if((errorflag==1) && (rightflag==0))

    {

      bb++;

      if(bb==800)

        {

          bb=0;

          alarmflag=~alarmflag;

        }

      if(alarmflag==1)

        {

          P0_0=~P0_0;

        }

      aa++;

      if(aa==800)

        {

          aa=0;

          P0_1=~P0_1;

        }

      second3++;

      if(second3==6400)

        {

          second3=0;

          hibitflag=0;

          errorflag=0;

          rightflag=0;

          cmpflag=0;

          P0_1=1;

          alarmflag=0;

          bb=0;

          aa=0;

        }

    }

  if((errorflag==0) && (rightflag==1))

    {

      P0_1=0;

      cc++;

      if(cc<1000)

        {

          okflag=1;

        }

        else if(cc<2000)

          {

            okflag=0;

          }

          else

            {

              errorflag=0;

              rightflag=0;

              hibitflag=0;

              cmpflag=0;

              P0_1=1;

              cc=0;

              oka=0;

              okb=0;

              okflag=0;

              P0_0=1;

            }

      if(okflag==1)

        {

          oka++;

          if(oka==2)

            {

              oka=0;

              P0_0=~P0_0;

            }

        }

        else

          {

            okb++;

            if(okb==3)

              {

                okb=0;

                P0_0=~P0_0;

              }

          }

    }

}

關(guān)閉窗口
主站蜘蛛池模板: 欧美一区二区三区精品免费 | 天天拍天天插 | 亚洲精品乱码久久久久v最新版 | 美女一区二区在线观看 | 中文字幕在线视频免费观看 | 黄色a三级 | 丝袜 亚洲 欧美 日韩 综合 | 91久久精品一区二区二区 | 91亚洲国产成人久久精品网站 | 欧美成人激情视频 | 国产精品日产欧美久久久久 | 在线伊人网| 欧美欧美欧美 | 国产一区二区三区网站 | 99re99| 久久免费视频在线 | 99免费在线视频 | 99久久国产 | 成人在线中文字幕 | 久久99精品国产 | 久久精彩 | 亚洲成人网在线播放 | 久久国产成人 | 日本精品久久 | 久久精品一区二区三区四区 | 一级毛片在线播放 | 婷婷一级片 | 粉嫩av| 日韩国产中文字幕 | 久久久资源| 成人在线播放网站 | 欧美一区视频 | 亚洲精品白浆高清久久久久久 | 亚洲在线一区 | 日韩一级黄色片 | 久久免费精彩视频 | 久久精品av麻豆的观看方式 | 日本亚洲一区 | 精品国产乱码一区二区三 | 2022精品国偷自产免费观看 | 中文字幕一区在线 |