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

標(biāo)題: 結(jié)合4X4矩陣鍵盤與LCD液晶屏顯示器,將矩陣按鍵號顯示在液晶屏上。在液晶屏的第一... [打印本頁]

作者: yichangtangguo    時間: 2019-4-30 10:04
標(biāo)題: 結(jié)合4X4矩陣鍵盤與LCD液晶屏顯示器,將矩陣按鍵號顯示在液晶屏上。在液晶屏的第一...
結(jié)合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表示數(shù)據(jù)
  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. //液晶屏設(shè)置初始化
  72. void lcd_init()
  73. {
  74.         lcd_w(0x01);//清除顯示內(nèi)容
  75.         delay(1);
  76.         lcd_w(0x38);//功能設(shè)置:雙行顯示 //數(shù)據(jù)位為8,字形大小為5X7  
  77.         delay(1);  
  78.         lcd_w(0x38);
  79.         delay(1);
  80.         lcd_w(0x0c);//顯示開關(guān)控制  
  81.         delay(1);  
  82.         lcd_w(0x06);//輸入方式設(shè)置  
  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. }
復(fù)制代碼

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




作者: 難說    時間: 2019-6-21 14:12
沒有仿真原理圖么?
作者: 難說    時間: 2019-6-21 14:12
原理圖有么




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 99精品99久久久久久宅男 | 欧美一级视频在线观看 | 久草在线在线精品观看 | 免费在线看黄 | 色在线免费 | 国产在线a| 亚洲成人一区 | 免费激情 | 欧洲成人免费视频 | 久久精品国产a三级三级三级 | 91在线观看免费视频 | 日本免费一区二区三区四区 | 在线色网 | 欧美一级二级在线观看 | 国产精品久久在线观看 | www.v888av.com | 中文字幕日本一区二区 | 国产在线不卡 | 成人精品一区二区户外勾搭野战 | 亚洲一区二区在线电影 | 毛片一级黄色 | 久久免费观看视频 | 精品一区二区三区视频在线观看 | 精品乱码一区二区三四区视频 | 一级a性色生活片久久毛片 一级特黄a大片 | 婷婷久久网 | 日韩精品免费在线观看 | 国产激情一区二区三区 | 影音先锋中文字幕在线观看 | 精品综合久久久 | 亚洲成人免费电影 | 国产香蕉视频在线播放 | 午夜久久久| 免费黄色av网站 | 最新免费黄色网址 | 欧美日韩国产在线观看 | 污视频在线免费观看 | 一区二区三区在线看 | 色综合天天天天做夜夜夜夜做 | 韩日一区二区三区 | 日日碰狠狠躁久久躁婷婷 |