亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
51單片機呼吸燈 霹靂游俠摩托車尾燈 仿真+程序代碼
[打印本頁]
作者:
藍靈魔君
時間:
2014-7-1 10:14
標題:
51單片機呼吸燈 霹靂游俠摩托車尾燈 仿真+程序代碼
摩托車尾燈
/*實例:
實例中部分與上述講解有所不同
因為實際中我們控制的是16個燈,而在上述講解中只是控制8個燈,所以實例中有所不同
由于單片機速度限制,我最后將一個周期設定為循環50次。
所以當數組中存50既代表全亮。*/
//預處理
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
//全局變量設定
uchar dismem[16];
uchar code tab[16]={0,1,2,3,4,5,6,7,8,9,11,13,16,22,35,50};
uchar code ann[]={1,1,1,1,1,1,1,1,2,3,6,10,14,20,35,50,35,20,14,10,6,3,2,1,1,1,1,1,1,1,1,1};
uchar code ann2[]={0,0,0,0,0,0,0,0,1,2,6,14,35,50,35,14,6,2,1,1,1,0,0,0,0,0,0,0,0};
//延時函數
void delay(uint i)
{
while(i--);
}
//取絕對值函數
char abs(char i)
{
if (i<0)
i=-i;
return i;
}
//定時器設置函數
void sinter()
{
IE=0x82;
TCON=0x01;
TH0=0xc0;
TL0=0xFD;
TR0=0x66;
}
//p0口位處理函數
uchar bitcountp0(uchar n)
{
uchar i,p=0;
for (i=0;i<8;i++)
{
if (dismem[i]<n)
p=p|(1<<i);
}
return p;
}
//p2口位處理函數
//在這里需要注意的是,p2口得順序和我們led連接順序是反的。詳情可以觀察電路圖可了解到。
uchar bitcountp2(uchar n)
{
uchar i,p=0;
for (i=0;i<8;i++)
{
if (dismem[i+8]<n)
p=p|(0x80>>i);
}
return p;
}
//清屏函數
void clean(uchar n)
{
uchar i;
for (i=0;i<16;i++)
{
dismem[i]=n;
}
}
//呼吸燈函數
//其中被控制燈在第a個和第b個之間。speed是呼吸速度。
void roll10(uchar a,uchar b,uint speed)
{
uchar i,j;
for (i=1;i<30;i++)
{
for (j=a;j<b;j++)
{
dismem[j]=i;
}
delay (speed);
}
for(i=30;i>0;i--)
{
for (j=a;j<b;j++)
{
dismem[j]=i-1;
}
delay (speed);
}
}
//動畫區域
void flash_1() ///////////////////////////////////////////
{
uchar i,j,mem[32]={0,0,0,0,0,0,0,0x00,0,0,0,0,0,0,0,0x01,15,13,11,9,7,5,3,0x02,1,1,1,1,1,1,1,1};
for (i=0;i<36;i++)
{
for (j=0;j<16;j++)
{
dismem[j]=tab[mem[j]];
}
for (j=0;j<31;j++)
{
mem[j]=mem[j+1];
}
mem[31]=1;
delay(750);
}
}
void flash_2() /////////////////////////////////////////
{
roll10(0,16,300);
roll10(0,16,300);
}
void flash_3() ////////////////////////////////////////////
{
uchar i,j;
for (i=0;i<16;i++)
{
for (j=0;j<16;j++)
{
dismem[j]=ann[i+j];
}
delay(800+abs(i-8)*50);
}
delay(2500);
for (i=16;i>0;i--)
{
for (j=0;j<16;j++)
{
dismem[j]=ann[i+j];
}
delay(800+abs(i-8)*50);
}
delay(2500);
}
void flash_4() /////////////////////////////////////////////
{
uchar i,j,k;
for (i=0;i<16;i++)
{
k=(i%2)*50;
for(j=0;j<8;j++)
{
dismem[j]=k;
}
k=((i+1)%2)*50;
for (j=8;j<16;j++)
{
dismem[j]=k;
}
delay(3000);
}
for (j=0;j<8;j++)
{
dismem[j]=50;
}
for (i=50;i>0;i--)
{
for (j=0;j<16;j++)
{
dismem[j]=i-1;
}
delay (300);
}
}
void flash_5() ////////////////////////////////////////////////
{
roll10(0,4,50);
roll10(4,8,50);
roll10(8,12,50);
roll10(12,16,50);
roll10(12,16,50);
roll10(8,12,50);
roll10(4,8,50);
roll10(0,4,50);
roll10(0,1,10);
roll10(1,2,10);
roll10(2,3,10);
roll10(3,4,10);
roll10(4,5,10);
roll10(5,6,10);
roll10(6,7,10);
roll10(7,8,10);
roll10(8,9,10);
roll10(9,10,10);
roll10(10,11,10);
roll10(11,12,10);
roll10(12,13,10);
roll10(13,14,10);
roll10(14,15,10);
roll10(15,16,10);
roll10(15,16,10);
roll10(14,16,10);
roll10(13,16,10);
roll10(12,16,10);
roll10(11,16,10);
roll10(10,16,10);
roll10(9,16,10);
roll10(8,16,10);
roll10(7,16,10);
roll10(6,16,10);
roll10(5,16,10);
roll10(4,16,10);
roll10(3,16,10);
roll10(2,16,10);
roll10(1,16,10);
roll10(0,16,10);
roll10(0,16,10);
roll10(15,16,10);
roll10(14,15,10);
roll10(13,14,10);
roll10(12,13,10);
roll10(11,12,10);
roll10(10,11,10);
roll10(9,10,10);
roll10(8,9,10);
roll10(7,8,10);
roll10(6,7,10);
roll10(5,6,10);
roll10(4,5,10);
roll10(3,4,10);
roll10(2,3,10);
roll10(1,2,10);
roll10(0,1,10);
roll10(0,16,10);
roll10(1,16,10);
roll10(2,16,10);
roll10(3,16,10);
roll10(4,16,10);
roll10(5,16,10);
roll10(6,16,10);
roll10(7,16,10);
roll10(8,16,10);
roll10(9,16,10);
roll10(10,16,10);
roll10(11,16,10);
roll10(12,16,10);
roll10(13,16,10);
roll10(14,16,10);
roll10(15,16,10);
}
void flash_6_1(uint speed) /////////////////////////////////////////
{
uchar i,j;
for (i=1;i<50;i++)
{
for (j=0;j<16;j+=2)
{
dismem[j]=i;
}
for (j=1;j<16;j+=2)
{
dismem[j]=49-i;
}
delay (speed);
}
for (i=49;i>0;i--)
{
for (j=0;j<16;j+=2)
{
dismem[j]=i;
}
for (j=1;j<16;j+=2)
{
dismem[j]=49-i;
}
delay (speed);
}
}
void flash_6_2(uint speed) /////////////////////////////////////////
{
uchar i,j;
for (i=1;i<50;i++)
{
for (j=0;j<4;j++)
{
dismem[j]=i;
dismem[j+8]=i;
}
for (j=4;j<8;j++)
{
dismem[j]=49-i;
dismem[j+8]=49-i;
}
delay (speed);
}
for (i=49;i>0;i--)
{
for (j=0;j<4;j++)
{
dismem[j]=i;
dismem[j+8]=i;
}
for (j=4;j<8;j++)
{
dismem[j]=49-i;
dismem[j+8]=49-i;
}
delay (speed);
}
}
void flash_6() //////////////////////////////////////////////
{
uchar i,j;
for (i=1;i<50;i++)
{
for (j=1;j<16;j+=2)
{
dismem[j]=i;
}
delay (100);
}
flash_6_1(100);
flash_6_1(100);
flash_6_1(100);
flash_6_1(100);
for (i=49;i>0;i--)
{
for (j=1;j<16;j+=2)
{
dismem[j]=i;
}
delay (100);
}
for (i=1;i<50;i++)
{
for (j=4;j<8;j++)
{
dismem[j]=i;
dismem[j+8]=i;
}
delay (100);
}
flash_6_2(100);
flash_6_2(100);
flash_6_2(100);
for (i=49;i>0;i--)
{
for (j=4;j<8;j++)
{
dismem[j]=i;
dismem[j+8]=i;
}
delay (100);
}
}
void flash_7() //////////////////////////////////////////////
{
uchar i,j,k;
for (i=0;i<15;i++)
{
k=(i%2)*50;
for (j=0;j<8;j++)
{
dismem[j]=k;
}
delay(1500);
}
for (i=0;i<15;i++)
{
k=(i%2)*50;
for (j=8;j<16;j++)
{
dismem[j]=k;
}
delay(1500);
}
}
void flash_8() ////////////////////////////////////////////////
{
uchar i,j;
for (i=0;i<22;i++)
{
for (j=0;j<8;j++)
{
dismem[j]=ann2[i+j];
dismem[15-j]=ann2[i+j];
}
delay(1500);
}
}
void flash_9_l() /////////////////////////////////////////////////////////
{
uchar i,j;
for (i=0;i<4;i++)
dismem[i]=50;
for (i=4;i<8;i++)
dismem[i]=1;
for (i=0;i<12;i++)
{
for (j=15;j>4;j--)
dismem[j]=dismem[j-1];
dismem[4]=0;
delay(1000);
}
}
void flash_9_r() //////////////////////////////////////////////////
{
uchar i,j;
for (i=12;i<16;i++)
dismem[i]=50;
for (i=8;i<12;i++)
dismem[i]=1;
for (i=0;i<12;i++)
{
for (j=0;j<11;j++)
dismem[j]=dismem[j+1];
dismem[11]=0;
delay(1000);
}
}
void flash_9() //////////////////////////////////////////////////////
{
flash_9_l();
flash_9_r();
flash_9_l();
flash_9_r();
flash_9_l();
flash_9_r();
}
//主函數
//主函數調用動畫區域的函數,這里可以理解一個播放列表。
void main()
{
sinter();
clean(0);
//play list;
while(1)
{
flash_1();
flash_2();
flash_3();
flash_4();
flash_2();
flash_5();
flash_6();
flash_7();
flash_7();
flash_9();
flash_8();
flash_8();
flash_2();
flash_6();
flash_9();
flash_3();
flash_1();
flash_8();
flash_8();
flash_6();
flash_5();
flash_4();
}
}
//中斷服務函數
void print() interrupt 1
{
static uchar i=1;
P0=bitcountp0(i);
P2=bitcountp2(i);
if (i<50)
i++;
else
i=1;
TH0=0xFd;
TL0=0x66;
}
復制代碼
霹靂游俠燈.rar
2014-7-1 10:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
620.85 KB, 下載次數: 164, 下載積分: 黑幣 -5
作者:
a110
時間:
2014-7-17 16:55
很牛的作品
作者:
新手110
時間:
2014-11-10 20:25
真的是么
作者:
新手110
時間:
2014-11-10 20:25
弄下來看看就知道咋樣了
作者:
tsqddq
時間:
2016-1-24 14:34
很強。。。。。。。。。。。。
作者:
yangfu1982
時間:
2017-3-7 20:49
電路不一樣,程序也不一樣對嗎
作者:
泡泡無敵
時間:
2017-3-8 11:20
學習借鑒了,謝謝樓主
作者:
ufo110796003
時間:
2019-12-1 20:28
樓主怎么不對, 能給我對的嗎,謝謝
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1