|
發布時間: 2019-2-17 11:29
正文摘要:很喜歡51黑論壇,論壇里面有很多熱心的大佬,這是我見過的最有愛的論壇,沒有之一。每一位回貼的網友都是優秀的老師,像我這樣的小白在這里能學到很多東西。 最近想用數組跑一個流水燈,LED的引腳是隨便接的,考慮 ... |
wulin 發表于 2019-2-17 20:36 看了你的例程,我在我的程序LED()驅動函數里面加了一個參數y,在main函數的for循環里面調用了這個帶參數的驅動函數LED(y),就美妙的跑起來了,跪謝大佬用心給我仿真,祝新年快樂!萬事大吉! ![]() |
| 頂頂頂!還有沒有其它好方法實現啊,這種引腳分散的怎么用數組來操作哦? |
| 你的大循環沒寫 |
你這樣寫LED驅動函數不行,改成這樣就可以了。
#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數組// uint leddata[]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff}; //延時函數// delay(uint t) { uint i,j; for(i=t;i>0;i--) for(j=112;j>0;j--); } //LED驅動函數// void LED(uint i)//寫入12位數據 { 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); } } |