節(jié)日彩燈控制器的設(shè)計(jì)
一、設(shè)計(jì)要求:
以單片機(jī)為核心,設(shè)計(jì)一個(gè)節(jié)日彩燈控制器:
K1—開始,按此鍵則燈開始流動(dòng)(由上而下)。
K2—停止,按此鍵則停止流動(dòng),所有燈為暗。
K3—下,按此鍵則燈由下向上流動(dòng)。
K4—交替閃爍,按此鍵則奇數(shù)序號(hào)燈與偶數(shù)序號(hào)燈交替閃爍。
二、方案論證:
通過(guò)查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實(shí)際知識(shí),我提出課兩種技術(shù)方案來(lái)實(shí)現(xiàn)該公能。下面我將首先對(duì)這兩種方案的組成框圖和實(shí)現(xiàn)原理分別進(jìn)行說(shuō)明,并分析比較它們的特點(diǎn),然后闡述我最終選擇方案的原因。
1 方案比較
彩燈控制器課分為兩種方案實(shí)現(xiàn)。一種是利用數(shù)字邏輯電路裝置控制,另一種是采用單片機(jī)控制。
1.1 方案一
根據(jù)任務(wù)要求介紹的彩燈控制電路的基本組成,可以確定彩燈控制器應(yīng)由振蕩器、計(jì)數(shù)/時(shí)序分配電路、移位寄存器和彩燈顯示五部分組成。其框圖如圖所示。
1.2 方案二
本方案主要是通過(guò)對(duì)基于單片機(jī)的多控制、多閃爍方式的LED彩燈循環(huán)系統(tǒng)的設(shè)計(jì),來(lái)達(dá)到本設(shè)計(jì)的要求、其硬件構(gòu)成框圖如圖所示,以單片機(jī)為核心控制,由單片機(jī)最小系統(tǒng)(時(shí)鐘電路、復(fù)位電路、電源)、按鍵控制電路、LED發(fā)光二極管和5V直流電源組成。
2 方案論證
如果采用方案一,利用數(shù)字邏輯電路裝置控制,其電路不是很復(fù)雜,制作相對(duì)較容易,成本也相對(duì)較低,但可調(diào)性差,亮燈模式少而且樣式單調(diào),達(dá)不到設(shè)計(jì)任務(wù)要求或?qū)崿F(xiàn)困難。而采用方案二,以單片機(jī)控制其優(yōu)點(diǎn)是電路集成度高,工作原理簡(jiǎn)單,清晰明了,自定義編程,控制的圖案花樣多,移植性好等。
3 方案選擇
綜上,顯然方案二各方面優(yōu)于方案一,以及為了體現(xiàn)專業(yè)優(yōu)勢(shì),本次設(shè)計(jì)采用方案二。
三、理論設(shè)計(jì):
1、主程序設(shè)計(jì)
程序啟動(dòng)時(shí)跳轉(zhuǎn)到鍵盤判斷模塊程序中,此程序里面包含K1—K4的按鍵情況判斷,循環(huán)檢測(cè)直到有按鍵按下的時(shí)候,程序轉(zhuǎn)去相對(duì)應(yīng)的按鍵的彩燈顯示的模塊。
2、鍵盤掃描程序
四、電路仿真和仿真結(jié)果分析:
1 仿真電路
1.1 時(shí)鐘電路和復(fù)位電路
1.2 按鍵控制電路
1.3 LED顯示電路
2 仿真結(jié)果分析:
此次系統(tǒng)設(shè)計(jì)結(jié)果較好,經(jīng)Proteus軟件仿真系統(tǒng)的調(diào)試,可檢測(cè)出仿真電路正常;對(duì)應(yīng)按鍵按下,彩燈出現(xiàn)不同花型,實(shí)現(xiàn)了多控制、多閃爍的LED彩燈循環(huán);經(jīng)以上仿真測(cè)試證實(shí),本設(shè)計(jì)能實(shí)現(xiàn)設(shè)計(jì)系統(tǒng)要求的預(yù)期功能。
五、心得體會(huì):
本次作業(yè)設(shè)計(jì)以C51單片機(jī)為核心,控制電路、LED顯示電路、以及單片機(jī)最小系統(tǒng)等模塊組成的核心主控制電路,實(shí)現(xiàn)了由單片機(jī)對(duì)LED燈的控制。
通過(guò)對(duì)軟件的仿真調(diào)試,對(duì)彩燈控制器的運(yùn)行成果滿意,實(shí)現(xiàn)了題目的要求,同時(shí)此設(shè)計(jì)具有電路簡(jiǎn)單、易操作、成本小、體積小、耗能低等優(yōu)點(diǎn)。
但是在設(shè)計(jì)中也出現(xiàn)了一些問題,在程序編寫過(guò)程中發(fā)現(xiàn)自己有的知識(shí)模塊模糊,導(dǎo)致實(shí)驗(yàn)速度減緩,通過(guò)c程序的編寫實(shí)驗(yàn)就發(fā)現(xiàn)自己很多地方的不足,在查閱資料和同學(xué)的幫助下才解決了困難,這都是以后要多學(xué)習(xí)的地方。
單片機(jī)源程序如下:
#include
#define uchar unsigned char //宏定義
#define uint unsigned int
sbit k1=P1^2; //位定義
sbit k2=P1^3;
sbit k3=P1^4;
sbit k4=P1^5;
uchar a=0; //定義所需變量
uchar b;
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //從上到下流水?dāng)?shù)組
uchar code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //從下到上流水?dāng)?shù)組
void delay_ms(uint xms) //延時(shí)函數(shù)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void key_scan(uchar b) //按鍵掃描
{
if(b==1) //若K1按下
{
while(k2==1&&k3==1&&k4==1)
{
for(a=0;a<8;a++) //執(zhí)行從上到下流水操作
{
P0=table1[a];
delay_ms(100);
}
a=0;
}
}
if(b==2) //若K2按下
{
while(k1==1&&k3==1&&k4==1)
{ //P0全部輸出高電平,關(guān)閉LED
P0=0xff;
}
}
if(b==3) //若K3按下
{
while(k1==1&&k2==1&&k4==1)
{
for(a=0;a<8;a++) //執(zhí)行從下到上流水操作
{
P0=table2[a];
delay_ms(100);
}
a=0;
}
}
if(b==4) //若K4按下
{
while(k1==1&&k2==1&&k3==1)
{
P0=0xaa; //奇偶位分別點(diǎn)亮
delay_ms(100);
P0=0x55;
delay_ms(100);
}
}
}
void main(void) //主函數(shù)
{
TMOD=0X01; //定時(shí)器中斷初始化
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1 //中斷服務(wù)函數(shù)
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
if(k1==0)b=1;
if(k2==0)b=2;
if(k3==0)b=3;
if(k4==0)b=4;
key_scan(b);
}
復(fù)制代碼
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
240文章
23073瀏覽量
657086 -
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44491瀏覽量
632026 -
控制器
+關(guān)注
關(guān)注
112文章
16111瀏覽量
177086 -
節(jié)日彩燈
+關(guān)注
關(guān)注
0文章
3瀏覽量
6731
原文標(biāo)題:?jiǎn)纹瑱C(jī)節(jié)日彩燈控制器的設(shè)計(jì)
文章出處:【微信號(hào):電子技術(shù)控,微信公眾號(hào):電子技術(shù)控】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論