一、前言
二、模塊介紹及原理說(shuō)明
三、硬件連接
四、程序說(shuō)明
五、效果演示
六、代碼鏈接
一、前言
花樣流水燈就是讓LED燈按照一定規(guī)律進(jìn)行各種變化,流水燈在生活中也隨處可見,例如在建筑物的棱角上裝上流水燈,可以起到變換閃爍達(dá)到美不勝收的效果。此設(shè)計(jì)使用16個(gè)LED燈,有四種花樣,循環(huán)往復(fù)顯示,每隔15S左右的時(shí)間進(jìn)行一次花樣變換。也可手動(dòng)切換花樣。單片機(jī)系統(tǒng)裝有按鍵復(fù)位電路可直接復(fù)位電路。
二、模塊介紹及原理說(shuō)明
單片機(jī)最小系統(tǒng):
單片機(jī)最小系統(tǒng)完成系統(tǒng)運(yùn)行的最基本電路,單片機(jī)最小系統(tǒng)可配合其他模塊或自行搭建電路完成各種實(shí)驗(yàn)功能,單片機(jī)最小系統(tǒng)接口設(shè)計(jì)靈活,電路簡(jiǎn)潔,可完成基本的驅(qū)動(dòng)任務(wù)。單片機(jī)最小系統(tǒng)包括晶振電路、復(fù)位電路。復(fù)位電路我使用按鍵復(fù)位,方便系統(tǒng)的重啟。
三、硬件連接
本設(shè)計(jì)使用P0、P2控制LED燈由于LED燈所需電量少,所以不需要加驅(qū)動(dòng)就可以完成顯示。P3^0為按鍵控制端口,用于控制花樣燈的切換。
仿真連接
實(shí)物連接
四、程序說(shuō)明
主程序,用以調(diào)用不同的函數(shù)。
main()
{
Timer0Init(); //定時(shí)器0初始化
P2=0x00;//端口初始化
P0=0x00;
while(1)
{
key();
if(num==0)
{
P2=0x00;
P0=0x00;
}
else if(num==1)
num1();//花樣一
else if(num==2)
num2(); //花樣二
else if(num==3)
num3();
else if(num==4)
num4();
}
}
定時(shí)器函數(shù),用來(lái)控制不同花樣切換的時(shí)間,更加準(zhǔn)確,此設(shè)計(jì)控制每種花樣的顯示時(shí)間為15S,可根據(jù)喜好自己調(diào)節(jié)。
void Timer0() interrupt 1
{
TH0=(65536-6000)/256; //給定時(shí)器賦初值,定時(shí)10ms
TL0=(65536-6000)%256;
ssec++;
if(ssec>=100) //毫秒 時(shí)鐘
{
ssec=0;
sec++;
if(sec>=15) //秒
{
sec=0;
num++;
}
if(num==5)
num=1;
}
}
花樣表格函數(shù),將各種花樣流水燈分開放入表格中,在主函數(shù)中進(jìn)行調(diào)用。通過(guò)查表的方式顯示各種花樣,實(shí)用性更強(qiáng),在花樣較多時(shí)也方便進(jìn)行管理?;酉鄬?duì)簡(jiǎn)單,可自己進(jìn)行編寫。
unsigned char code seg1[]={
0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,
0xff,0xff,0x00,0x00,
0x55,0x55,0xaa,0xaa
}; //第一種
unsigned char code seg2[]={0x01,0x03,0x07,0x0f,
0x1f,0x3f,0x7f,0xff,
0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff
};
unsigned char code seg3[]={0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x80,0xc0,0xe0,0xf0,
0xf8,0xfc,0xfe,0xff,
}; //第二種
unsigned char code seg4[]={0x01,0x03,0x07,0x0f,
0x1f,0x3f,0x7f,0xff,
0xff,0x7f,0x3f,0x1f,
0x0f,0x07,0x03,0x01
};
unsigned char code seg5[]={
0x01,0x03,0x07,0x0f,
0x1f,0x3f,0x7f,0xff,
0xff,0x7f,0x3f,0x1f,
0x0f,0x07,0x03,0x01
}; //第三種
unsigned char code seg6[]={
0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x81,0x82,0x84,0x88,0x90,0xa0,0xc0,
0xc1,0xc2,0xc4,0xc8,0xd0,0xe0,
0xe1,0xe2,0xe4,0xe8,0xf0,
0xf1,0xf2,0xf4,0xf8,
0xf9,0xfa,0xfc,
0xfd,0xfe,
0xff
};
unsigned char code seg7[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x83,0x43,0x23,0x13,0x0b,0x07,
0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,0x47,0x27,0x17,0x0f,
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x8f,0x4f,0x2f,0x1f,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x9f,0x5f,0x3f,
0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xbf,0x7f,
0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,
0xff,0xff,0xff,
0xff,0xff,
0xff,
}; //第四種
按鍵函數(shù),可以通過(guò)按鍵進(jìn)行LED燈花樣的切換,按鍵函數(shù)中需要加入消抖函數(shù),以防止按鍵誤觸。
void key()
{
if(key1==0) //按鍵控制
{
delay(10);
if(key1==0)
{
num++;
if(num==5) num=0;
}
while(!key1); //檢測(cè)按鍵是否松開
}
}
五、效果演示
仿真演示https://live.csdn.net/v/219964
實(shí)物演示https://live.csdn.net/v/219965
六、代碼鏈接
歡迎留言評(píng)論分享自己的看法,如有錯(cuò)誤歡迎指正。關(guān)注公眾號(hào):“小小創(chuàng)客者”回復(fù)“花樣流水燈“獲得源碼及仿真。
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660558 -
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634631 -
51單片機(jī)
+關(guān)注
關(guān)注
274文章
5702瀏覽量
123490 -
流水燈
+關(guān)注
關(guān)注
21文章
432瀏覽量
59692
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論