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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

結合4X4矩陣鍵盤與LCD液晶屏顯示器,將矩陣按鍵號顯示在液晶屏上。在液晶屏的第一...

[復制鏈接]
跳轉到指定樓層
樓主
ID:524955 發表于 2019-4-30 10:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
結合4X4矩陣鍵盤與LCD液晶屏顯示器,將矩陣按鍵號顯示在液晶屏上。在液晶屏的第一行顯示實驗者的姓名英文拼寫,第二行顯示:“KEY VALUE:矩陣按鍵號”

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define key P1
  6. sbit rw=P2^5;
  7. sbit rs=P2^6;
  8. sbit ep=P2^7;
  9. uchar pose;

  10. void delay(uint z)
  11. {
  12.         uint x,y;
  13.         for(x=0;x<z;x++)
  14.                 for(y=0;y<100;y++);
  15. }  

  16. bit lcd_bz()
  17. {  
  18.         bit result;
  19.         rw=1;  
  20.         rs=0;  
  21.         ep=1;  
  22.         _nop_();  
  23.         _nop_();  
  24.         _nop_();  
  25.         _nop_();  
  26.         result=(bit)(P0&0x80);  
  27.         ep=0;
  28.         return result;
  29. }

  30. void lcd_wdat(uchar dat)
  31. {
  32.         while(lcd_bz());
  33.         rs=1; //rs為1表示數據
  34.         rw=0;  
  35.         ep=0;
  36.         _nop_();
  37.         _nop_();  
  38.         P0=dat;
  39.         _nop_();
  40.         _nop_();
  41.         _nop_();
  42.         _nop_();  
  43.         ep=1;  
  44.         delay(1);
  45.         ep=0;
  46. }

  47. void lcd_w(uchar cmd)
  48. {  
  49.         while(lcd_bz());  
  50.         rs=0;//rs為0表示指令  
  51.         rw=0;  
  52.         ep=0;  
  53.         _nop_();  
  54.         _nop_();  
  55.         P0=cmd;
  56.         _nop_();
  57.         _nop_();  
  58.         _nop_();
  59.         _nop_();  
  60.         ep=1;  
  61.     delay(1);
  62.         ep=0;
  63. }

  64. void lcd_pos(uchar lie,uchar hang)
  65. {  
  66.         if(hang==1)
  67.                 lcd_w(lie+0x80);
  68.         else
  69.                 lcd_w(0x40+lie+0x80);
  70. }

  71. //液晶屏設置初始化
  72. void lcd_init()
  73. {
  74.         lcd_w(0x01);//清除顯示內容
  75.         delay(1);
  76.         lcd_w(0x38);//功能設置:雙行顯示 //數據位為8,字形大小為5X7  
  77.         delay(1);  
  78.         lcd_w(0x38);
  79.         delay(1);
  80.         lcd_w(0x0c);//顯示開關控制  
  81.         delay(1);  
  82.         lcd_w(0x06);//輸入方式設置  
  83.         delay(1);
  84. }

  85. uchar scankey()
  86. {
  87.         uchar hang,lie;
  88.         key=0xf0;
  89.         if(key!=0xf0)
  90.         {
  91.                 switch(key)
  92.                 {
  93.                         case 0x70:        hang=3;break;
  94.                         case 0xb0:        hang=2;break;
  95.                         case 0xd0:        hang=1;break;
  96.                         case 0xe0:        hang=0;break;
  97.                         default:break;
  98.                 }
  99.                 delay(5);
  100.                 key=0x0f;
  101.                 if(key!=0x0f)
  102.                 {
  103.                           switch(key)
  104.                         {
  105.                                 case 0x07:        lie=3;break;
  106.                                 case 0x0b:        lie=2;break;
  107.                                 case 0x0d:        lie=1;break;
  108.                                 case 0x0e:        lie=0;break;
  109.                                 default:break;
  110.                         }
  111.                         pose=hang*4+lie;
  112.                         return 1;
  113.                 }
  114.                 else
  115.                         return 0;
  116.         }
  117.         else
  118.                         return 0;
  119. }

  120. void main()
  121. {  
  122.        
  123.         char i;  
  124.         uchar code str1[]="xiaoming";  
  125.         uchar code str2[]="KEY VALUE: ";
  126.         uchar c[ ]={48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70};
  127.         lcd_init(); //液晶初始化  
  128.         delay(10);  
  129.         lcd_pos(0,1);
  130.         i=0;
  131.         while(str1[i]!='\0')
  132.         {  
  133.                 lcd_wdat(str1[i]);  
  134.                 i++;  
  135.         }
  136.                 //換行顯示
  137.         lcd_pos(0,2);
  138.                 i=0;
  139.                 while(str2[i]!='\0')  
  140.                 {  
  141.                         lcd_wdat(str2[i]);  
  142.                         i++;  
  143.                 }
  144.         while(1)
  145.         {
  146.                 if(scankey())
  147.                 {
  148.                          lcd_pos(12,2);
  149.                          lcd_wdat(c[pose]);
  150.                 }
  151.         }
  152.        
  153. }
復制代碼

所有資料51hei提供下載:
lcd.rar (1.02 KB, 下載次數: 39)



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

使用道具 舉報

沙發
ID:561693 發表于 2019-6-21 14:12 來自觸屏版 | 只看該作者
沒有仿真原理圖么?
回復

使用道具 舉報

板凳
ID:561693 發表于 2019-6-21 14:12 來自觸屏版 | 只看該作者
原理圖有么
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品久久一区二区三区 | 中文字幕第二区 | 欧美黄页| 免费a国产 | 日韩欧美字幕 | 狠狠撸在线视频 | 免费v片| 欧美国产日韩一区二区三区 | 国产精品久久久久久久久久久免费看 | 老司机午夜性大片 | 日日操视频 | 久久久激情视频 | 亚洲精品久久久9婷婷中文字幕 | 精品久久一区 | 99精品电影 | 国产日韩欧美一区二区 | 情侣黄网站免费看 | 久久国产区 | 色婷婷在线视频 | 欧美日韩精品一区二区三区四区 | 久久夜视频 | 国产精品美女久久久免费 | 日韩中文视频 | 人人人人干| 色综合色综合网色综合 | 亚洲高清视频一区二区 | 欧美精品福利视频 | 国产九九九九 | 91免费在线| 99精品视频在线观看 | 日韩福利视频 | 欧美一级免费 | 亚洲福利精品 | 亚洲精品片 | 81精品国产乱码久久久久久 | 精品国产乱码久久久久久图片 | 在线视频a | 精品国产一区二区三区日日嗨 | 超碰在线久 | 精品视频一区二区三区在线观看 | 精品一区二区三区免费视频 |