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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

求單片機(jī)大神幫我看看這個(gè)需要改哪里?非常感謝(單片機(jī)鍵盤)

查看數(shù): 1613 | 評(píng)論數(shù): 4 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2021-10-26 15:24

正文摘要:

#include<reg51.h> void delay50ms() { unsigned t;         for(t=0;t<0x01;t++)         {            & ...

回復(fù)

ID:752974 發(fā)表于 2021-10-27 16:56
這種矩陣鍵盤用反轉(zhuǎn)法比較簡單,給你一個(gè)參考代碼。
{  
  P1 = 0x0f;
//行置低,列置高(讀列)
   if(P1!=0x0f)
    {
     // P1 = 0x0f;
      delaym(40);  //延時(shí)去抖。約60MS,可根據(jù)實(shí)際情況修改
      if(P1!=0x0f)
     {
            switch(P1)//掃描列
              {
                     case 0x07:i=3;break;
                     case 0x0b:i=2;break;
                     case 0x0d:i=1;break;
                     case 0x0e:i=0;break;
                     default:break;
             }
         //反轉(zhuǎn)行列電平,讀行
       P1 = 0xf0;
            switch(P1)
            {
                   case 0x70:j=3;break;
                   case 0xb0:j=2;break;
                   case 0xd0:j=1;break;
                   case 0xe0:j=0;break;
                   default:break;
            }
   while(P1!=0xf0);   //等待鍵釋放
  return key_word[i][j];//返回鍵值
}
ID:213173 發(fā)表于 2021-10-27 11:32
  1. #include<reg51.h>

  2. unsigned char n[]={
  3.         0xc0,0xf9,0xa4,0xb0,
  4.         0x99,0x92,0x82,0xf8,
  5.         0x80,0x90,0x88,0x83,
  6.         0xc6,0xa1,0x86,0x81};

  7. unsigned char k;

  8. void Timer1Init()   //1毫秒@12.000MHz
  9. {
  10.         TMOD= 0x10;                //設(shè)置定時(shí)器模式
  11.         TL1 = 0x18;                //設(shè)置定時(shí)初始值
  12.         TH1 = 0xFC;                //設(shè)置定時(shí)初始值
  13.         TF1 = 0;                //清除TF0標(biāo)志
  14.         TR1 = 1;                //定時(shí)器0開始計(jì)時(shí)
  15. }

  16. void scan_key(void)
  17. {
  18.         static bit sign;
  19.         static unsigned char count;
  20.         unsigned char temp;
  21.         P1=0x0f;
  22.         if(P1!=0x0f)
  23.         {
  24.                 if(++count>=10 && sign==0)
  25.                 {
  26.                         sign=1;
  27.                         temp=P1;
  28.                         temp|=0xf0;
  29.                         P1=temp;
  30.                         switch(P1)
  31.                         {
  32.                                 case 0xee:k=1;break;
  33.                                 case 0xde:k=2;break;
  34.                                 case 0xbe:k=3;break;
  35.                                 case 0x7e:k=4;break;
  36.                                 case 0xed:k=5;break;
  37.                                 case 0xdd:k=6;break;
  38.                                 case 0xbd:k=7;break;
  39.                                 case 0x7d:k=8;break;
  40.                                 case 0xeb:k=9;break;
  41.                                 case 0xdb:k=10;break;
  42.                                 case 0xbb:k=11;break;
  43.                                 case 0x7b:k=12;break;
  44.                                 case 0xe7:k=13;break;
  45.                                 case 0xd7:k=14;break;
  46.                                 case 0xb7:k=15;break;
  47.                                 case 0x77:k=16;break;
  48.                                 default:break;
  49.                         }
  50.                 }
  51.         }
  52.         else
  53.         {
  54.                 sign=0;
  55.                 count=0;
  56.         }
  57. }
  58. void main()                                                //主函數(shù)
  59. {
  60.         Timer1Init();
  61.         while(1)
  62.         {
  63.                 if(TF1)
  64.                 {
  65.                         TF1=0;
  66.                         TL1 = 0x18;
  67.                         TH1 = 0xFC;
  68.                         scan_key();
  69.                 }
  70.                 P2=n[k/10];
  71.                 P3=~n[k%10];
  72.         }
  73. }
復(fù)制代碼





ID:916650 發(fā)表于 2021-10-27 09:12




  1.                 #include<reg52.h>
  2.                 #include<intrins.h>
  3.                 #define uchar unsigned char
  4.                 #define uint unsigned int
  5.                                
  6.                 sbit DX=P2^6;//(P0為數(shù)碼管輸出端口)
  7.                 sbit WX=P2^7;
  8.                 sbit S2=P3^4;
  9.                
  10.                                
  11.                 uchar code Table_D[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  12.                 uchar code Table_W[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  13.                        
  14.                 void Delay_Us(uchar x);
  15.                 void Delay_Ms(uchar x);
  16.                 void Display(uint x);
  17.                
  18.                 void Key_Scan();
  19.                
  20.                 uchar Display_Num;
  21.                                
  22.                 void main()
  23.                         {
  24.                                 while(1)
  25.                                 {
  26.                                         Key_Scan();
  27.                                         Display(Display_Num);
  28.                                 }
  29.                         }
  30.                                
  31.                 void Delay_Us(uchar x)//12MHz_Delay:6x+10us;11.0592MHz=12MHz_Delay*1.085.
  32.                                 {
  33.                                          while(x--);
  34.                                 }
  35.                
  36.                 void Delay_Ms(uchar x)//12MHz_Delay:x+0.5~1Ms;11.0592MHz=12MHz_Delay*1.085.
  37.                                 {
  38.                                         while(x--)
  39.                                         {
  40.                                                 Delay_Us(75);
  41.                                                 Delay_Us(75);
  42.                                          }
  43.                             }
  44.                                
  45.                                 void Display(uint x)
  46.                                  {
  47.                                         P0=0xff;
  48.                                         WX=1;
  49.                                         WX=0;
  50.                                         P0=Table_D[x/100];
  51.                                         DX=1;
  52.                                         DX=0;
  53.                                         P0=Table_W[0];
  54.                                         WX=1;
  55.                                         WX=0;               
  56.                                         Delay_Ms(5);
  57.                                        
  58.                                         P0=0xff;
  59.                                         WX=1;
  60.                                         WX=0;
  61.                                         P0=Table_D[x%100/10];
  62.                                         DX=1;
  63.                                         DX=0;
  64.                                         P0=Table_W[1];
  65.                                         WX=1;
  66.                                         WX=0;       
  67.                                         Delay_Ms(5);
  68.                                        
  69.                                         P0=0xff;
  70.                                         WX=1;
  71.                                         WX=0;
  72.                                         P0=Table_D[x%100%10];
  73.                                         DX=1;
  74.                                         DX=0;
  75.                                         P0=Table_W[2];
  76.                                         WX=1;
  77.                                         WX=0;
  78.                                         Delay_Ms(5);
  79.                                  }
  80.                                
  81.                                 void Key_Scan()
  82.                                 {
  83.                                         uchar temp,Key;
  84.                                        
  85.                                         P3=0xf0;
  86.                                         temp=P3;
  87.                                         temp=temp&0xf0;
  88.                                         if(temp!=0xf0)
  89.                                         {
  90.                                                 Delay_Ms(10);
  91.                                                 if(temp!=0xf0)
  92.                                                 {
  93.                                                         temp=P3;
  94.                                                         temp=temp|0x0f;
  95.                                                         P3=temp;
  96.                                                         Key=P3;
  97.                                                        
  98.                                                         switch(Key)
  99.                                                         {
  100.                                                                 case 0xee:Display_Num=1*1;break;
  101.                                                                 case 0xde:Display_Num=2*2;break;
  102.                                                                 case 0xbe:Display_Num=3*3;break;
  103.                                                                 case 0x7e:Display_Num=4*4;break;
  104.                                                                
  105.                                                                 case 0xed:Display_Num=5*5;break;
  106.                                                                 case 0xdd:Display_Num=6*6;break;
  107.                                                                 case 0xbd:Display_Num=7*7;break;
  108.                                                                 case 0x7d:Display_Num=8*8;break;
  109.                                                                
  110.                                                                 case 0xeb:Display_Num=9*9;break;
  111.                                                                 case 0xdb:Display_Num=10*10;break;
  112.                                                                 case 0xbb:Display_Num=11*11;break;
  113.                                                                 case 0x7b:Display_Num=12*12;break;
  114.                                                                
  115.                                                                 case 0xe7:Display_Num=13*13;break;
  116.                                                                 case 0xd7:Display_Num=14*14;break;
  117.                                                                 case 0xb7:Display_Num=15*15;break;
  118.                                                                 case 0x77:Display_Num=16*16;break;
  119.                                                         }
  120.                                                 }
  121.                                         }
  122.                                 }
復(fù)制代碼



ID:916650 發(fā)表于 2021-10-27 08:34
個(gè)人覺得你的代碼邏輯有很大的問題,沒有理解按鍵檢測的原理。

首先,你定義了一個(gè)temp,然后P1=0x0f,怎么突然之間就跳到while(temp!=0x0f)了?中間不應(yīng)該有個(gè)temp=P1的過程?

其次,檢測到temp!=0x0f后,為什么讓P1=0xfe<<1?這也不會(huì)令P1最終得到真實(shí)的按鍵狀態(tài)啊。最終只會(huì)導(dǎo)致P1==0x00。

最后,switch(temp)這,temp并沒有得到真實(shí)的按鍵狀態(tài)(P1口)對(duì)應(yīng)的電平狀態(tài),自然會(huì)導(dǎo)致switch(temp)下面的語句沒起任何作用。

建議找本教材,比如郭天祥的,看看按鍵檢測的原理以及例程。或者看看視頻的講解,理解原理之后再寫代碼。

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91视频在线| 亚洲视频二区 | 午夜影院在线观看 | 91av视频在线观看 | 亚洲视频区 | 日韩三片 | 色婷婷av久久久久久久 | 99精品一区二区 | 农村妇女毛片精品久久久 | 最新超碰 | 中文字幕一区二区三区四区五区 | 爱爱小视频 | 看片国产 | 午夜一区二区三区视频 | 国产精品日韩在线 | 成人精品免费视频 | 亚洲精品久久区二区三区蜜桃臀 | 亚洲综合色丁香婷婷六月图片 | 黄色国产视频 | 久久久网 | av在线免费观看不卡 | 欧美一级黄色免费 | 婷婷久久五月天 | www.亚洲精品 | 国产伦一区二区三区视频 | 国产成人av电影 | 中文字幕韩在线第一页 | 欧美激情va永久在线播放 | 伊人网站在线观看 | 国产毛片久久久 | 亚洲精品不卡 | 欧美一区二区三区视频在线观看 | 九九热精品免费 | 国产高清久久 | 亚洲高清在线 | 亚洲欧美中文日韩在线v日本 | 黄色在线免费观看 | 久久久久一区 | 不卡在线视频 | 成人在线精品 | 亚洲国产精品久久久久秋霞不卡 |