找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助:(一個輕觸開關控制2個LED燈點亮)STC單片機小程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:65170 發(fā)表于 2014-8-18 08:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位單片機師傅們好!我剛剛才學習單片機,很想做一個單片機由一個輕觸開關控制2個LED燈點亮。當按一下時第一個燈亮再按一下時第一個燈滅第二個燈亮,單片機用STC12C2052或STC89C52.那位師傅有的話發(fā)給我,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:58502 發(fā)表于 2014-8-18 12:43 | 只看該作者
#include <reg51.h>
sbit  K1 = P0^0;
sbit  LED1 = P1^0;
sbit  LED2 = P1^1;
void delayms(unsigned char ms)        
// 延時子程序
{                                                
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i < 120; i++);
        }
}
main()
{
  LED1==0; //先點亮第一個燈
while(1)
  {
     if(K1 == 0)  
       {LED1==!LED1;
        LED2==!LED2;  //將兩個燈取反
        delams(10);  //延時去抖
        }
   }
}

評分

參與人數(shù) 1威望 +20 黑幣 +20 收起 理由
admin + 20 + 20 很給力!

查看全部評分

回復

使用道具 舉報

板凳
ID:1 發(fā)表于 2014-8-18 13:03 | 只看該作者
liaolinhui 發(fā)的程序非常完美
回復

使用道具 舉報

地板
ID:63752 發(fā)表于 2014-8-18 13:11 | 只看該作者
怎么沒有按鍵去抖動呢?delams(10);  //延時去抖,難道是這一句嗎?
回復

使用道具 舉報

5#
ID:58502 發(fā)表于 2014-8-18 18:39 | 只看該作者
XUSHENG 發(fā)表于 2014-8-18 13:11
怎么沒有按鍵去抖動呢?delams(10);  //延時去抖,難道是這一句嗎?

就是這句,如果覺得時間不夠可以加長,
回復

使用道具 舉報

6#
ID:19715 發(fā)表于 2014-8-18 21:56 | 只看該作者
一個按鍵控制2個LED燈點亮熄滅,
燈有4個狀態(tài):都點亮,LED1亮LED2滅、LED1滅LED2亮、都熄滅:
回復

使用道具 舉報

7#
ID:19715 發(fā)表于 2014-8-18 21:59 | 只看該作者
#include <reg51.h>
sbit  K1 = P0^0;
sbit  LED1 = P1^0;
sbit  LED2 = P1^1;
unsigned char keycon;
void delayms(unsigned char ms)        
// 延時子程序
{                                                
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i < 120; i++);
        }
}
main()
{
  LED1==0; //先點亮二個燈
  LED2==0; //先點亮二個燈
  keycon=0;
  while(1)
  {
      if(K1 == 0)  
       {
          delams(10);  //延時去抖
   if(K1 == 0)  
          {
           keycon++;
           if(keycon>=4)keycon=0;
           }
           if(keycon == 0)//都亮
           {
              LED1==0; //點亮第一個燈
              LED2==0; //點亮第二個燈
            }
           if(keycon == 1) //1滅2亮
           {
              LED1==1; //熄滅第一個燈
              LED2==0; //點亮第二個燈
            }
           if(keycon == 2) //1亮2滅
           {
              LED1==0; //點亮第一個燈
              LED2==1; //熄滅第二個燈
            }
           if(keycon == 4) //都熄滅
           {
              LED1==1; //熄滅第一個燈
              LED2==1; //熄滅第二個燈
            }
          while(K1 == 0);//等待按鍵松開
       }
   }
}
回復

使用道具 舉報

8#
ID:58502 發(fā)表于 2014-8-18 22:53 | 只看該作者
明白 發(fā)表于 2014-8-18 21:59
#include
sbit  K1 = P0^0;
sbit  LED1 = P1^0;

你這程序弄得有點長了,考慮下用循環(huán)。,看我之前做的七彩燈
#include <reg52.h>
void delay(unsigned int i);  //聲明延時函數(shù)
main()
{
  unsigned char Num = 0xff;
  while (1)
  {P3  = Num;
   delay(1000);           //延時函數(shù)
   Num--;
   }

}


/*******延時函數(shù)*************/
void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)
        for(j = 255; j > 0; j--);

}
這是之前做的七彩燈程序,如果在  while (1) 后面加if(k1==0)這樣的語句就能達到你那樣的效果了
回復

使用道具 舉報

9#
ID:65170 發(fā)表于 2014-8-19 08:17 | 只看該作者
非常感謝大家的幫助!
回復

使用道具 舉報

10#
ID:112693 發(fā)表于 2018-1-10 18:31 | 只看該作者
正在學習!謝謝樓主。
回復

使用道具 舉報

11#
ID:515309 發(fā)表于 2022-5-5 15:42 | 只看該作者
liaolinhui 發(fā)表于 2014-8-18 12:43
#include
sbit  K1 = P0^0;
sbit  LED1 = P1^0;

為什么我秒這個程式上去不行呢
回復

使用道具 舉報

12#
ID:735831 發(fā)表于 2022-5-5 15:55 | 只看該作者
陸少 發(fā)表于 2022-5-5 15:42
為什么我秒這個程式上去不行呢

有沒有這個可能,你的LED燈和你的按鍵沒有和這個引腳連接。(你挖墳了)不是
回復

使用道具 舉報

13#
ID:121859 發(fā)表于 2022-5-5 16:16 | 只看該作者
KEY
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
  JB
回復

使用道具 舉報

14#
ID:61140 發(fā)表于 2022-5-8 15:07 | 只看該作者
XUSHENG 發(fā)表于 2014-8-18 13:11
怎么沒有按鍵去抖動呢?delams(10);  //延時去抖,難道是這一句嗎?

這一句去不了抖,只會導致LED亮的時間長10MS
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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