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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2258|回復: 7
打印 上一主題 下一主題
收起左側

74HC595輸出接按鍵,單片機怎么讀取鍵碼?

[復制鏈接]
跳轉到指定樓層
樓主

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2022-12-15 05:59 | 只看該作者
74HC595是串入并出的單向器件,不具有做輸入的功能,輸出一般是不能簡單接按鍵的,需要軟件配合。圖示的運用也不是通過595讀取鍵值,而是利用595輸出的數碼管有規律的位碼驅動電平,經KEY端返回單片機識別鍵值,以達到節省IO口的目的。雙向器件可以了解下74HC165。
回復

使用道具 舉報

板凳
ID:94031 發表于 2022-12-15 07:00 | 只看該作者
按下按鍵時讀KEY點值,看和Q0-Q3那一路同步就知道是那個鍵按下。
回復

使用道具 舉報

地板
ID:69038 發表于 2022-12-15 08:52 | 只看該作者
595在這電路中和按鍵沒有0.5元錢的關系,595在這邊只是個擴口器件而已!!
回復

使用道具 舉報

5#
ID:161164 發表于 2022-12-15 09:01 | 只看該作者
若用共陰數碼管,KEY引腳要設為上拉
當KEY收到下降沿信號時
位輸出595的數值(0xFE,0xFD,0xFB,0xF7)就是鍵值

若用共陽數碼管,KEY引腳要設為下拉
當KEY收到上升沿信號時
位輸出595的數值(0x01,0x02,0x04,0x08)就是鍵值
回復

使用道具 舉報

6#
ID:213173 發表于 2022-12-15 09:24 | 只看該作者

仿真沒有什么問題,實際運用要考慮按鍵消抖問題。
  1. #include <reg51.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit P_HC595_SER   = P2^0;
  5. sbit P_HC595_SRCLK = P2^1;
  6. sbit P_HC595_RCLK  = P2^2;
  7. sbit KEY=P2^3;

  8. unsigned char code table[]={0x70,0x79,0xee};//KEY.
  9. unsigned char code display[]={//0~f-.
  10.         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  11.         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80};
  12. unsigned char code wela[]={
  13.         0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

  14. /**************** 向HC595發送一個字節函數 ******************/
  15. void Send_595(uchar dat)
  16. {               
  17.         uchar i;
  18.         for(i=0;i<8;i++)
  19.         {
  20.                 dat <<= 1;
  21.                 P_HC595_SER  = CY; //溢出位賦值數據輸出端
  22.                 P_HC595_SRCLK = 1; //移位時鐘
  23.                 P_HC595_SRCLK = 0;
  24.         }
  25. }
  26. /**************** 向HC595發送2個字節驅動碼 ******************/
  27. void DisplayScan()
  28. {       
  29.         static uchar i,j;
  30.         Send_595(wela[i]);//向HC595發送位碼
  31. /**********根據位碼識別按鍵********/
  32.         if(!KEY)
  33.         {
  34.                 switch(i)
  35.                 {
  36.                         case 0: j= 4; break;
  37.                         case 1: j= 1; break;
  38.                         case 2: j= 2; break;
  39.                         case 3: j= 3; break;
  40.                 }
  41.         }
  42. /******************************/
  43.         if(i==3)
  44.                 Send_595(display[j]);//向HC595發送段碼顯示鍵值
  45.         else
  46.                 Send_595(table[i]);  //向HC595發送段碼顯示KEY.
  47.         P_HC595_RCLK = 1;       //鎖存輸出數據
  48.         P_HC595_RCLK = 0;
  49.         i++;
  50.         i%=4;
  51. }

  52. void main()
  53. {
  54.         P_HC595_SRCLK = 0;//初始化移位時鐘端
  55.         P_HC595_RCLK  = 0;//初始化鎖存輸出端
  56.         while(1)
  57.         {
  58.                 DisplayScan();
  59.         }
  60. }

復制代碼



回復

使用道具 舉報

7#
ID:1034262 發表于 2022-12-15 12:21 | 只看該作者
595會輪流輸出高或低,沒掃描一個,就讀一次KEY即可。
回復

使用道具 舉報

8#
ID:961242 發表于 2022-12-26 16:56 | 只看該作者
wulin 發表于 2022-12-15 09:24
仿真沒有什么問題,實際運用要考慮按鍵消抖問題。

有沒有STM32的案例程序?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产欧美 | 毛片网站在线观看视频 | 中文字幕日韩一区 | 精品欧美一区免费观看α√ | 久久婷婷麻豆国产91天堂 | 国产一区91精品张津瑜 | 二区中文字幕 | 国产精品久久久久久久久图文区 | 久久国产精品99久久久久 | av色站| 日本精品视频一区二区 | 91av在线看 | 久久久久久免费毛片精品 | 国产精品18久久久久久久 | 妖精视频一区二区三区 | 一级做a爰片性色毛片 | 亚洲午夜电影 | 黄a网站| 精精国产xxxx视频在线 | 欧美日韩精品一区二区三区视频 | 韩日一区| 日韩中文字幕一区 | 精品国产乱码久久久久久影片 | 亚洲一区不卡 | 久久精品一 | 97国产精品视频人人做人人爱 | 在线观看成人 | 欧美激情国产精品 | 蜜臀91视频 | 91视频网 | 国产精品欧美一区二区三区不卡 | 亚洲国产精品第一区二区 | 国产精品亚洲欧美日韩一区在线 | 国产人成在线观看 | 亚洲 欧美 在线 一区 | 在线免费激情视频 | 中国一级大黄大片 | 久久伊人精品 | www.日韩欧美 | 99视频在线播放 | 日韩一区二区在线视频 |