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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6308|回復: 3
收起左側

4*4矩陣鍵盤1602液晶顯示仿真+單片機代碼

[復制鏈接]
ID:441229 發(fā)表于 2018-12-6 20:53 | 顯示全部樓層 |閱讀模式
(1)4*4 矩陣鍵盤布局如下,檢測按鍵,然后通過 LCD1602 顯示出來
第一行:The key value is
第二行:每按一次鍵,鍵值依次顯示出來,整行顯示完后,清屏,鍵值
從左開始顯示

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png

單片機源程序如下:
  1. /**************************************************************************************
  2. *                              LCD1602液晶顯示實驗                                                                                                  *
  3. 實現現象:下載程序后插上LCD1602液晶在開發(fā)板上,即可顯示
  4. 注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
  7. #include "lcd.h"
  8. typedef unsigned int u16;          //對數據類型進行聲明定義
  9. typedef unsigned char u8;
  10. #define LCD1602_DATAPINS P0
  11. #define GPIO_KEY P1
  12. u8 KeyValue,k=0,n=0,miss=1;
  13. u8 Disp[]="The key value is";
  14. u8 cmy[17]={'1','2','3','/','4','5','6','%','7','8','9','@','*','0','#','='};
  15. u8 dp[17]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};

  16. /*******************************************************************************
  17. * 函 數 名         : main
  18. * 函數功能                   : 主函數
  19. * 輸    入         : 無
  20. * 輸    出         : 無
  21. *******************************************************************************/
  22. void KeyDown(void)
  23. {
  24.         char a=0;
  25.         GPIO_KEY=0x0f;
  26.         if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
  27.         {
  28.                 Lcd1602_Delay1ms(10);//延時10ms進行消抖
  29.                 if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
  30.                 {        n=1;
  31.                         //測試列
  32.                         GPIO_KEY=0X0F;
  33.                         switch(GPIO_KEY)
  34.                         {
  35.                                 case(0X07):        KeyValue=0;break;
  36.                                 case(0X0b):        KeyValue=1;break;
  37.                                 case(0X0d): KeyValue=2;break;
  38.                                 case(0X0e):        KeyValue=3;break;
  39.                         }
  40.                         //測試行
  41.                         GPIO_KEY=0XF0;
  42.                         switch(GPIO_KEY)
  43.                         {
  44.                                 case(0X70):        KeyValue=KeyValue;break;
  45.                                 case(0Xb0):        KeyValue=KeyValue+4;break;
  46.                                 case(0Xd0): KeyValue=KeyValue+8;break;
  47.                                 case(0Xe0):        KeyValue=KeyValue+12;break;
  48.                         }
  49.                         while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
  50.                         {
  51.                                 Lcd1602_Delay1ms(1);
  52.                                 a++;
  53.                         }
  54.                 }
  55.         }
  56. }

  57. void main(void)
  58. {
  59.         u8 i,m;
  60.         LcdInit();
  61.         for(i=0;i<16;i++)
  62.         {        
  63.                 LcdWriteData(Disp[i]);        
  64.         }
  65.          while(miss)
  66.         {
  67.         LcdWriteCom(0x80+0x40);
  68.                  KeyDown();         
  69.                   if(n==1)
  70.                 {dp[k]=cmy[KeyValue];
  71.                 n=0;
  72.                  k++;
  73.                  }
  74.                    for(m=0;m<16;m++)
  75.             {LcdWriteData(dp[m]);}
  76.                   if(k==16)
  77.                 { for(m=0;m<16;m++)
  78.                       {dp[m]=' ';}

  79.                  Lcd1602_Delay1ms(1000);
  80.                  LcdWriteCom(0x01);
  81.                  Lcd1602_Delay1ms(1000);
  82.                  k=0;
  83.                  for(i=0;i<16;i++)
  84.         {        
  85.                 LcdWriteData(Disp[i]);        
  86.         }
  87.              }        
  88.         }                 
  89. }

  90.         
復制代碼

所有資料51hei提供下載:
44矩陣鍵盤液晶顯示.zip (74.41 KB, 下載次數: 160)
第四次實驗課要求.pdf (171.17 KB, 下載次數: 22)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:440263 發(fā)表于 2018-12-12 10:24 | 顯示全部樓層
正好需要這個
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:1153173 發(fā)表于 2025-6-8 20:26 | 顯示全部樓層

很詳細
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
ID:1153207 發(fā)表于 2025-6-9 09:33 | 顯示全部樓層
很厲害
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线播放 | 精品国产综合 | 国产一级一级毛片 | 成人亚洲 | 亚洲一区在线免费观看 | 日韩一区二区三区av | 伊人精品一区二区三区 | 欧美日韩综合精品 | 日韩精品人成在线播放 | 成人毛片视频在线播放 | 亚洲天堂中文字幕 | 亚洲精品久久久久久久久久吃药 | 中文字幕亚洲欧美日韩在线不卡 | 精品视频一区二区 | 521av网站 | 午夜影院视频在线观看 | 亚洲高清在线免费观看 | 国产精品123区 | 国内精品视频一区二区三区 | 国产精品夜夜夜一区二区三区尤 | 亚洲视频免费在线观看 | 激情久久网| 电影在线| 中文在线一区二区 | 欧美三级三级三级爽爽爽 | 成人动慢| 日本福利视频免费观看 | 日韩三级精品 | 国产一区二区三区高清 | 日日操夜夜操天天操 | 日韩在线播放第一页 | 成人精品免费视频 | 国产乱码久久久久久一区二区 | 国产一区二 | 91不卡在线 | 五月激情婷婷在线 | 欧美在线视频不卡 | 91精品一区二区三区久久久久 | 国产精品成人一区二区三区夜夜夜 | 国产精品亚洲一区二区三区在线 | 久久久精品网 |