找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機實現(xiàn)第一個led燈和第四個led燈一起閃爍程序的問題 求解答

  [復制鏈接]
跳轉到指定樓層
樓主
ID:371529 發(fā)表于 2018-10-13 16:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我想通過51單片機實現(xiàn)第一個led燈和第四個led燈一起閃爍,下面是我寫的代碼。但是單片機上顯示的是先亮led1后亮led2依次循環(huán),這是為啥呢?
這是代碼:
  #include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P2^0;sbit led2=P2^3;
void delay(u16 i)
{
   while(i--);
}
  void main()
  {
  while(1)
  {
    led1=0;
delay(50000);
led1=1;
delay(50000);
led2=0;
delay(50000);
led2=1;
delay(50000);
  }
  }
要怎樣才能得到我想要的?求解答,謝謝各位了!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:123289 發(fā)表于 2018-10-14 20:49 | 只看該作者
不管是哪個燈,它總是對應在一個CPU的端口上的!
只要讓這個端口閃是完成閃爍了!
方案:
1、用定時器做一個定時中斷,每次中斷將一個閃爍標記F求反。例0.5秒中斷一次,中斷時讓F=!F.
2、輸出驅(qū)動LED的段時,如:驅(qū)動A段,讓A=A*F再輸出,A就閃爍了。
是不是很簡單。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:409110 發(fā)表于 2018-10-13 16:56 | 只看該作者
你試試我的這個函數(shù)while(1)
{
        led2=0;led1=0;
        delay(50000);
        led1=1;led2=1;
        delay(50000);
}

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:409110 發(fā)表于 2018-10-13 16:57 | 只看該作者
你把while里面改成我的這段函數(shù)看看能不能行while(1)
{
        led2=0;led1=0;
        delay(50000);
        led1=1;led2=1;
        delay(50000);
}

評分

參與人數(shù) 1黑幣 +5 收起 理由
哈哈我哈哈 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

5#
ID:409110 發(fā)表于 2018-10-13 16:58 | 只看該作者
你把while里面改成這段代碼看看while(1)
{
        led2=0;led1=0;
        delay(50000);
        led1=1;led2=1;
        delay(50000);
}
回復

使用道具 舉報

6#
ID:155507 發(fā)表于 2018-10-13 16:59 | 只看該作者
給你改了一下試試。

  1. #include "reg52.h"
  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. sbit led1=P2^0;
  5. sbit led2=P2^3;

  6. void delay(u16 i)
  7. {
  8.         while(i--);
  9. }
  10. void main()
  11. {
  12.         while(1)
  13.         {
  14.                 led1=0;
  15.                 led2=0;
  16.                 delay(50000);
  17.                 led1=1;
  18.                 led2=1;
  19.                 delay(50000);
  20.                
  21.                 //delay(50000);
  22.                
  23.                 //delay(50000);
  24.         }
  25. }

復制代碼

評分

參與人數(shù) 2黑幣 +25 收起 理由
admin + 20 回帖助人的獎勵!
哈哈我哈哈 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

7#
ID:409122 發(fā)表于 2018-10-13 17:24 | 只看該作者
這個程序的描述不是依次閃爍嗎??

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:409122 發(fā)表于 2018-10-13 17:28 | 只看該作者
emmmm這個程序不是就是依次閃爍嗎?

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:74187 發(fā)表于 2018-10-13 17:47 | 只看該作者
  1. /********************************************************
  2. *描述:工程模板,點亮led
  3. ********************************************************/
  4. #include "reg52.h"


  5. /*******************************************************************************
  6. * 文件名:位定義
  7. * 描  述:
  8. * 功  能:
  9. * 作  者:大核桃
  10. * 版本號:1.0.1(2017.05.23)
  11. *******************************************************************************/

  12. typedef unsigned char u8;
  13. typedef unsigned int u16;


  14. sbit led1 = P2^0;
  15. sbit led2 = P2^3;

  16. /*******************************************************************************
  17. * 文件名:主循環(huán)入口
  18. * 描  述:
  19. * 功  能:
  20. * 作  者:大核桃
  21. * 版本號:1.0.1(2017.05.23)
  22. *******************************************************************************/
  23. void main(void)
  24. {

  25.         while(1)
  26.         {
  27.                 led1 = 0;
  28.                 led2 = 0;
  29.                 delay(50000); //1,2同時亮

  30.                 led1 = 1;
  31.                 led2 = 1;     //1,2同時滅
  32.                 delay(50000);
  33.         }
  34. }

  35. /*******************************************************************************
  36. * 文件名:void delay(u16 i
  37. * 描  述:
  38. * 功  能:
  39. * 作  者:大核桃
  40. * 版本號:1.0.1(2017.05.23)
  41. *******************************************************************************/
  42. void delay(u16 i)
  43. {
  44.    while(i--);
  45. }
復制代碼

評分

參與人數(shù) 1黑幣 +5 收起 理由
哈哈我哈哈 + 5 很給力!

查看全部評分

回復

使用道具 舉報

10#
ID:371529 發(fā)表于 2018-10-14 14:28 | 只看該作者
boomBaby 發(fā)表于 2018-10-13 17:28
emmmm這個程序不是就是依次閃爍嗎?

請問你咋就看出來他是依次閃爍的呢?的確是的
回復

使用道具 舉報

11#
ID:371529 發(fā)表于 2018-10-14 14:40 | 只看該作者
SkyLine風 發(fā)表于 2018-10-13 16:56
你試試我的這個函數(shù)while(1)
{
        led2=0;led1=0;

你這種情況第一個燈閃爍但第四個燈亮但不閃
回復

使用道具 舉報

12#
ID:371529 發(fā)表于 2018-10-14 14:43 | 只看該作者
SkyLine風 發(fā)表于 2018-10-13 16:58
你把while里面改成這段代碼看看while(1)
{
        led2=0;led1=0;

啊啊,可以的可以的,是我寫錯了代碼,哎
回復

使用道具 舉報

13#
ID:409461 發(fā)表于 2018-10-14 14:56 | 只看該作者
while(1)
回復

使用道具 舉報

14#
ID:409461 發(fā)表于 2018-10-14 14:58 | 只看該作者
led1=0;led2=0;delay(50000); led1=1;led2=1;delay(50000);

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

15#
ID:409675 發(fā)表于 2018-10-14 23:12 | 只看該作者
delay用多了。都刪掉。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

16#
ID:372912 發(fā)表于 2018-10-20 18:52 | 只看該作者
用總線的方式點亮,直接給P2口0x09,就行了然后用delay進行延時
回復

使用道具 舉報

17#
ID:147024 發(fā)表于 2018-10-20 22:50 | 只看該作者
{     led1=0; ; led2=0; delay(50000); led1=1;; led2=1; delay(50000);   }   }
回復

使用道具 舉報

18#
ID:147024 發(fā)表于 2018-10-20 22:52 | 只看該作者
完成沒編過程嗎,

led1=0;
led2=0;
delay(50000);
led1=1;
led2=1;
delay(50000);
回復

使用道具 舉報

19#
ID:405708 發(fā)表于 2018-10-21 11:58 | 只看該作者

哥們,你這個程序可能會編譯不過呀,delay沒有在main前面聲明
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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