找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 16345|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)按鍵控制8位led燈的亮滅程序+電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
用兩個(gè)按鍵控制八燈的亮滅,一次加一或減一

以下為原程序:
  1. #include <REGX52.H>

  2. #define LED P0                                  // LED 接 P0口

  3. typedef unsigned int u16;         
  4. typedef unsigned char u8;

  5. u16 num = 0;

  6. sbit key_jia = P2^0;                          //按鍵加
  7. sbit key_jian = P2^1;                          //按鍵減

  8. /***** 0000 0001        0000 0011        0000 0111        0000 1111        0001 1111        0011 1111        0111 1111        1111 1111 *****/

  9. u8 code table[] = {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

  10. /*******************************延時(shí)********************************/
  11. void delay(u16 i)
  12. {
  13.         while(i--);
  14. }

  15. /******************************按鍵**********************************/
  16. void key(void)
  17. {
  18.         if(key_jia == 0)                                //  按鍵加
  19.         {                                                        
  20.                 delay(1000);                                //  消抖
  21.                 if(key_jia == 0)
  22.                 {
  23.                         num++;                                        //    加一
  24.                         if(num == 9)
  25.                         {
  26.                                 num = 8;                        //  最多到7
  27.                         }                        
  28.                 }
  29.                 while( !key_jia );                         //  檢測按鍵加是否松開
  30.         }

  31.         if(key_jian == 0)                                //按鍵減
  32.         {
  33.                 delay(1000);
  34.                 if(key_jian == 0)
  35.                 {
  36.                         if(num != 0)                            //  判斷是否到0
  37.                 {
  38.                                 num--;                                 //          減一
  39.                         }
  40.                         else
  41.                         {
  42.                                 num = 0;                         //   到0停
  43.                         }               
  44.                 }
  45.                 while( !key_jian );                          //  檢測按鍵減是否松開
  46.         }               
  47. }

  48. /******************************main************************/
  49. void main(void)
  50. {        
  51.         LED = table[0];                                        // 8燈為滅
  52.         while(1)
  53.         {
  54.                 key();                                                //   按鍵
  55.                 LED = table[num];                        //   led
  56.         }

復(fù)制代碼


全部資料51hei下載地址:
按鍵led及仿真.zip (56.21 KB, 下載次數(shù): 36)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表