找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機的4個按鍵(P34,P35,P36,P37)能否用一個中斷判斷控制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:598540 發(fā)表于 2020-1-18 20:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
6黑幣
51單片機的4個按鍵(P34,P35,P36,P37)能否用一個中斷判斷控制,如果能控制怎樣能實現(xiàn)這個控制

最佳答案

查看完整內(nèi)容

按鍵的話不一定需要中斷控制,也沒有這么多中斷去支持按鍵,只需要定時的輪詢就可以檢測按鍵
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:687171 發(fā)表于 2020-1-18 20:07 | 只看該作者
按鍵的話不一定需要中斷控制,也沒有這么多中斷去支持按鍵,只需要定時的輪詢就可以檢測按鍵
回復(fù)

使用道具 舉報

板凳
ID:235200 發(fā)表于 2020-1-18 21:21 | 只看該作者
把這4根線連接到74LS20的四個輸入端,輸出端連接到反相器的輸入端,反相器輸出端再連接到P32
回復(fù)

使用道具 舉報

地板
ID:437615 發(fā)表于 2020-1-18 22:27 | 只看該作者
如果你是想問是否能在外部中斷服務(wù)函數(shù)來判斷的話是可以的,開外中斷0,然后把p32用二極管分別接到其它的引腳上,然后在中斷里判斷
回復(fù)

使用道具 舉報

5#
ID:47286 發(fā)表于 2020-1-18 23:25 | 只看該作者
可以 但不好

中斷本身是無法區(qū)分按鍵 這點還不如AD按鍵 但可以用4066這種模擬開關(guān) 高速在4個開關(guān)中切換 但這么做從軟硬件方面都更麻煩 所以不好
回復(fù)

使用道具 舉報

6#
ID:158375 發(fā)表于 2020-1-19 08:26 | 只看該作者
能用一個中斷判斷按鍵控制,這要看你用那個中斷,怎么用這個中斷;別說4個按鍵,16個按鍵一樣可以用.
回復(fù)

使用道具 舉報

7#
ID:155507 發(fā)表于 2020-1-19 14:20 | 只看該作者
類似參考





  1. #include <reg51.h>
  2. #include <stdio.h>

  3. sbit key1=P3^2;//外部中斷0
  4. sbit key2=P3^4;
  5. sbit key3=P3^5;
  6. sbit key4=P3^6;
  7. sbit key5=P3^7;//外部中斷1的4個按鍵

  8. void T0_Init();
  9. void delayms(unsigned  char);


  10. void main()
  11. {
  12.         T0_Init();
  13.         while(1)
  14.         {
  15.                 P1=0Xff;
  16.         }
  17. }

  18. void T0_Init()
  19. {
  20.         EA=1;//開啟總中斷
  21.         EX0=1;//開啟外部中斷0
  22.         EX1=1;//開啟外部中斷1
  23.         IT0=0;
  24.         IT1=0;//電平觸發(fā)
  25. }

  26. void T0_T()  interrupt 0
  27. {
  28.         P1=0xf0;//全亮
  29. }

  30. void T1_T()  interrupt 2
  31. {
  32.         if(key2==0)//按鍵2按下
  33.         {
  34.                 P1=0xfe;//D1亮
  35.         }
  36.         while(!key2);//按鍵松手  松手則不亮
  37.        
  38.         if(key3==0)//按鍵3按下
  39.         {
  40.                 P1=0xfd;//D2亮
  41.         }
  42.         while(!key3);
  43.        
  44.         if(key4==0)//按鍵4按下
  45.         {
  46.                 P1=0xfb;//D3亮
  47.         }
  48.         while(!key4);
  49.        
  50.         if(key5==0)//按鍵5按下
  51.         {
  52.                 P1=0xf7;//D4亮
  53.         }
  54.         while(!key5);
  55.        
  56. }

復(fù)制代碼



回復(fù)

使用道具 舉報

8#
ID:404239 發(fā)表于 2020-1-19 22:31 | 只看該作者
要用一路中斷和N個IO組成,如電路,中斷檢測到之后,直接讀其他端口的值就可以知道是哪一路端口的按鍵按下了。

捕獲.PNG (42.13 KB, 下載次數(shù): 72)

捕獲.PNG
回復(fù)

使用道具 舉報

9#
ID:93224 發(fā)表于 2020-1-20 11:19 | 只看該作者
可以但是你的接線有問題
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表