欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 用數(shù)組點(diǎn)亮單片機(jī)流水燈結(jié)果沒有動態(tài)效果直接全亮了? [打印本頁]

作者: toaaa    時間: 2019-2-17 11:29
標(biāo)題: 用數(shù)組點(diǎn)亮單片機(jī)流水燈結(jié)果沒有動態(tài)效果直接全亮了?
很喜歡51黑論壇,論壇里面有很多熱心的大佬,這是我見過的最有愛的論壇,沒有之一。每一位回貼的網(wǎng)友都是優(yōu)秀的老師,像我這樣的小白在這里能學(xué)到很多東西。
最近想用數(shù)組跑一個流水燈,LED的引腳是隨便接的,考慮到實(shí)際應(yīng)用中也不可能有整組的引腳來操作,所以申明了個全局變量Y來整合這些引腳,問題好像就出現(xiàn)在這里。
這段代碼運(yùn)行的結(jié)果沒有逐個點(diǎn)亮LED燈,而是一次全亮,顯示的是y得到數(shù)組最后一個元素0X0000全亮,for循環(huán)是遍歷了數(shù)組每個元素的,但為什么延時失效了?問題出在哪?好懵逼
#include<reg51.h>
sbit LED1  = P3^5;
sbit LED2  = P1^7;
sbit LED3  = P1^6;
sbit LED4  = P1^5;
sbit LED5  = P1^4;
sbit LED6  = P1^3;
sbit LED7  = P3^7;
sbit LED8  = P0^0;
sbit LED9  = P1^2;
sbit LED10 = P1^0;
sbit LED11 = P3^2;
sbit LED12 = P1^1;
//全局變量//
int y;
//定義LED數(shù)組//
int leddata[]={0x0ffe,0x0ffc,0x0ff8,0x0ff0,0x0fe0,0x0fc0,0x0f80,0x0f00,0x0e00,0x0c00,0x0800,0x0000};
//延時函數(shù)//
delay(int t)
{ int i,j;
        for(i=t;i>0;i--)
        {
                for(j=247;j>0;j--);
        }
}
//LED驅(qū)動函數(shù)//
void LED()
{
        LED1=0x0001&y;
        LED2=0x0002&y;
        LED3=0x0004&y;
        LED4=0x0008&y;
        LED5=0x0010&y;
        LED6=0x0020&y;
        LED7=0x0040&y;
        LED8=0x0080&y;
        LED9=0x0100&y;
        LED10=0x0200&y;
        LED11=0x0400&y;
        LED12=0x0800&y;
}

main()
{int a;
        LED();
        for (a=0;a<12;a++)
        {
                y=leddata[a];
                delay(100);
        }
               
}

QQ截圖20190217110929.png (18.43 KB, 下載次數(shù): 31)

QQ截圖20190217110929.png

作者: wulin    時間: 2019-2-17 20:36
你這樣寫LED驅(qū)動函數(shù)不行,改成這樣就可以了。



#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED1  = P3^5;
sbit LED2  = P1^7;
sbit LED3  = P1^6;
sbit LED4  = P1^5;
sbit LED5  = P1^4;
sbit LED6  = P1^3;
sbit LED7  = P3^7;
sbit LED8  = P0^0;
sbit LED9  = P1^2;
sbit LED10 = P1^0;
sbit LED11 = P3^2;
sbit LED12 = P1^1;
//全局變量//
uint y;
//定義LED數(shù)組//
uint leddata[]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff};
//延時函數(shù)//
delay(uint t)
{
        uint i,j;
        for(i=t;i>0;i--)
                for(j=112;j>0;j--);
}
//LED驅(qū)動函數(shù)//
void LED(uint i)//寫入12位數(shù)據(jù)
{   
        LED1=i&0x01;i>>=1;       
        LED2=i&0x01;i>>=1;
        LED3=i&0x01;i>>=1;
        LED4=i&0x01;i>>=1;
        LED5=i&0x01;i>>=1;
        LED6=i&0x01;i>>=1;
        LED7=i&0x01;i>>=1;
        LED8=i&0x01;i>>=1;
        LED9=i&0x01;i>>=1;
        LED10=i&0x01;i>>=1;
        LED11=i&0x01;i>>=1;
        LED12=i&0x01;
}

void main()
{
        uchar j=0;
        while(1)
        {
                y=leddata[j];
                LED(y);
                j++;
                j%=12;
                delay(500);
        }
}



作者: 宮本無三四    時間: 2019-2-17 21:49
你的大循環(huán)沒寫
作者: toaaa    時間: 2019-2-17 22:07
頂頂頂!還有沒有其它好方法實(shí)現(xiàn)啊,這種引腳分散的怎么用數(shù)組來操作哦?
作者: toaaa    時間: 2019-2-17 22:46
wulin 發(fā)表于 2019-2-17 20:36
你這樣寫LED驅(qū)動函數(shù)不行,改成這樣就可以了。

看了你的例程,我在我的程序LED()驅(qū)動函數(shù)里面加了一個參數(shù)y,在main函數(shù)的for循環(huán)里面調(diào)用了這個帶參數(shù)的驅(qū)動函數(shù)LED(y),就美妙的跑起來了,跪謝大佬用心給我仿真,祝新年快樂!萬事大吉!




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1