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

標題: 矩陣鍵盤控制流水燈(stc89c52rc單片機) [打印本頁]

作者: hjr999    時間: 2018-8-28 20:46
標題: 矩陣鍵盤控制流水燈(stc89c52rc單片機)
鍵盤控制流水燈.rar (25.65 KB, 下載次數: 38)


剛開始學單片機,寫了個小程序。用p0操作流水燈,用p2讀取鍵盤還不太熟悉,如有謬誤麻煩指正,跟我一樣的新手可以參考一下
  1. #include <reg52.h>

  2. /*
  3.         R1C1\C2\C3\C4==>LED1\2\3\4
  4.         R2C1\C2\C3\C4==>LED5\6\7\8
  5.         P2==>鍵盤
  6.         P0==>流水燈
  7. */

  8. //functions
  9. void delayms(unsigned int);
  10. int keyScan();


  11. //VARIABLES        
  12. int a,keyNum;
  13. unsigned char num=0;
  14. unsigned char led;
  15. unsigned char lightUp[]={
  16.         0xfe,0xfd,0xfb,0xf7,
  17.         0xef,0xdf,0xbf,0x7f};

  18. void main()
  19. {
  20.                
  21.         
  22.         led=0xff;        
  23.         while(1) {
  24.                 //light up led
  25.                 P0=led;
  26.                 P2=0xfe;   //row1
  27.                 keyNum=keyScan();
  28.                 if(keyNum==0){
  29.                         P2=0xfd;   //row2
  30.                         keyNum=keyScan();
  31.                         if(keyNum==0){
  32.                                 P2=0xfb;   //row3
  33.                                 keyNum=keyScan();
  34.                                 if(keyNum==0){
  35.                                         P2=0xf7;   //row4
  36.                                         keyNum=keyScan();
  37.                                 }
  38.                         }
  39.                 }
  40.                
  41.                 if((keyNum<=7)&&(keyNum>0)){
  42.                         led=lightUp[keyNum-1];        
  43.                         //delayms(100);
  44.                 }
  45.                
  46.         }
  47.                
  48.         
  49. }
  50. void delayms(unsigned int xms)
  51. {
  52.         unsigned int i,j;
  53.         for(i=0;i<xms;i++)
  54.         {
  55.                 for(j=0;j<110;j++);
  56.         }
  57. }


  58. int keyScan(){
  59.         int key=0;
  60.         unsigned char temp;
  61.         temp=P2&0xf0;
  62.         if(temp!=0xf0){
  63.                 delayms(10);
  64.                 temp=P2&0xf0;
  65.                 if(temp!=0xf0){
  66.                         temp=P2;
  67.                         //LED=0;   //LIT LED
  68.                         switch(temp){
  69.                                 case 0xee:          //search low level column in row1
  70.                                         key=1;
  71.                                         break;
  72.                                 case 0xde:
  73.                                         key=2;
  74.                                         break;
  75.                                 case 0xbe:
  76.                                         key=3;
  77.                                         break;
  78.                                 case 0x7e:
  79.                                         key=4;
  80.                                         break;
  81.                                 case 0xed:          //row2
  82.                                         key=5;
  83.                                         break;
  84.                                 case 0xdd:
  85.                                         key=6;
  86.                                         break;
  87.                                 case 0xbd:
  88.                                         key=7;
  89.                                         break;
  90.                                 case 0x7d:
  91.                                         key=8;
  92.                                         break;
  93.                                 case 0xeb:          //row3
  94.                                         key=9;
  95.                                         break;
  96.                                 case 0xdb:
  97.                                         key=10;
  98.                                         break;
  99.                                 case 0xbb:
  100.                                         key=11;
  101.                                         break;
  102.                                 case 0x7b:
  103.                                         key=12;
  104.                                         break;
  105.                                 case 0xe7:          //row4
  106.                                         key=13;
  107.                                         break;
  108.                                 case 0xd7:
  109.                                         key=14;
  110.                                         break;
  111.                                 case 0xb7:
  112.                                         key=15;
  113.                                         break;
  114.                                 case 0x77:
  115.                                         key=16;
  116.                                         break;
  117.                         }
  118.                 }
  119.                 while(temp!=0xf0){          //wait till release
  120.                         temp=P2;
  121.                         temp=temp&0xf0;
  122.                 }
  123.         }
  124.         return key;
  125. }
復制代碼





作者: LiiK    時間: 2021-2-16 11:24
你好,keyNum的判斷是根據什么的





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: avhd101在线成人播放 | 亚洲一区| 日韩欧美大片 | 精品国产乱码久久久久久88av | 欧洲视频一区二区 | 国产亚洲网站 | 欧美精品成人一区二区三区四区 | 日韩一二区| 欧美中文在线 | 亚洲资源站 | 在线免费观看黄视频 | 天堂一区在线观看 | 国产乱码久久久久久 | 成年女人免费v片 | 日韩视频一区二区 | www.国产精品 | ww 255hh 在线观看 | 狠狠干狠狠插 | 欧美精品一区二区在线观看 | 天天久 | 精品视频一区二区三区在线观看 | 久久99精品国产自在现线小黄鸭 | 日韩中文字幕在线观看 | 国产亚洲黄色片 | 欧美综合一区 | 久久精品一区 | 国偷自产av一区二区三区 | 99精品国产一区二区青青牛奶 | a在线v| 国产伦精品一区二区三区精品视频 | 日韩在线观看网站 | 韩日精品一区 | 在线免费观看a级片 | 久草网站 | www.日本国产 | 亚洲h视频 | 久久99深爱久久99精品 | 精品视频一区二区三区 | 天天色官网 | 国产伦精品一区二区三区在线 | 国产精品视频中文字幕 |