DZ284 基于單片機(jī)控制的霓虹燈控制器
DZ284 基于單片機(jī)控制的霓虹燈控制器,DZ284,基于單片機(jī)控制的霓虹燈控制器,基于,單片機(jī),控制,霓虹燈,控制器
霓虹燈控制器
基于單片機(jī)控制的霓虹燈控制器
作者:譚輝 肖遠(yuǎn)青 凌鑫華
指導(dǎo)老師:王彥
摘要:本設(shè)計(jì)采用AT89S51單片機(jī)實(shí)現(xiàn)對(duì)霓虹燈的控制。系統(tǒng)由單片機(jī)控制部分和顯示部分組成。顯示部分的128個(gè)發(fā)光二極管成8行16列矩陣式分布。單片機(jī)I/O口輸出的信號(hào)經(jīng)三極管放大驅(qū)動(dòng)二極管發(fā)光。不同的控制信號(hào)使發(fā)光二極管以不同的方式和花樣顯示。
關(guān)鍵字:?jiǎn)纹瑱C(jī) 發(fā)光二極管 矩陣式
Neon Light Controller Based on Singlechip
Abstract: This design adopts singlechip AT89S51 to control the neon light. The system is made up of the part of singlechip controller and the part of show. The part of show is 8 lines of 16 row matrix types. Signal from singlechip is enlarged by triode transistor to drive the LBD. The different control signal makes LBD to give out light with the pattern in different way.
Keyword: singlechip LBD matrix
目錄
1. 系統(tǒng)設(shè)計(jì)……………………………………………………………………………………….3
1.1設(shè)計(jì)要求…………………………………………………………………………………..3
1.2總體設(shè)計(jì)方案……………………………………………………………………………..3
1.2.1設(shè)計(jì)思路………………………………………………………………………………...3
1.2.2方案論證與比較………………………………………………………………...3
1.2.3系統(tǒng)組成………………………………………………………………………..4
2.單元電路設(shè)計(jì)…………………………………………………………………………………….4
2.1顯示部分電路………………………………………………………………………………..4
2.2控制部分電路………………………………………………………………………………..5
3.軟件設(shè)計(jì)………………………………………………………………………………………….6
3.1程序流程圖…………………………………………………………………………………..6
3.2程序清單…………………………………………………………………………………….7
4結(jié)論……………………………………………………………………………………………….7
參考文獻(xiàn)……………………………………………………………………………………………7
附錄1:元器件明細(xì)表……………………………………………………………………………7
附錄2:程序清單…………………………………………………………………………………8
附錄3:印制板圖………………………………………………………………………………..14
1. 系統(tǒng)設(shè)計(jì)
1.1設(shè)計(jì)要求
1.基本功能:設(shè)計(jì)一個(gè)霓虹燈控制器,控制128個(gè)LBD,要求能控制形成多種圖案或花樣。
2.擴(kuò)展功能:紅外遙控不同顯示方案間的轉(zhuǎn)換,加設(shè)語(yǔ)音芯片和音樂(lè)盒,在顯示不同圖案的同時(shí)發(fā)出不同的音樂(lè)和語(yǔ)音信息。
1.2 總體設(shè)計(jì)方案
1.2.1設(shè)計(jì)思路
題目要求設(shè)計(jì)一個(gè)霓虹燈控制器,控制的燈數(shù)128個(gè),并要形成多種圖案和花樣。設(shè)計(jì)中控制部分由單片機(jī)完成,顯示部分的LBD由單片機(jī)的輸出控制信號(hào)經(jīng)放大后驅(qū)動(dòng),形成不同的圖案。
1.2.2方案論證與比較
1. 顯示部分設(shè)計(jì)方案論證與選擇
方案一、采用移位寄存器擴(kuò)展I/O口。利用74HC595擴(kuò)展單片機(jī)的輸入輸出口來(lái)接發(fā)光二極管,實(shí)現(xiàn)串行輸入并行輸出。電路圖如1.1.1所示。此方案可擴(kuò)展受控制的發(fā)光二極管的數(shù)量,但要控制128個(gè)LBD需要16個(gè)移位寄存器,需要芯片多,且PCB布局和布線(xiàn)不方便。
方案二、采用矩陣式分布。利用單片機(jī)的p1口做行選信號(hào),p2和p0口做列選信號(hào),128個(gè)LBD構(gòu)成8行,16列的矩陣。詳細(xì)電路圖見(jiàn)單元電路設(shè)計(jì)中。此方案能單獨(dú)控制每一個(gè)LBD,也可單獨(dú)控制每行或每列的LBD,可形成豐富的圖案或花樣,顯示部分不需要格外的芯片,形成的電路簡(jiǎn)單,PCB的布局和布線(xiàn)也較容易和美觀。
綜上所述,考慮到要求控制的LBD不是太多,又矩陣式能形成較豐富的圖案,PCB板的布局和布線(xiàn)也較美觀,選擇方案二。
2. 驅(qū)動(dòng)部分設(shè)計(jì)方案論證與選擇
方案一、三極管一級(jí)驅(qū)動(dòng)。由1個(gè)9012驅(qū)動(dòng)一行16個(gè)LBD。正常發(fā)光時(shí)每個(gè)LBD的工作電流為10~15毫安,16×(10~15) =160~240毫安, 這樣大的電流一個(gè)三極管就能提供。當(dāng)一行同時(shí)亮?xí)r能滿(mǎn)足發(fā)光工作要求。當(dāng)一個(gè)燈亮?xí)r,由于亮的時(shí)間非常短不會(huì)對(duì)LBD的工作造成影響。
方案二、功率放大芯片??梢院芎玫膶?shí)現(xiàn)放大和驅(qū)動(dòng),性能穩(wěn)定,效果好,但價(jià)格較三極管高,電路較方案一也明顯復(fù)雜。
綜上所述,三極管驅(qū)動(dòng)電路簡(jiǎn)單,性?xún)r(jià)比高,又能很好完成驅(qū)動(dòng)作用,選擇方案一。
圖1.1.1 寄存器擴(kuò)展的電路圖
1.2.3系統(tǒng)組成
系統(tǒng)總方框圖如圖1.2.3所示。
顯示部分
單片機(jī)
圖1.2.3 系統(tǒng)總方框圖
單片機(jī)控制矩陣式排布的LBD按順序循環(huán)顯示。系統(tǒng)共設(shè)計(jì)了7種顯示圖案或花樣,分別是:(1)由里到外和由外到里按圈依次亮(2)奇次列和偶次列交錯(cuò)亮(3)以一列為軸順時(shí)針掃射(4)以中間兩列為軸分別向兩邊合攏(5)四種不同顏色的燈交錯(cuò)亮(6)單個(gè)燈以螺旋方式從最里圈向外亮(7)以相鄰四列及相對(duì)的四列為一組交錯(cuò)亮。
2.單元電路設(shè)計(jì)
2.1顯示部分電路
顯示部分主要由128個(gè)貼片發(fā)光二極管分成8圈,每圈16個(gè)組成,相當(dāng)于8行16列的矩陣。這些發(fā)光二極管共有四種顏色,分別是紅,黃,藍(lán),綠。每圈用同一種顏色,從里到外分別是綠紅黃藍(lán)綠紅黃藍(lán)排布。每行16個(gè)LED的陽(yáng)極連接在一起引出8行輸出分別接單片機(jī)I/O口的P1.0~P1.7口;每列8個(gè)LED的陰極連接在一起引出16列輸出分別接單片機(jī)P0.0~P0.7和P2.0~P2.7口。電路圖如圖2.1所示。
圖2.1 顯示部分電路圖
2.2控制部分電路
控制部分主要是由單片機(jī)最小系統(tǒng)完成。采用了1個(gè)AT89S51單片機(jī),2個(gè)74HC373鎖存器,12M晶陣和一些相應(yīng)的電阻,插座。驅(qū)動(dòng)部分的8個(gè)9012三極管也接到了此部分。使用P1口的8個(gè)輸出信號(hào)做8行的選通信號(hào),使用P0和P2口的16個(gè)輸出信號(hào)做列的控制信號(hào),單獨(dú)控制每圈的16個(gè)LED。輸出信號(hào)經(jīng)9012放大后驅(qū)動(dòng)發(fā)光二極管。電路圖如圖2.2所示。
圖2.2 控制部分電路圖
3.軟件設(shè)計(jì)
3.1程序流程圖
開(kāi)始
顯示方式一
顯示方式二
顯示方式三
顯示方式四
顯示方式五
顯示方式六
顯示方式七
3.2程序清單
軟件采用匯編語(yǔ)言編寫(xiě),程序清單見(jiàn)附錄2。
4.結(jié)論
本設(shè)計(jì)的設(shè)計(jì)思想,原理和軟件設(shè)計(jì)較簡(jiǎn)單,難點(diǎn)在于PCB板的布局和布線(xiàn)以及美觀的效果。采用了矩陣式布局,可以較好的解決這一難題,但是受單片機(jī)I/O口的限制,能控制每一個(gè)LBD的數(shù)量有限。大型的設(shè)計(jì)可以采用擴(kuò)展I/O口和矩陣式相結(jié)合的方式。
暫只完成了基本部分的設(shè)計(jì),擴(kuò)展部分單片機(jī)已留出了足夠的端口。
參考文獻(xiàn)
1. 楊忠煌,黃博俊,李文昌.單芯片8051實(shí)務(wù)與應(yīng)用[M].北京:中國(guó)水利水電出版社,2001.6第一版.
2. 張洪潤(rùn),馬平安,張亞凡.單片機(jī)原理及應(yīng)用[M].北京:北京科學(xué)出版社,2002.8第一版.
附錄1 元器件明細(xì)表
名稱(chēng)
型號(hào)
數(shù)量
單片機(jī)
AT89S51
1
鎖存器
74HC373
2
電阻
10K, 470
17,8
貼片發(fā)光二極管
LBD
128
電容
30pf
2
電解電容
22uf
1
三極管
9012
8
晶陣
12M
1
插座
40腳,20腳
1,1
下載口
1
第 14 頁(yè) 共 14 頁(yè)
附錄2 程序清單
FLAG EQU 20H
FUN0FLAG EQU 00H
FUN1FLAG EQU 01H
FUN2FLAG EQU 02H
FUN3FLAG EQU 03H
FUN4FLAG EQU 04H
FUN5FLAG EQU 05H
FUN6FLAG EQU 06H
FUN7FLAG EQU 07H
CIRCAL EQU 08H
HUANGE EQU 09H
SHXING1 EQU 0AH
SHXING2 EQU 0BH
SHXING3 EQU 0CH
DANSAO EQU 0DH
DANSAOJIASU EQU 0EH
LUOXUAN EQU 0FH
COLOUR EQU 10H
JMPFLAG EQU PSW.7
TIMECOUNT DATA 29H
LOCK0 DATA 30H
LOCK1 DATA 31H
LOCK2 DATA 32H
LOCK3 DATA 33H
LOCK4 DATA 34H
LOCK5 DATA 35H
LOCK6 DATA 36H
LOCK7 DATA 37H
DATA0 DATA 40H
DATA1 DATA 41H
DATA2 DATA 42H
DATA3 DATA 43H
DATA4 DATA 44H
DATA5 DATA 45H
DATA6 DATA 46H
DATA7 DATA 47H
DATA8 DATA 48H
B1 DATA 48H
B2 DATA 49H
B3 DATA 50H
B4 DATA 51H
B5 DATA 52H
B6 DATA 53H
B7 DATA 54H
B8 DATA 55H
ORG 0000H
LJMP START ;轉(zhuǎn)入主程序
ORG 0003H ;外部中斷INT0入口地址
RETI ;返回,不用
ORG 000BH ;定時(shí)器T0入口地址
LJMP INTT0 ;轉(zhuǎn)入T0中斷服務(wù)程序
ORG 0013H ;外部中斷INT1入口地址
RETI ;返回
ORG 001BH ;定時(shí)器T
RETI
;LJMP INTT1 ;轉(zhuǎn)入T1中斷服務(wù)程序
ORG 0023H ;轉(zhuǎn)入創(chuàng)行中斷服務(wù)程序
RETI ;返回,不用
START:MOV FLAG,#00000001B
MOV TIMECOUNT,#05H
MOV TMOD,#01H
MOV TL0,#0F0H
MOV TH0,#0D8H
SETB EA
SETB ET0
SETB TR0
MAIN:
JB FUN0FLAG,FUN0
JB FUN1FLAG,FUN1
JB FUN2FLAG,FUN2
JB FUN3FLAG,FUNC3
JB FUN4FLAG,FUNC4
JB FUN5FLAG,FUNC5
JB FUN6FLAG,FUNC6
JB FUN7FLAG,FUNC7
FUNC3:LJMP FUN3
FUNC4:LJMP FUN4
FUNC5:LJMP FUN5
FUNC6:LJMP FUN6
FUNC7:LJMP FUN7
FUN0:CLR CIRCAL
SETB JMPFLAG
MOV LOCK0,#0FEH
MOV DATA0,#000H
MOV R0,TIMECOUNT
FUN00:JNB FUN0FLAG,FUN1
MOV P2,DATA0
MOV P0,DATA0
MOV P1,LOCK0
AJMP FUN00
FUN1:CLR HUANGE
SETB JMPFLAG
MOV B1,#8H
MOV DATA1,#0AAH
MOV LOCK1,#0FEH
FUN10:JB HUANGE,FUN2
MOV P0,DATA1
MOV P1,LOCK1
LCALL DL20
MOV A,DATA1
CPL A
MOV P2,A
MOV P1,LOCK1
LCALL DL20
MOV A,LOCK1
RLC A
MOV LOCK1,A
LJMP FUN10
FUN2:CLR SHXING1
SETB JMPFLAG
MOV B2,#2H
MOV DATA2,#07FH
FUN20:MOV LOCK2,#0FEH
FUN21:JB FUN3FLAG,FUN3
MOV P0,DATA2
MOV P2,DATA2
MOV P1,LOCK2
LCALL DL20
MOV A,LOCK2
RLC A
MOV LOCK2,A
LJMP FUN21
FUN3:CLR DANSAO
CLR DANSAOJIASU
SETB JMPFLAG
MOV B3,#5H
FUN30:
MOV DATA3,#0FEH
MOV LOCK3,#0FEH
FUN31:JB FUN4FLAG,FUN33
JB DANSAO,FUN32
MOV P0,DATA3
MOV P2,#0FFH
MOV P1,LOCK3
LCALL DL20
MOV A,LOCK3
RLC A
MOV LOCK3,A
LJMP FUN31
FUN32:JB FUN4FLAG,FUN33
JNB DANSAO,FUN31
MOV P0,#0FFH
MOV P2,DATA3
MOV P1,LOCK3
LCALL DL20
MOV A,LOCK3
RLC A
MOV LOCK3,A
LJMP FUN32
FUN33:LJMP FUN4
FUN4:CLR LUOXUAN
SETB JMPFLAG
MOV DATA4,#0FEH
MOV LOCK4,#0FEH
FUN40:JB FUN5FLAG,FUN42
JB LUOXUAN,FUN41
MOV P0,DATA4
MOV P2,#0FFH
MOV P1,LOCK4
LCALL DL20
AJMP FUN40
FUN41:JB FUN5FLAG,FUN42
JNB LUOXUAN,FUN40
MOV P0,#0FFH
MOV P2,DATA4
MOV P1,LOCK4
LCALL DL20
AJMP FUN41
FUN42:LJMP FUN5
FUN5:CLR SHXING2
SETB JMPFLAG
MOV B4,#8H
MOV DATA5,#0F0H
MOV LOCK5,#0FEH
FUN50:JB SHXING2,FUN51
MOV P0,DATA5
MOV P1,LOCK5
LCALL DL20
MOV A,DATA5
CPL A
MOV P2,A
MOV P1,LOCK5
LCALL DL20
MOV A,LOCK5
RLC A
MOV LOCK5,A
LJMP FUN50
FUN51:LJMP FUN6
FUN6:CLR COLOUR
SETB JMPFLAG
MOV B5,#2H
MOV DATA6,#00H
MOV LOCK6,#0EEH
FUN60:JB FUN0FLAG,FUN61
MOV P0,DATA6
MOV P2,DATA6
MOV P1,LOCK6
AJMP FUN60
FUN61:LJMP FUN0
FUN7: MOV DATA7,#0FCH
MOV DATA8,#03FH
MOV LOCK7,#0FEH
FUN70:PUSH DATA7
FUN71:MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P0,DATA7
MOV P1,LOCK7
LCALL DL1MS
MOV A,DATA7
RL A
RL A
MOV DATA7,A
MOV A,LOCK7
RL A
MOV LOCK7,A
JNB ACC.4,FUN72
AJMP FUN71
FUN72:POP DATA7
PUSH DATA8
FUN73:
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P2,DATA8
MOV P1,LOCK7
LCALL DL1MS
MOV A,DATA8
RR A
RR A
MOV DATA8,A
MOV A,LOCK7
RL A
MOV LOCK7,A
JNB ACC.0,FUN74
AJMP FUN73
FUN74:POP DATA8
LJMP FUN70
DL20:MOV R7,#0AH
LOOP1:DJNZ R7,LOOP1
RET
DL1MS:MOV R6,#28H
LOOP2:LCALL DL20
DJNZ R6,LOOP2
RET
INTT0:
PUSH PSW
DJNZ R0,OUT
MOV TL0,#0F0H
MOV TH0,#0D8H
MOV R0,TIMECOUNT
JB FUN0FLAG,FLAG0
JB FUN1FLAG,FLAG1
JB FUN2FLAG,FLAG2
JB FUN3FLAG,FLAG3JMP
JB FUN4FLAG,FLAG4JMP
JB FUN5FLAG,FLAG5JMP
JB FUN6FLAG,FLAG6JMP
JB FUN7FLAG,FLAG7JMP
FLAG3JMP:LJMP FLAG3
FLAG4JMP:LJMP FLAG4
FLAG5JMP:LJMP FLAG5
FLAG6JMP:LJMP FLAG6
FLAG7JMP:LJMP FLAG7
OUT: LJMP T0OUT
FLAG0:JB CIRCAL,FLAG01
MOV A,LOCK0
JNB ACC.7,FLAG00
RLC A
MOV LOCK0,A
LJMP T0OUT
FLAG00:SETB CIRCAL
MOV LOCK0,#07FH
FLAG01:RRC A
MOV LOCK0,A
JNC FLAG02
LJMP T0OUT
FLAG02:CLR FUN0FLAG
SETB FUN1FLAG
LJMP T0OUT
FLAG1:MOV A,B1
JZ FLAG10
DEC B1
MOV A,DATA1
CPL A
MOV DATA1,A
LJMP T0OUT
FLAG10:CLR FUN1FLAG
SETB FUN2FLAG
SETB HUANGE
LJMP T0OUT
FLAG2:JB SHXING1,FLAG21
CLR JMPFLAG
MOV A,DATA2
JNB ACC.0,FLAG20
RRC A
MOV DATA2,A
LJMP T0OUT
FLAG20:SETB SHXING1
MOV DATA2,#00H
FLAG21:SETB JMPFLAG
MOV A,DATA2
RLC A
JC FLAG22
MOV DATA2,A
LJMP T0OUT
FLAG22:DEC B2
MOV A,B2
JZ FLAG23
CLR SHXING1
LJMP FLAG2
FLAG23:CLR FUN2FLAG
SETB FUN3FLAG
LJMP T0OUT
FLAG3:SETB JMPFLAG
JB DANSAO,FLAG31
JNB DANSAO,FLAG30
FLAG30:CLR DANSAO
MOV A,DATA3
RLC A
MOV DATA3,A
JNC FLAG31
LJMP FLAG33
FLAG31:SETB DANSAO
MOV A,DATA3
RRC A
MOV DATA3,A
JNC FLAG32
LJMP T0OUT
FLAG32:SETB DANSAOJIASU
LJMP FLAG30
FLAG33:JNB DANSAOJIASU,FLAG35
CLR DANSAOJIASU
DEC B3
MOV A,B3
JZ FLAG34
MOV TIMECOUNT,B3
MOV R0,TIMECOUNT
LJMP T0OUT
FLAG34:CLR FUN3FLAG
SETB FUN4FLAG
MOV TIMECOUNT,#02H
FLAG35:LJMP T0OUT
FLAG4:SETB JMPFLAG
JNB LUOXUAN,FLAG40
JB LUOXUAN,FLAG42
FLAG40:CLR LUOXUAN
CLR JMPFLAG
MOV A,DATA4
RLC A
JNC FLAG41
MOV DATA4,A
LJMP T0OUT
FLAG41:MOV DATA4,#07FH
SETB LUOXUAN
FLAG42:CLR JMPFLAG
MOV A,DATA4
RRC A
MOV DATA4,A
JNC FLAG43
LJMP T0OUT
FLAG43:SETB JMPFLAG
MOV A,LOCK4
RLC A
MOV LOCK4,A
MOV DATA4,#0FEH
CLR LUOXUAN
JNC FLAG44
LJMP T0OUT
FLAG44:CLR FUN4FLAG
SETB FUN5FLAG
MOV TIMECOUNT,#05H
LJMP T0OUT
FLAG5:MOV A,B4
JZ FLAG50
DEC B4
MOV A,DATA5
CPL A
MOV DATA5,A
LJMP T0OUT
FLAG50:CLR FUN5FLAG
SETB FUN6FLAG
SETB SHXING2
MOV TIMECOUNT,#05H
LJMP T0OUT
FLAG6:JB COLOUR,FLAG61
FLAG64:MOV A,LOCK6
JNB ACC.7,FLAG60
RLC A
MOV LOCK6,A
LJMP T0OUT
FLAG60:SETB COLOUR
MOV LOCK6,#077H
FLAG61:MOV A,LOCK6
JNB ACC.0,FLAG62
RRC A
MOV LOCK6,A
LJMP T0OUT
FLAG62:MOV A,B5
JZ FLAG63
DEC B5
CLR COLOUR
MOV LOCK6,#0EEH
LJMP FLAG64
FLAG63:CLR FUN6FLAG
SETB FUN0FLAG
MOV TIMECOUNT,#05H
LJMP T0OUT
FLAG7:MOV A,DATA7
RL A
RL A
MOV DATA7,A
MOV A,DATA8
RL A
RL A
MOV DATA8,A
MOV A,B6
JZ FLAG70
DEC B6
LJMP T0OUT
FLAG70:CLR FUN7FLAG
SETB FUN0FLAG
T0OUT:POP PSW
RETI
END
附錄3 印制板圖
1.顯示部分
2.控制部分
收藏