導航:首頁 > 操作系統 > 單片機控制8個燈從左到右

單片機控制8個燈從左到右

發布時間:2022-10-29 06:13:34

❶ 用匯編語言讓51單片機八個燈從左到右依次點亮且都不滅,每個燈亮的時

用匯編語言讓51單片機八個燈從左到右依次點亮且都不滅,每個燈亮的時間間隔0.5秒,然後全滅,再循環之前的步驟。
參考如下:

  1. 電路

    LED_COUNT DATA 30H
    T0_COUNT DATA 31H

    ORG 0000H
    LJMP MAIN
    ORG 000BH
    LJMP T0_INT

    ORG 0030H
    MAIN:
    ANL TMOD,#0F0H
    ORL TMOD,#01H
    MOV TH0,#3CH
    MOV TL0,#0B0H
    ORL IE,#82H
    SETB TR0
    CLR F0
    MOV LED_COUNT,#00H
    MOV T0_COUNT,#00H
    MOV DPTR,#TAB

    M1:
    JNB F0,M2
    CLR F0
    MOV A,LED_COUNT
    MOVC A,@A+DPTR
    MOV P2,A
    INC LED_COUNT
    MOV A,#9
    CJNE A,LED_COUNT,M2
    MOV LED_COUNT,#00H
    M2:
    SJMP M1

    T0_INT:
    MOV TH0,#3CH
    MOV TL0,#0B0H
    INC T0_COUNT
    MOV A,#10
    CJNE A,T0_COUNT,T
    MOV T0_COUNT,#00H
    SETB F0
    T:
    RETI

    TAB:
    DB0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH
    END

    希望能達到你的要求!!!!!

    ❷ 單片機考試啊 跪求大神單片機練習題 1.用單片機控制8個LED燈,8個LED燈從左到右依次點亮一

    while(1)
    {recy=0xfe;
    for(k=1;k<=8;k++)
    { P1=recy;
    Delay(50000);
    recy=recy<<1;
    }
    }

    ❸ 單片機C語言編程:讓8個LED流水燈以0.2s時間間隔從左到右依次點亮然後重復實現

    #include<reg52.h>
    #include<intrins.h>
    void delay(unsigned int z );
    void main()
    {
    unsigned int a;
    unsigned char b=0xfe;
    for(a=0;a<8;a++)
    {
    P1=b;//P1口接8個LED燈
    delay(200);
    b=_crol_ (b,1);
    }
    }
    void delay(unsigned int z)
    {
    unsigned int i;
    for(;z>0;z--) //延遲時間自己算吧
    for(i=110;i>0;i--);
    }
    用匯編寫這個容易點
    main: mov a,#0feh
    mov r0,#8
    loop: mov p1,a
    acall delay
    rl a
    djnz r0,loop
    delay:mov r6,#0ffh
    loop1: mov r7,#01h
    djnz r7,$
    djnz r6,loop1
    ret
    end
    好像是這樣,延遲時間可能不太准,也是P1口接8個LED燈

    ❹ 單片機用匯編做一個控制8個LED燈泡從左到右依次點亮,最後全部亮,再全部熄滅後重復前面的過程

    #include<reg51.h>

    #include<intrins.h>

    #defineucharunsignedchar

    #defineuintunsignedint

    //延時

    voidDelayMS(uintx)

    {

    uchari;

    while(x--)

    {

    for(i=0;i<120;i++);

    }

    }

    //主程序

    voidmain()

    {

    uints;

    while(1)

    {

    P0=0xfe;

    DelayMS(150);

    for(s=8;s>1;s--)

    {

    P0=_crol_(P0,1);//P0的值向左循環移動

    DelayMS(150);

    }

    P0=0x00;

    DelayMS(150);

    p0=0xff;

    DelayMS(150);

    (4)單片機控制8個燈從左到右擴展閱讀:

    常用單片機匯編指令:

    1 .MOV A,Rn寄存器內容送入累加器

    2 .MOV A,direct 直接地址單元中的數據送入累加器

    3 .MOV A,@Ri (i=0,1)間接RAM 中的數據送入累加器

    4 .MOV A,#data立即數送入累加器

    5 .MOV Rn,A 累加器內容送入寄存器

    6 .MOV Rn,direct 直接地址單元中的數據送入寄存器

    7 .MOV Rn,#data 立即數送入寄存器

    8 .MOV direct,A 累加器內容送入直接地址單元

    9 .MOV direct,Rn寄存器內容送入直接地址單元

    10. MOV direct,direct 直接地址單元中的數據送入另一個直接地址單元

    11 .MOV direct,@Ri (i=0,1)間接RAM 中的數據送入直接地址單元

    12 MOV direct,#data立即數送入直接地址單元

    13 .MOV @Ri,A (i=0,1)累加器內容送間接RAM 單元

    14 .MOV @Ri,direct (i=0,1)直接地址單元數據送入間接RAM 單元

    15 .MOV @Ri,#data (i=0,1)立即數送入間接RAM 單元

    16 .MOV DPTR,#data16 16 位立即數送入地址寄存器

    17 .MOVC A,@A+DPTR 以DPTR為基地址變址定址單元中的數據送入累加器

    18 .MOVC A,@A+PC 以PC 為基地址變址定址單元中的數據送入累加器

    19 .MOVX A,@Ri (i=0,1)外部RAM(8 位地址)送入累加器

    20 .MOVX A,@DPTR 外部RAM(16 位地址)送入累加器

    21 .MOVX @Ri,A (i=0,1)累計器送外部RAM(8 位地址)

    22 .MOVX @DPTR,A 累計器送外部RAM(16 位地址)

    23 .PUSH direct 直接地址單元中的數據壓入堆棧

    24 .POP direct 彈棧送直接地址單元

    25 .XCH A,Rn寄存器與累加器交換

    26 .XCH A,direct 直接地址單元與累加器交換

    27 .XCH A,@Ri (i=0,1)間接RAM 與累加器交換

    28 .XCHD A,@Ri (i=0,1)間接RAM 的低半位元組與累加器交換

    ❺ 用c語言編寫單片機流水燈程序,(8個發光二極體從左至右循環點亮)

    #include<reg51.h>

    voiddelay(void)

    {

    unsignedinti,j;

    for(i=0;i<200;i++)

    for(j=0;j<1000;j++)

    ;

    }

    voidmain(void)

    {

    while(1)

    {

    P3=0xfe;//第一個燈亮

    delay();//延時

    P3=0xfd;//第二個燈亮

    delay();

    P3=0xfb;//第三個燈亮

    delay();

    P3=0xf7;//第四個燈亮

    delay();

    P3=0xef;//第五個燈亮

    delay();

    P3=0xdf;//第六個燈亮

    delay();

    P3=0xbf;//第七個燈亮

    delay();

    P3=0x7f;//第八個燈亮

    delay();

    }

    }

    (5)單片機控制8個燈從左到右擴展閱讀

    單片機C語言16種方式流水燈

    voidmain()

    {

    while(1)

    {

    P1=0xfe;//點亮第一個發光管

    Delay(5000);

    P1=0xfd;//點亮第二個發光管

    Delay(5000);

    P1=0xfb;

    Delay(5000);

    P1=0xf7;

    Delay(5000);

    P1=0xef;

    Delay(5000);

    P1=0xdf;

    Delay(5000);

    P1=0xbf;

    Delay(5000);

    P1=0x7f;//點亮第八個發光管

    }

    }

    ❻ 用單片機控制8個LED燈,8個LED燈從左到右依次點亮一次,再從右到左依次點亮一次

    假設51單片機,P1口點亮,低電平點亮。

    unsigned char x =0xfe,i=0;

    for(i=0,i<8;i++)
    {
    x=_crol_(x,1);
    P1=x;
    delay500ms();
    }
    for(i=0,i<8;i++)
    {
    x=_cror_(x,1);
    P1=x;
    delay500ms();
    }

    ❼ 單片機八個led 從左到右依次單個點亮,從右到左再依次點亮;然後從左到右每次增加一個led 點亮

    #include<reg51.h>
    #include<intrins.h>
    #defineucharunsignedchar
    voiddelay(uchara)
    {
    uchari;
    while(a--)for(i=0;i<120;i++);
    }
    main()
    {
    uchari,led;
    while(1)
    {
    led=0xfe;
    for(i=0;i<8;i++)
    {
    P1=led;
    delay(200);
    led=_crol_(led,1);
    }
    led=0x7f;
    for(i=0;i<8;i++)
    {
    P1=led;
    delay(200);
    led=_cror_(led,1);
    }
    led=0xfe;
    for(i=0;i<8;i++)
    {
    P1=led;
    led=led<<1;
    delay(200);
    }
    led=0x00;
    for(i=0;i<8;i++)
    {
    P1=led;
    led=(led>>1)|0x80;
    delay(200);
    }
    P1=0x7e;delay(200);
    P1=0x3c;delay(200);
    P1=0x18;delay(200);
    P1=0x00;delay(200);
    P1=0x18;delay(200);
    P1=0x3c;delay(200);
    P1=0x7e;delay(200);
    P1=0xff;delay(200);
    }
    }

    ❽ C語言控制單片機,控制八個流水燈從左到右依次亮,最後又從右到左依次亮回來,一直循環下去,求幫幫忙

    假設P1接8 個LED,高電平時LED點亮,主程序如下:
    void main(void)
    {
    uchar i;
    while(1)

    {
    for(i=0;i<7;i++)
    {
    P1=1<<i;
    delay_ms(500);
    }
    for(i=0;i<7;i++)
    {
    P1=0x80>>i;
    delay_ms(500);
    }
    }
    }

    ❾ 用51單片機c語言讓八個led亮度自左向右逐漸變亮(pwm)

    #include<iom16.h>
    #include<avr_macros.h>

    voidInit_IO(void)
    {
    DDRA=0xFF;
    PORTA=0x00;
    }
    /*以上代碼51忽略*/
    voidLED1(unsignedcharx,unsignedcharLEDx)
    {
    unsignedcharCount=0;
    Count=LEDx*36;//最小0,最大7*36=252,char型最大不能超過255;
    Count=Count+1;//加1的目的是針對LED0不亮

    if(x<=Count) //<=是針對LED0不亮
    PORTA|=(1<<LEDx);//51怎麼改?。P0|=(1<<LEDx);PWM正占空
    else
    if(x>Count)
    PORTA&=~(1<<LEDx);//51怎麼改?。P0&=~(1<<LEDx);PWM負占空
    }

    voidmain(void)
    {
    unsignedchardelay=0;
    unsignedcharLEDx=0;
    Init_IO();
    while(1)
    {
    delay++;
    if(delay==250)
    {
    delay=0;
    LEDx++;
    if(LEDx>7)
    LEDx=0;
    }
    LED1(delay,LEDx);
    }
    }

閱讀全文

與單片機控制8個燈從左到右相關的資料

熱點內容
只能用命令獲得的四種方塊 瀏覽:358
怎麼用命令方塊防止開創造 瀏覽:807
掃描版的pdf 瀏覽:790
編程貓怎樣做3d游戲 瀏覽:207
怎麼查找雲伺服器上的ftp 瀏覽:156
我的世界伺服器如何注冊賬號 瀏覽:934
統計英文字元python 瀏覽:423
linux信息安全 瀏覽:908
壓縮機接線柱爆 瀏覽:999
程序員自主創業 瀏覽:584
匯編程序員待遇 瀏覽:359
怎麼批量有順序的命名文件夾 瀏覽:211
杭州程序員健身 瀏覽:19
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737