找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6699|回復: 10
收起左側

怎么改這個程序可以讓單片機LED燈從中間往兩邊亮

[復制鏈接]
ID:357877 發(fā)表于 2018-9-6 20:12 | 顯示全部樓層 |閱讀模式
  1. #include<reg52.h>

  2. sbit LED = P0^0;
  3. sbit ADDR0 = P1^0;
  4. sbit ADDR1 = P1^1;
  5. sbit ADDR2 = P1^2;
  6. sbit ADDR3 = P1^3;
  7. sbit ENLED = P1^4;

  8. void main()
  9. {
  10.         ENLED = 0;
  11.         ADDR3 = 1;
  12.         ADDR2 = 1;
  13.         ADDR1 = 1;
  14.         ADDR0 = 0;

  15.         LED = 1;
  16.         while(1);
  17. }
復制代碼


回復

使用道具 舉報

ID:308784 發(fā)表于 2018-9-6 22:16 | 顯示全部樓層
void main() {              ADDR2 = 1;         ADDR1 = 1;   delay();      ADDR0 = 1;ADDR3 = 1  ; delay();       LED = 1; ENLED = 1;        while(1); }
回復

使用道具 舉報

ID:394799 發(fā)表于 2018-9-6 23:26 來自觸屏版 | 顯示全部樓層
LED口和ENLED口也連接LED嗎?
回復

使用道具 舉報

ID:116893 發(fā)表于 2018-9-7 08:15 | 顯示全部樓層
你這是某開發(fā)板的吧,用數(shù)組,位移啥的可以。
回復

使用道具 舉報

ID:164602 發(fā)表于 2018-9-7 08:49 | 顯示全部樓層
同學,你不給你的電路,我怎么幫你嘛。
單片機程序,一定、只能根據(jù)電路來進行,同樣功能,不同電路,程序一定有區(qū)別的。
你想讓燈從中間向兩邊亮,但看你的程序,燈涉及兩個口,看不出哪個燈是中間的,哪個又是邊上的,怎么編程呢?
回復

使用道具 舉報

ID:394872 發(fā)表于 2018-9-7 10:03 | 顯示全部樓層
需要你的電路原理圖呢
回復

使用道具 舉報

ID:384109 發(fā)表于 2018-9-7 10:19 | 顯示全部樓層
這個要求就是走馬燈了,程序里需要循環(huán),因為需要點亮LED,再關閉LED,可以參考走馬燈的程序,你的程序里是四個LED,最簡單的做法就是先關閉所有LED,然后點亮ADDR2和ADDR1,延時一段時間,關閉ADDR2和ADDR1,點亮ADDR3和ADDR0,延時一段時間,關閉ADDR3和ADDR0,就可以達到你要的效果了
回復

使用道具 舉報

ID:301037 發(fā)表于 2018-9-7 11:01 | 顯示全部樓層
定義了6個   但是不知道你這個原來咋亮的   
回復

使用道具 舉報

ID:357877 發(fā)表于 2018-9-7 21:19 | 顯示全部樓層
這個是電路原理圖
QQ截圖20180907211014.png
回復

使用道具 舉報

ID:357877 發(fā)表于 2018-9-7 21:30 | 顯示全部樓層
allen2016 發(fā)表于 2018-9-7 08:15
你這是某開發(fā)板的吧,用數(shù)組,位移啥的可以。

嗯嗯  怎么操作
回復

使用道具 舉報

ID:155507 發(fā)表于 2018-9-8 09:17 | 顯示全部樓層
給你改了一下試試。

  1. #include<reg52.h>

  2. #define LEDPORT P0

  3. //sbit LED = P0^0;
  4. sbit ADDR0 = P1^0;
  5. sbit ADDR1 = P1^1;
  6. sbit ADDR2 = P1^2;
  7. sbit ADDR3 = P1^3;
  8. sbit ENLED = P1^4;

  9. unsigned char p[] = {
  10.         0x18, //00011000
  11.         0x24, //00100100
  12.         0x42, //01000010
  13.         0x81, //10000001
  14.         0x42, //01000010
  15.         0x24, //00100100
  16.         0x18  //00011000
  17. };

  18. //mS延時函數(shù)
  19. void DelayMs(unsigned int t)
  20. {
  21.         unsigned int i,j;
  22.         for(i=0;i<t;i++)
  23.                 for(j=0;j<148;j++);

  24. }


  25. void main()
  26. {
  27.         int i;
  28.         ENLED = 0;
  29.         ADDR3 = 1;
  30.         ADDR2 = 1;
  31.         ADDR1 = 1;
  32.         ADDR0 = 0;

  33.         //LED = 1;
  34.         while(1)
  35.         {
  36.                 for(i=0;i<6;i++)
  37.                 {
  38.                         LEDPORT = p[i];
  39.                         DelayMs(600); //延時600毫秒
  40.                 }
  41.         }
  42. }


復制代碼
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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