久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3556|回復: 4
收起左側(cè)

用數(shù)組點亮單片機流水燈結(jié)果沒有動態(tài)效果直接全亮了?

[復制鏈接]
ID:466499 發(fā)表于 2019-2-17 11:29 | 顯示全部樓層 |閱讀模式
很喜歡51黑論壇,論壇里面有很多熱心的大佬,這是我見過的最有愛的論壇,沒有之一。每一位回貼的網(wǎng)友都是優(yōu)秀的老師,像我這樣的小白在這里能學到很多東西。
最近想用數(shù)組跑一個流水燈,LED的引腳是隨便接的,考慮到實際應用中也不可能有整組的引腳來操作,所以申明了個全局變量Y來整合這些引腳,問題好像就出現(xiàn)在這里。
這段代碼運行的結(jié)果沒有逐個點亮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
回復

使用道具 舉報

ID:213173 發(fā)表于 2019-2-17 20:36 | 顯示全部樓層
你這樣寫LED驅(qū)動函數(shù)不行,改成這樣就可以了。
無標題.jpg


#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);
        }
}


評分

參與人數(shù) 2黑幣 +18 收起 理由
Trump1438 + 8 回帖助人的獎勵!
toaaa + 10 跪謝大佬!按照你的例程我找到了我程序問題.

查看全部評分

回復

使用道具 舉報

ID:154074 發(fā)表于 2019-2-17 21:49 | 顯示全部樓層
你的大循環(huán)沒寫
回復

使用道具 舉報

ID:466499 發(fā)表于 2019-2-17 22:07 | 顯示全部樓層
頂頂頂!還有沒有其它好方法實現(xiàn)啊,這種引腳分散的怎么用數(shù)組來操作哦?
回復

使用道具 舉報

ID:466499 發(fā)表于 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),就美妙的跑起來了,跪謝大佬用心給我仿真,祝新年快樂!萬事大吉!
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女视频一区二区三区 | 天堂中文av | 成人午夜免费视频 | 午夜电影网站 | 国产在线视频在线观看 | www.亚洲一区二区 | 日韩欧美在线播放 | 国产特级毛片aaaaaa喷潮 | 久久九九99 | 日韩成人在线播放 | 波多野结衣中文字幕一区二区三区 | 国产黄色小视频在线观看 | 天堂网中文 | 日韩三级| 一区二区在线免费观看视频 | 中文字幕国产 | av网站在线免费观看 | 91久久国产综合久久 | 国产精品一区在线播放 | 一区二区三区在线 | 九九热精| 天天干免费视频 | 亚洲精品一二区 | 久久久久亚洲精品 | 国产一区 在线视频 | 国产精品一区二区三区99 | 天天草视频 | 亚洲国产精品视频 | 久久久久久高潮国产精品视 | 看一级黄色毛片 | 国产一区精品 | 在线观看成年人视频 | 91青娱乐在线 | 伊人伊成久久人综合网站 | 欧美一级视频在线观看 | 精品一区二区三区在线播放 | 国产精品永久 | 国产成人综合网 | 国产精品亚洲成在人线 | 成人小视频在线观看 | 日韩精品一区二区三区中文在线 |