<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于51單片機(jī) 畢業(yè)設(shè)計 電子密碼鎖程序 含電路圖

          基于51單片機(jī) 畢業(yè)設(shè)計 電子密碼鎖程序 含電路圖

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏

          #include
          #include
          #include
          #define uchar unsigned char
          #define uint unsigned int
          uchar code table[]="Input Password: ";
          uchar code table1[]=" Input Error! ";
          uchar code table2[]="You are welcome!";
          uint ucSendBuffer[6]={0,0,0,0,0,0};
          uint mima[6];
          sbit lcdrs=P2^0;
          sbit lcdrw=P2^1;
          sbit lcden=P2^2;
          sbit led=P2^5;
          sbit fmq=P2^4;
          sbit jdq=P2^3;
          sbit key=P2^6;
          uint x;
          uint num,temp;
          uint keyscan();
          void delay_50us(uint t)
          {
          uint y;
          for(;t>0;t--)
          for(y=19;y>0;y--);
          }
          void delay_1ms(uint z)
          {
          uint x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--);
          }
          void delay(void)
          {
          uint i;
          for(i=100;i>0;i--)
          _nop_();
          }
          void delay1ms()
          {
          uchar i;
          for(i=124;i>0;i--); //延時124*8+10=1002us
          }
          void write_com(uchar com)
          {
          lcdrs=0;
          lcdrw=0;
          lcden=0;
          P0=com;
          delay_50us(10);
          lcden=1;
          delay_50us(20);
          lcden=0;
          }
          void write_data(uchar date)
          {
          lcden=0;
          lcdrs=1;
          lcdrw=0;
          P0=date;
          delay_50us(10);
          lcden=1;
          delay_50us(20);
          lcden=0;
          }
          void init()
          {
          write_com(0x38);
          delay_50us(100);
          write_com(0x01);
          delay_50us(100);
          write_com(0x06);
          delay_50us(100);
          write_com(0x0d);
          delay_50us(100);
          }
          void main()
          {
          uint a=0,q=0,d=0,jiesu;
          uint b=0;
          uint kai;
          delay_50us(300);
          init();
          fmq=1;
          write_com(0x80);
          for(x=0;x<16;x++)
          {
          write_data(table[x]);
          delay_50us(100);
          }
          write_com(0x80+0x44);
          while(1)
          {
          if(keyscan()!=0)
          {
          kai=keyscan();
          mima[a++]=kai;
          write_com(0x80+0x44+b);
          write_data(keyscan());
          num=0;
          b++;
          if(b>7&&kai!=0x7f)
          {
          write_com(0x80);
          for(x=0;x<16;x++)
          {
          write_data(table1[x]);
          delay_50us(100);
          }
          delay_1ms(700);
          break;
          }
          else if(kai==0x7f&&b<=7)
          {
          if(b<7)
          {
          write_com(0x80);
          for(x=0;x<16;x++)
          {
          write_data(table1[x]);
          delay_50us(100);
          }
          delay_1ms(700);
          break;
          }
          else
          {
          while(q<=5)
          {
          if(mima[q]==ucSendBuffer[q]+0x30)
          {
          d++;
          }
          q++;
          }
          if(d==6)
          {
          fmq=0;
          write_com(0x80);
          for(x=0;x<16;x++)
          {
          write_data(table2[x]);
          delay_50us(100);
          }
          jdq=0;
          delay_1ms(500);
          fmq=1;
          led=0;
          break;
          }
          else
          {
          write_com(0x80);
          for(x=0;x<16;x++)
          {
          write_data(table1[x]);
          delay_50us(100);
          }
          delay_1ms(700);
          break;
          }
          }
          }
          else if(kai==0x7e)
          {
          break;
          }
          }
          }
          }
          uint keyscan()
          {
          P1=0xef;
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f) //確認(rèn)是否按下
          {
          delay_1ms(5);
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          temp=P1;
          switch(temp)
          {
          case 0xee:num=0x31;
          break;
          case 0xed:num=0x34;
          break;
          case 0xeb:num=0x37;
          break;
          case 0xe7:num=0x7f;
          break;
          default:num=0;
          break;
          }
          while(temp!=0x0f) //松手檢測
          {
          temp=P1;
          temp=temp&0x0f;
          }
          }
          }
          P1=0xdf;
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          delay_1ms(5);
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          temp=P1;
          switch(temp)
          {
          case 0xde:num=0x32;
          break;
          case 0xdd:num=0x35;
          break;
          case 0xdb:num=0x38;
          break;
          case 0xd7:num=0x30;
          break;
          default:num=0;
          break;
          }
          while(temp!=0x0f)
          {
          temp=P1;
          temp=temp&0x0f;
          }
          }
          }
          P1=0xbf;
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          delay_1ms(5);
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          temp=P1;
          switch(temp)
          {
          case 0xbe:num=0x33;
          break;
          case 0xbd:num=0x36;
          break;
          case 0xbb:num=0x39;
          break;
          case 0xb7:num=0x7e;
          break;
          default:num=0;
          break;
          }
          while(temp!=0x0f)
          {
          temp=P1;
          temp=temp&0x0f;
          }
          }
          }
          P1=0x7f;
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          delay_1ms(5);
          temp=P1;
          temp=temp&0x0f;
          while(temp!=0x0f)
          {
          temp=P1;
          switch(temp)
          {
          case 0x7e:num=0x41;
          break;
          case 0x7d:num=0x42;
          break;
          case 0x7b:num=0x43;
          break;
          case 0x77:num=0x44;
          break;
          default:num=0;
          break;
          }
          while(temp!=0x0f)
          {
          temp=P1;
          temp=temp&0x0f;
          }
          }
          }
          return num;
          }


          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();