一種用AT89C2051制作的新穎汽車(chē)尾燈指示器
本文介紹一種新穎的汽車(chē)尾燈指示器,指示器由特制的發(fā)光二極管點(diǎn)陣組成,共有八組,每組同時(shí)點(diǎn)亮由九個(gè)發(fā)光二極管,置于汽車(chē)后玻璃窗上,共有五種顯示狀態(tài),當有停車(chē)或剎車(chē)信號時(shí),八組發(fā)光管點(diǎn)陣全點(diǎn),有后退信號時(shí),發(fā)光二極管點(diǎn)陣閃亮,當有危險信號時(shí),八組發(fā)光二極管分為左右兩組交替閃亮,有右轉彎信號時(shí),右邊四組發(fā)光二極管從中間向右邊依次點(diǎn)亮,有左轉彎信號時(shí),左邊四組發(fā)光二極管從中間向左邊依次點(diǎn)亮,在轉彎信號未消失時(shí)不斷重復,此指示器新穎別致,給人以賞新悅目的感覺(jué)。
本文引用地址:http://dyxdggzs.com/article/201610/309783.htm本裝置采用的AT89C2051芯片是Atmel公司生產(chǎn)的自帶2KB可編程Flash存儲器的與MSC-51兼容的高性能處理器。它與常規的51芯片有相同的核心和相近的結構功能如RAM、定時(shí)/記數器、中斷結構、串行口、振蕩器和時(shí)鐘電路等;有最高達24MHz的振蕩頻率,有較少的精簡(jiǎn)I/O端口,因此體積很小,非常適用做小型應用系統的處理器。
匯編程序及詳細注釋如下:
STOP BIT 32H ;剎車(chē)標志
DANGE BIT 33H ;危險標志
BACK BIT 34H ;倒車(chē)標志
RIGHT BIT 35H ;右轉標志
LEFT BIT 36H ;左轉標志
FLASH BIT 37H ;閃爍標志
LRSET BIT 38H ;依次點(diǎn)亮標志
COUNT EQU 32H ;依次亮點(diǎn)計數器
ORG 0000H
AJMP MAIN ;跳轉主程序
ORG 0030H
AJMP MAIN
MAIN: NOP
MOV R0,#20H ;20H至60H單元清零
MOV A,#0
RES: MOV @R0,A
INC R0
CJNE R0,#60H,RES
MOV SP,#60H ;設置堆棧指針為60H
MOV COUNT,#0 ;清依次顯示循環(huán)計數器
CLR TIME_OUT ;清定時(shí)時(shí)間到標志
CLR EA
CLR RIGHT ;清右轉標志
CLR STOP ;清剎車(chē)標志
CLR DANGE ;清危險標志
CLR BACK ;清倒車(chē)標志
CLR LEFT ;清左轉標志
CLR LRSET ;清依次點(diǎn)亮標志
LOP: ACALL DL1 ;調用延時(shí)子程序
ACALL DL1 ;調用延時(shí)子程序
CPL FLASH ;閃爍標志取反
JNB LRSET,LOP1 ;無(wú)依次點(diǎn)亮標志轉LOP1
INC COUNT ;依次點(diǎn)亮計數器加1
MOV A,COUNT
CJNE A,#5,LOP1
MOV COUNT,#0 ;計數計到5清零
LOP1: ACALL CL ;調用過(guò)程處理子程序
LOPA: ACALL KEY ;調用按鍵處理子程序
AJMP LOP ;返回主循環(huán)
DL1 : MOV R6,#200 ;延時(shí)子程序
DL11: MOV R5,#250
DJNZ R5,$
DJNZ R6,DL11
RET
CL: NOP ;過(guò)程處理子程序
JNB STOP,CL1
MOV A,#0FFH ;有停車(chē)或剎車(chē)標志
CPL A ; 顯示器全亮
MOV P1,A
AJMP CLE
CL1: JNB DANGE,CL2
JB FLASH,CL11 ;有危險標志
MOV A,#0FH ;左右兩組顯示器交替閃爍
MOV P1,A
AJMP CLE
CL11: MOV A,#0F0H
MOV P1,A
AJMP CLE
CL2: JNB BACK,CL3
JB FLASH,CL21 ;有倒車(chē)標志
MOV A,#0FFH ;顯示器做全亮或全滅交替
MOV P1,A ;顯示器全亮
AJMP CLE
CL21: MOV A,#00H
MOV P1,A ;顯示器全滅
AJMP CLE
CL3: JNB RIGHT,CL4
MOV DPTR,#RIGHT_CHAR ;有右轉標志
MOV A,COUNT ;右邊四個(gè)一組的發(fā)光陣列依次循環(huán)亮
MOVC A,@A+DPTR ;取顯示值
CPL A
MOV P1,A
AJMP CLE
CL4: JNB LEFT,CL5
MOV DPTR,#LEFT_CHAR ;有左轉標志
MOV A,COUNT ;左邊四個(gè)一組的發(fā)光陣列依次循環(huán)亮
MOVC A,@A+DPTR ;取顯示值
CPL A
MOV P1,A
AJMP CLE
CL5: MOV A,#0 ;若無(wú)任何標志,關(guān)閉顯示器
CPL A
MOV P1,A
CLE: RET
KEY: NOP ; 按鍵處理子程序
CLR STOP ; 清除停止標志
CLR DANGE ; 清除危險標志
CLR BACK ; 清除倒車(chē)標志
CLR RIGHT ; 清除右轉標志
CLR LEFT ; 清除左轉標志
JNB P3.2,KEY1
SETB STOP ; P3.2有鍵按下,置停止標志
AJMP KEYE
KEY1: JNB P3.3,KEY11
SETB DANGE ; P3.3有鍵按下,置危險標志
KEY11: MOV A,P3
CJNE A,#22H,KEY2
SETB DANGE ; P3.5 P3.1同時(shí)按下,置危險標志
AJMP KEYE
KEY2: JNB P3.4,KEY3
SETB BACK ;P3.4有鍵按下,置倒車(chē)標志
AJMP KEYE
KEY3: JNB P3.5,KEY4
SETB RIGHT ;P3.5有鍵按下,置右轉標志
JB LRSET,KEYE
SETB LRSET ;設置左右轉循環(huán)顯示標志
MOV COUNT,#0 ;循環(huán)顯示計數器清零
AJMP KEYE
KEY4: JNB P3.1,KEY5
SETB LEFT ;P3.1有鍵按下,置左轉標志
JB LRSET,KEYE
SETB LRSET ;設置左右轉循環(huán)顯示標志
MOV COUNT,#0 ;循環(huán)顯示計數器清零
AJMP KEYE
KEY5: CLR LRSET ;清左右轉循環(huán)顯示標志
KEYE: RET
LEFT_CHAR: DB 00H,10H,30H,70H,0F0H ;從右到左依次點(diǎn)亮值
RIGHT_CHAR: DB 00H,08H,0CH,0EH,0FH ;從左到右依次點(diǎn)亮值
評論