C51單片機(jī)控制輸出LED七彩燈原程序
我學(xué)用C51單片機(jī)編制控制七彩燈(PWM信號)程序很久了,一直沒能實(shí)現(xiàn),請求各位求助.
全部回復(fù)(10)
正序查看
倒序查看
@czhxp
學(xué)習(xí)用還是商用?
學(xué)習(xí)用的.我已經(jīng)編好久了,一直沒編出.老兄有此原程序嗎?給我一份吧!!!!拜托了!!!!在附件是我用匯編寫的程序,是用紅外解碼來控制的(七彩燈開始運(yùn)行與暫停運(yùn)行),就是在按遙控時(shí)LED閃爍.http://bbs.dianyuan.com/topic/692201143787010.asm
0
回復(fù)
好久不用匯編了,給個(gè)C51的例子參考一下吧
#define OUT0 P3_3
#define OUT1 P3_4
#define OUT2 P3_5
#define Lea 255/3
void main()
{
bit fagR,fagG,fagB;
uchar i,j;
uchar x,y,z;
uchar tR,tG,tB;
i=0;
j=0;
tR=rand();tR&=0x07;x=tR;
tG=rand();tG&=0x07;y=tG;
tB=rand();tB&=0x07;z=tB;
iR=i;
iG=iR+Lea;
iB=iG+Lea;
while(1)
{
if(0==iR){tR=rand();tR&=0x07;x=tR;}
if(0==iG){tG=rand();tG&=0x07;y=tG;}
if(0==iB){tB=rand();tB&=0x07;z=tB;}
do
{
if(iR>j) OUT0=1;
else OUT0=0;
if(iG>j) OUT1=1;
else OUT1=0;
if(iB>j) OUT2=1;
else OUT2=0;
}while(++j);
if(x--==0){
if(iR==0) fagR=0;
else if(iR==0xff)fagR=1;
if(!fagR) iR++;
else iR--;
x=tR;
if(iR<64)
{
if(iR<16)
{
if(iR<4)x=tR+32;
else x=tR+16;
}
else x=tR+4;
}
}
if(y--==0){
if(iG==0) fagG=0;
else if(iG==0xff)fagG=1;
if(!fagG) iG++;
else iG--;
y=tG;
if(iG<64)
{
if(iG<16)
{
if(iG<4)y=tG+32;
else y=tG+16;
}
else y=tG+4;
}
}
if(z--==0){
if(iB==0) fagB=0;
else if(iB==0xff)fagB=1;
if(!fagB) iB++;
else iB--;
z=tB;
if(iB<64)
{
if(iB<16)
{
if(iB<4)z=tB+32;
else x=tB+16;
}
else x=tB+4;
}
}
}
}
#define OUT0 P3_3
#define OUT1 P3_4
#define OUT2 P3_5
#define Lea 255/3
void main()
{
bit fagR,fagG,fagB;
uchar i,j;
uchar x,y,z;
uchar tR,tG,tB;
i=0;
j=0;
tR=rand();tR&=0x07;x=tR;
tG=rand();tG&=0x07;y=tG;
tB=rand();tB&=0x07;z=tB;
iR=i;
iG=iR+Lea;
iB=iG+Lea;
while(1)
{
if(0==iR){tR=rand();tR&=0x07;x=tR;}
if(0==iG){tG=rand();tG&=0x07;y=tG;}
if(0==iB){tB=rand();tB&=0x07;z=tB;}
do
{
if(iR>j) OUT0=1;
else OUT0=0;
if(iG>j) OUT1=1;
else OUT1=0;
if(iB>j) OUT2=1;
else OUT2=0;
}while(++j);
if(x--==0){
if(iR==0) fagR=0;
else if(iR==0xff)fagR=1;
if(!fagR) iR++;
else iR--;
x=tR;
if(iR<64)
{
if(iR<16)
{
if(iR<4)x=tR+32;
else x=tR+16;
}
else x=tR+4;
}
}
if(y--==0){
if(iG==0) fagG=0;
else if(iG==0xff)fagG=1;
if(!fagG) iG++;
else iG--;
y=tG;
if(iG<64)
{
if(iG<16)
{
if(iG<4)y=tG+32;
else y=tG+16;
}
else y=tG+4;
}
}
if(z--==0){
if(iB==0) fagB=0;
else if(iB==0xff)fagB=1;
if(!fagB) iB++;
else iB--;
z=tB;
if(iB<64)
{
if(iB<16)
{
if(iB<4)z=tB+32;
else x=tB+16;
}
else x=tB+4;
}
}
}
}
0
回復(fù)
@czhxp
好久不用匯編了,給個(gè)C51的例子參考一下吧#defineOUT0 P3_3#defineOUT1 P3_4#defineOUT2 P3_5#defineLea255/3voidmain(){ bitfagR,fagG,fagB; uchari,j; ucharx,y,z; uchartR,tG,tB; i=0; j=0;tR=rand();tR&=0x07;x=tR;tG=rand();tG&=0x07;y=tG;tB=rand();tB&=0x07;z=tB;iR=i;iG=iR+Lea;iB=iG+Lea;while(1){if(0==iR){tR=rand();tR&=0x07;x=tR;}if(0==iG){tG=rand();tG&=0x07;y=tG;}if(0==iB){tB=rand();tB&=0x07;z=tB;}do{if(iR>j)OUT0=1;else OUT0=0;if(iG>j)OUT1=1;else OUT1=0;if(iB>j)OUT2=1;else OUT2=0;}while(++j);if(x--==0){if(iR==0) fagR=0;elseif(iR==0xff)fagR=1;if(!fagR)iR++;else iR--;x=tR;if(iR
這里用的是個(gè)很笨的辦法!!!
0
回復(fù)
@czhxp
好久不用匯編了,給個(gè)C51的例子參考一下吧#defineOUT0 P3_3#defineOUT1 P3_4#defineOUT2 P3_5#defineLea255/3voidmain(){ bitfagR,fagG,fagB; uchari,j; ucharx,y,z; uchartR,tG,tB; i=0; j=0;tR=rand();tR&=0x07;x=tR;tG=rand();tG&=0x07;y=tG;tB=rand();tB&=0x07;z=tB;iR=i;iG=iR+Lea;iB=iG+Lea;while(1){if(0==iR){tR=rand();tR&=0x07;x=tR;}if(0==iG){tG=rand();tG&=0x07;y=tG;}if(0==iB){tB=rand();tB&=0x07;z=tB;}do{if(iR>j)OUT0=1;else OUT0=0;if(iG>j)OUT1=1;else OUT1=0;if(iB>j)OUT2=1;else OUT2=0;}while(++j);if(x--==0){if(iR==0) fagR=0;elseif(iR==0xff)fagR=1;if(!fagR)iR++;else iR--;x=tR;if(iR
多謝了!!!C語言也可以.請問此可變PWM程序你可以可以用定時(shí)方式實(shí)現(xiàn)嗎??因?yàn)镃PU還有其他任務(wù)去做.
0
回復(fù)
@czhxp
這里用的是個(gè)很笨的辦法!!!
tR=rand();
請問此rand()這函數(shù)是什么函數(shù)?,請貼上完整的程序好嗎???1144029364.c
500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點(diǎn)擊可放大。\n按住CTRL,滾動鼠標(biāo)滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/40/1144029623.gif');}" onmousewheel="return imgzoom(this);">
請問此rand()這函數(shù)是什么函數(shù)?,請貼上完整的程序好嗎???1144029364.c

0
回復(fù)
@czhxp
好久不用匯編了,給個(gè)C51的例子參考一下吧#defineOUT0 P3_3#defineOUT1 P3_4#defineOUT2 P3_5#defineLea255/3voidmain(){ bitfagR,fagG,fagB; uchari,j; ucharx,y,z; uchartR,tG,tB; i=0; j=0;tR=rand();tR&=0x07;x=tR;tG=rand();tG&=0x07;y=tG;tB=rand();tB&=0x07;z=tB;iR=i;iG=iR+Lea;iB=iG+Lea;while(1){if(0==iR){tR=rand();tR&=0x07;x=tR;}if(0==iG){tG=rand();tG&=0x07;y=tG;}if(0==iB){tB=rand();tB&=0x07;z=tB;}do{if(iR>j)OUT0=1;else OUT0=0;if(iG>j)OUT1=1;else OUT1=0;if(iB>j)OUT2=1;else OUT2=0;}while(++j);if(x--==0){if(iR==0) fagR=0;elseif(iR==0xff)fagR=1;if(!fagR)iR++;else iR--;x=tR;if(iR
請貼上完整的程序好嗎???
0
回復(fù)