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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍橋杯ct107d板子 單片機按鍵控制LED位移程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:822988 發表于 2020-9-24 22:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/***************************************************************
*實驗名稱:按鍵控制LED位移
*實驗目的:1、掌握單片機IO口操作的基本方法
                  2掌握按鍵掃描即軟件延時消抖的基本原理
***************************************************************/

  1. #include "reg52.h"



  2. unsigned char read_key(void);

  3. void key_proc(unsigned char key);

  4. void delay(void);



  5. //

  6. void cls_buzz()

  7. {

  8.         P2 = (P2&0x1F|0xA0);

  9.         P0 = 0x00;

  10.         P2 &= 0x1F;

  11. }



  12. void cls_led()

  13. {

  14.         P2 = (P2&0x1F|0x80);

  15.         P0 = 0xFF;

  16.         P2 &= 0x1F;

  17. }



  18. //主函數

  19. void main(void)

  20. {

  21.     unsigned char temp;

  22.    

  23.         cls_buzz();

  24.         cls_led();

  25.    

  26.     while(1)

  27.     {

  28.         temp = read_key();

  29.         if(temp != 0xff)

  30.         {

  31.             delay();  //按鍵消抖
  32.             temp = read_key();

  33.             if(temp != 0xff)

  34.             {

  35.                 //進入按鍵處理函數
  36.                 key_proc(temp);   

  37.                 while(P3 != 0xff);     //等待按鍵釋放

  38.             }

  39.         }

  40.     }

  41. }



  42. //按鍵掃描函數

  43. unsigned char read_key(void)

  44. {

  45.     unsigned char temp;

  46.     unsigned char key_value = 0xff;

  47.    

  48.     temp = P3&0x0f;

  49.     switch(temp)

  50.     {

  51.         case 0x0e:

  52.             key_value = 1;  //S7

  53.             break;   

  54.         case 0x0d:

  55.             key_value = 2;  //S6

  56.             break;   

  57.         case 0x0b:

  58.             key_value = 3;  //S5

  59.             break;   

  60.         case 0x07:

  61.             key_value = 4;  //S4

  62.             break;   

  63.     }

  64.     return key_value;

  65. }



  66. //按鍵處理函數

  67. void key_proc(unsigned char key)

  68. {

  69.     switch(key)

  70.     {

  71.         case 1:

  72.                         P2 = (P2&0x1f|0x80);

  73.                         P0++;

  74.                         P2 &= 0x1f;

  75.             break;

  76.         case 2:

  77.                         P2 = (P2&0x1f|0x80);

  78.                         P0--;

  79.                         P2 &= 0x1f;

  80.         case 3:

  81.                         P2 = (P2&0x1f|0x80);

  82.                         P0 += 2;

  83.                         P2 &= 0x1f;

  84.             break;

  85.         case 4:

  86.                         P2 = (P2&0x1f|0x80);

  87.                         P0 -= 2;

  88.                         P2 &= 0x1f;

  89.             break;

  90.     }   

  91. }



  92. //延時函數

  93. void delay(void)

  94. {

  95.         unsigned char i, j;



  96.         i = 108;

  97.         j = 145;

  98.         do

  99.         {

  100.                 while (--j);

  101.         } while (--i);

  102. }
復制代碼

//本實驗過程簡單,適合初學者學習。代碼皆為自己原創,如有錯誤,望指正。



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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人在线看 | 欧美做暖暖视频 | 久久只有精品 | 雨宫琴音一区二区在线 | 久久性色 | 暴草美女 | 国产欧美一区二区三区另类精品 | 国产视频2021 | 免费精品 | 精精国产视频 | 日韩免费视频一区二区 | 国产精品美女在线观看 | 久久久一区二区三区四区 | www国产成人免费观看视频,深夜成人网 | 成人一级片在线观看 | 91久久| 网络毛片| 国产激情视频在线观看 | 噜噜噜噜狠狠狠7777视频 | 久久久久亚洲精品国产 | 亚洲精品一区二三区不卡 | 国产精品久久久久久久久图文区 | 国产一区视频在线 | 久久久久久毛片免费观看 | 日韩欧美一区二区三区免费观看 | 国产高清在线精品 | 亚洲精品中文字幕中文字幕 | 国产农村妇女毛片精品久久麻豆 | 亚洲国产一区二区三区, | 成人久久久久久久久 | 看av网址 | 四虎影院久久 | 欧美精品三区 | 亚洲高清在线 | 伊人精品一区二区三区 | 久久专区| 中文字幕在线第一页 | 欧美高清视频一区 | 精品99在线 | 中文字幕国产 | 日本在线免费观看 |