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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1435|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)四行四列密碼鍵盤(pán)虛擬終端相關(guān)問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真圖如圖
調(diào)試方法:在虛擬終端輸入大寫(xiě)A,led屏顯示“0”等待輸入密碼,輸入密碼按下ok鍵后虛擬終端顯示輸入密碼
虛擬終端輸入大寫(xiě)A后led屏顯示“0”等待輸入密碼,但按按鈕輸密碼沒(méi)反應(yīng) 晶振已調(diào)為11.0592MHz 麻煩大佬們了
代碼如下
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define OK 0x0f
#define DEL 0x0e
uchar code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0x89,0x8c,0xff,0xbf,0x8d};
uchar dbuf[4]={0x12,0x12,0x12,0x11};
uchar kbuf[4]={0,0,0,0};
sbit SPK=P3^6;
void delay(void)
{ uchar i;
  for(i=0;i<250;i++);
}
void init_serial(void)
{ SCON=0x50;
  TMOD=0x20;
  PCON=PCON&0x7f;
  TH1=-3;
  TL1=-3;
  TR1=1;
}

void sound(uint time)
{ while(time--)
     { delay();
       SPK=~SPK;
     }
}

void late(uint time)
{  while(time--)
       delay();
}

void disp(void)
{  uchar n,bsel;
   bsel=0x08;
   for(n=0;n<4;n++)
     { P2=bsel|0xf0;
       P0=segtab[dbuf[n]];
       bsel=bsel>>1;
       delay();
       P0=0xff;
     }
}
uchar getkey()
{  uchar i;
   uchar key=0;
   uchar scode,recode;
   P2=0xf0;
   if((P2&0xf0)!=0xf0)
      { for(i=1;i<20;i++)disp();
        P2=0xf0;
        if((P2&0xf0)!=0xf0)
           {scode=0xfe;
            while((scode&0x10)!=0)
               { P2=scode;
                                                                 if((P2&0xf0)!=0xf0)
                                                                 {recode=P2&0xf0;
                                                                        scode=0x10;
                                                                  while(scode!=0)
                    if(recode&scode==0)
                         { while((P2&0xf0)!=0xf0)
                                  {disp();
                                   P2=0xf0;
                                  }
                          return(key);
                         }
                      else
                        {scode=scode<<1;
                         key++;
                        }
                 }
             else
             {   scode=_crol_(scode,1);
                 key=key+4;
             }
               }
           }
      }
    return(0xff);     
}

void password(void)
{ uchar key;
  uchar klen;
  uchar i;
  klen=0;
  while(1)
    {  disp();
      key=getkey();
      if(key==OK)return;
        if(key<=0x09)
         { for(i=3;i>0;i--)
              kbuf[i]=kbuf[i-1];
              kbuf[0]=key;
              if(klen<4) klen++;
         }
        else if(key==DEL)
         { for(i=0;i<3;i++)
             kbuf[i]=kbuf[i+1];
             kbuf[3]=0;
             if(klen>0) klen--;
         }
        for(i=0;i<4;i++)
         { if(i<klen)
               dbuf[i]=0x13;
           else
               dbuf[i]=0x12;
         }
        if (klen==0)
               dbuf[0]=0;
    }
}

void main(void)
{ uchar i;
  uchar dat;
  P0=0xff;
  init_serial();
  dbuf[3]=0x11;
  while(1)
  {
     while(RI==0)disp();
       RI=0;
     dat=SBUF;
     if(dat==0x41)
       { dbuf[0]=0;
         password();
         for(i=4;i>0;i--)
             {SBUF=kbuf[i-1]+0x30;
              while(TI==0);
              TI=0;
             }
         while(RI==0)disp();
         RI=0;
         dat=SBUF;
         for(i=0;i<4;i++)dbuf[i]=0x12;
         if(dat==0x42)
         {dbuf[3]=0x11;
          sound(0x500);
         }
      else
         {dbuf[3]=0x14;
          for(i=0;i<3;i++)
             {sound(100);
              late(100);
             }
         }
       }
  }
}

1.jpg (96.47 KB, 下載次數(shù): 44)

1.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883031 發(fā)表于 2021-6-4 11:59 | 只看該作者
原理圖好像有問(wèn)題
回復(fù)

使用道具 舉報(bào)

板凳
ID:893765 發(fā)表于 2021-6-4 13:34 | 只看該作者
cn_zhx 發(fā)表于 2021-6-4 11:59
原理圖好像有問(wèn)題

請(qǐng)問(wèn)問(wèn)題出在哪里呢
回復(fù)

使用道具 舉報(bào)

地板
ID:844772 發(fā)表于 2021-6-4 14:18 | 只看該作者
1.P0沒(méi)有拉高;2.數(shù)碼管的位選不要跟鍵盤(pán)公用,還有那么多剩余的端口為啥不用?3.按鍵掃描程序有點(diǎn)問(wèn)題,我覺(jué)得主要因?yàn)槟銥榱藦?fù)用端口造成的。
回復(fù)

使用道具 舉報(bào)

5#
ID:893765 發(fā)表于 2021-6-4 15:44 | 只看該作者
glinfei 發(fā)表于 2021-6-4 14:18
1.P0沒(méi)有拉高;2.數(shù)碼管的位選不要跟鍵盤(pán)公用,還有那么多剩余的端口為啥不用?3.按鍵掃描程序有點(diǎn)問(wèn)題,我 ...

因?yàn)槲覀兘炭茣?shū)三行四列密碼鍵盤(pán)就長(zhǎng)這樣而且仿真能正常運(yùn)行 如法炮制四行四列卻出了問(wèn)題(笑cry)
回復(fù)

使用道具 舉報(bào)

6#
ID:844772 發(fā)表于 2021-6-4 21:44 | 只看該作者
田所浩二單推人 發(fā)表于 2021-6-4 15:44
因?yàn)槲覀兘炭茣?shū)三行四列密碼鍵盤(pán)就長(zhǎng)這樣而且仿真能正常運(yùn)行 如法炮制四行四列卻出了問(wèn)題(笑cry)

你還是改了不少地方,比如你反復(fù)用這句 while((P2&0xf0)!=0xf0),它僅僅是檢測(cè)是否有鍵按下,一般只用兩次啊,所以主要是鍵盤(pán)掃描程序邏輯不對(duì)啊。不過(guò)時(shí)多一位循環(huán)一次而已,不會(huì)加那么多句的,不如拿回原程序重寫(xiě)。
回復(fù)

使用道具 舉報(bào)

7#
ID:893765 發(fā)表于 2021-6-4 21:55 | 只看該作者
glinfei 發(fā)表于 2021-6-4 21:44
你還是改了不少地方,比如你反復(fù)用這句 while((P2&0xf0)!=0xf0),它僅僅是檢測(cè)是否有鍵按下,一般只用兩 ...

其實(shí)基本都是教科書(shū)代碼 對(duì)不起()
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲欧美日韩精品专区 | 欧美在线观看一区 | 国产精品视频久久 | 亚洲免费在线观看 | 久久久久国产精品午夜一区 | 就操在线 | 亚洲视频在线观看 | 久久精品网 | 99视频在线免费观看 | 精品视频亚洲 | 久久久国产精品视频 | 第四色狠狠 | 网站黄色在线 | 在线观看精品视频网站 | 91最新视频| 99热首页 | 久久久久久国产一区二区三区 | 99免费在线| 亚洲黄色网址视频 | 久久亚洲一区二区 | 中文字幕在线观看视频一区 | 中文字幕亚洲一区二区三区 | 天天操伊人 | 产真a观专区 | 亚洲成人自拍网 | 成人国产精品 | 欧美性久久 | 国产成人精品一区二区三区视频 | 精品99爱视频在线观看 | 成人亚洲精品 | 日韩高清中文字幕 | 亚洲国产成人av好男人在线观看 | 国产一区视频在线 | 在线播放一区 | 成人在线播放网站 | 国产伦一区二区三区久久 | 一区二区在线免费播放 | 成人毛片一区二区三区 | 久久免费精品 | 免费一区| 久久国产精品视频免费看 |