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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2257|回復: 1
打印 上一主題 下一主題
收起左側(cè)

51單片機CPU控制的按鍵掃描改變LED流水方式的實驗源碼

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:318620 發(fā)表于 2018-5-24 17:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按K5按鍵 P0口LED正向流水
按K6按鍵 P0口LED反向流水
按K7按鍵 P0口LED停止流水
按K8按鍵 P0口LED閃爍

  1. //CPU控制的獨立式鍵盤掃描實驗
  2. #include<reg52.h>    //包含51單片機寄存器定義的頭文件
  3. sbit S1=P1^4;        //將S1位定義為P1.4引腳
  4. sbit S2=P1^5;        //將S2位定義為P1.5引腳
  5. sbit S3=P1^6;        //將S3位定義為P1.6引腳
  6. sbit S4=P1^7;        //將S4位定義為P1.7引腳
  7. unsigned char keyval;  //儲存按鍵值
  8. /*************************************************
  9. 函數(shù)功能:流水燈延時
  10. **************************************************/
  11. void led_delay(void)
  12. {
  13.    unsigned char i,j;
  14.         for(i=0;i<250;i++)
  15.           for(j=0;j<250;j++)
  16.             ;
  17. }

  18. /*************************************************
  19. 函數(shù)功能:軟件消抖延時
  20. **************************************************/
  21. void delay30ms(void)
  22. {
  23.    unsigned char i,j;
  24.         for(i=0;i<100;i++)
  25.           for(j=0;j<100;j++)
  26.             ;
  27. }
  28. /*************************************************
  29. 函數(shù)功能:正向流水點亮LED
  30. **************************************************/
  31. void forward(void)
  32. {
  33.               P0=0xfe;         //第一個燈亮
  34.                          led_delay();
  35.                           P0=0xfd;         //第二個燈亮
  36.                          led_delay();
  37.                          P0=0xfb;          //第三個燈亮
  38.                          led_delay();
  39.                          P0=0xf7;          //第四個燈亮
  40.                          led_delay();
  41.                         P0=0xef;          //第五個燈亮
  42.                    led_delay();
  43.                         P0=0xdf;          //第六個燈亮
  44.                     led_delay();
  45.                         P0=0xbf;          //第七個燈亮
  46.                    led_delay();
  47.                         P0=0x7f;          //第八個燈亮
  48.                    led_delay();  
  49.                         P0=0xff;
  50.                         P0=0xfe;         //第一個燈亮
  51.                          led_delay();
  52. }
  53. /*************************************************
  54. 函數(shù)功能:反向流水點亮LED
  55. **************************************************/
  56.   void backward(void)
  57.   {
  58.                P0=0x7f;          //第八個燈亮
  59.                    led_delay();  
  60.                         P0=0xbf;          //第七個燈亮
  61.                    led_delay();
  62.                         P0=0xdf;          //第六個燈亮
  63.                     led_delay();
  64.                         P0=0xef;          //第五個燈亮
  65.                    led_delay();
  66.                          P0=0xf7;          //第四個燈亮
  67.                          led_delay();
  68.                         P0=0xfb;          //第三個燈亮
  69.                          led_delay();
  70.                    P0=0xfd;         //第二個燈亮
  71.                          led_delay();
  72.                         P0=0xfe;         //第一個燈亮
  73.                          led_delay();

  74.   }
  75. /*************************************************
  76. 函數(shù)功能:關閉所有LED
  77. **************************************************/
  78. void stop(void)
  79. {
  80. P0=0xff;
  81. }
  82. /*************************************************
  83. 函數(shù)功能:閃爍點亮LED
  84. **************************************************/
  85. void flash(void)
  86. {
  87.   P0=0xff;
  88.   led_delay();
  89.   P0=0x00;
  90.   led_delay();
  91. }
  92. /*************************************************
  93. 函數(shù)功能:鍵盤掃描子程序
  94. **************************************************/
  95. void key_scan(void)
  96. {
  97. if((P1&0xf0)!=0xf0)         //第一次檢測到有鍵按下
  98.                      {
  99.                               delay30ms();   //延時20ms再去檢測
  100.                                         if(S1==0)      //按鍵S1被按下
  101.                                          keyval=1;
  102.                                         if(S2==0)      //按鍵S2被按下
  103.                                          keyval=2;
  104.                                         if(S3==0)      //按鍵S3被按下
  105.                                          keyval=3;
  106.                                           if(S4==0)      //按鍵S4被按下
  107.                                          keyval=4;
  108.                                  }                 
  109. }

  110. /*************************************************
  111. 函數(shù)功能:主函數(shù)
  112. **************************************************/
  113. void main(void)  //主函數(shù)
  114. {
  115.           keyval=0;              //按鍵值初始化為0,什么也不做
  116.    while(1)
  117.            {
  118.                    key_scan();  
  119.                         switch(keyval)
  120.                                   {
  121.                                      case 1:forward();
  122.                                                  break;
  123.                                           case 2:backward();
  124.                                                  break;
  125.                                           case 3:stop();
  126.                                                  break;
  127.                                           case 4: flash();
  128.                                                  break;
  129.                                          }
  130.                         
  131.          }
  132. }
復制代碼

全部資料51hei下載地址:
CPU控制的按鍵掃描實驗.rar (12.44 KB, 下載次數(shù): 16)





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

使用道具 舉報

沙發(fā)
ID:337484 發(fā)表于 2018-5-24 18:13 | 只看該作者
謝謝分享。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表