欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

作者: yichangtangguo    時(shí)間: 2019-4-30 10:04
標(biāo)題: 結(jié)合4X4矩陣鍵盤(pán)與LCD液晶屏顯示器,將矩陣按鍵號(hào)顯示在液晶屏上。在液晶屏的第一...
結(jié)合4X4矩陣鍵盤(pán)與LCD液晶屏顯示器,將矩陣按鍵號(hào)顯示在液晶屏上。在液晶屏的第一行顯示實(shí)驗(yàn)者的姓名英文拼寫(xiě),第二行顯示:“KEY VALUE:矩陣按鍵號(hào)”

單片機(jī)源程序如下:
  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);//顯示開(kāi)關(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)




作者: 難說(shuō)    時(shí)間: 2019-6-21 14:12
沒(méi)有仿真原理圖么?
作者: 難說(shuō)    時(shí)間: 2019-6-21 14:12
原理圖有么




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1