一种用AT89C2051制作的新颖汽车尾灯指示器
扫描二维码
随时随地手机看文章
本文介绍一种新颖的汽车尾灯指示器,指示器由特制的发光二极管点阵组成,共有八组,每组同时点亮由九个发光二极管,置于汽车后玻璃窗上,共有五种显示状态,当有停车或刹车信号时,八组发光管点阵全点,有后退信号时,发光二极管点阵闪亮,当有危险信号时,八组发光二极管分为左右两组交替闪亮,有右转弯信号时,右边四组发光二极管从中间向右边依次点亮,有左转弯信号时,左边四组发光二极管从中间向左边依次点亮,在转弯信号未消失时不断重复,此指示器新颖别致,给人以赏新悦目的感觉。
本装置采用的AT89C2051芯片是Atmel公司生产的自带2KB可编程Flash存储器的与MSC-51兼容的高性能处理器。它与常规的51芯片有相同的核心和相近的结构功能如RAM、定时/记数器、中断结构、串行口、振荡器和时钟电路等;有最高达24MHz的振荡频率,有较少的精简I/O端口,因此体积很小,非常适用做小型应用系统的处理器。
汇编程序及详细注释如下:
STOP BIT 32H ;刹车标志
DANGE BIT 33H ;危险标志
BACK BIT 34H ;倒车标志
RIGHT BIT 35H ;右转标志
LEFT BIT 36H ;左转标志
FLASH BIT 37H ;闪烁标志
LRSET BIT 38H ;依次点亮标志
COUNT EQU 32H ;依次亮点计数器
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 ;清依次显示循环计数器
CLR TIME_OUT ;清定时时间到标志
CLR EA
CLR RIGHT ;清右转标志
CLR STOP ;清刹车标志
CLR DANGE ;清危险标志
CLR BACK ;清倒车标志
CLR LEFT ;清左转标志
CLR LRSET ;清依次点亮标志
LOP: ACALL DL1 ;调用延时子程序
ACALL DL1 ;调用延时子程序
CPL FLASH ;闪烁标志取反
JNB LRSET,LOP1 ;无依次点亮标志转LOP1
INC COUNT ;依次点亮计数器加1
MOV A,COUNT
CJNE A,#5,LOP1
MOV COUNT,#0 ;计数计到5清零
LOP1: ACALL CL ;调用过程处理子程序
LOPA: ACALL KEY ;调用按键处理子程序
AJMP LOP ;返回主循环
DL1 : MOV R6,#200 ;延时子程序
DL11: MOV R5,#250
DJNZ R5,$
DJNZ R6,DL11
RET
CL: NOP ;过程处理子程序
JNB STOP,CL1
MOV A,#0FFH ;有停车或刹车标志
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 ;有倒车标志
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 ;右边四个一组的发光阵列依次循环亮
MOVC A,@A+DPTR ;取显示值
CPL A
MOV P1,A
AJMP CLE
CL4: JNB LEFT,CL5
MOV DPTR,#LEFT_CHAR ;有左转标志
MOV A,COUNT ;左边四个一组的发光阵列依次循环亮
MOVC A,@A+DPTR ;取显示值
CPL A
MOV P1,A
AJMP CLE
CL5: MOV A,#0 ;若无任何标志,关闭显示器
CPL A
MOV P1,A
CLE: RET
KEY: NOP ; 按键处理子程序
CLR STOP ; 清除停止标志
CLR DANGE ; 清除危险标志
CLR BACK ; 清除倒车标志
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同时按下,置危险标志
AJMP KEYE
KEY2: JNB P3.4,KEY3
SETB BACK ;P3.4有键按下,置倒车标志
AJMP KEYE
KEY3: JNB P3.5,KEY4
SETB RIGHT ;P3.5有键按下,置右转标志
JB LRSET,KEYE
SETB LRSET ;设置左右转循环显示标志
MOV COUNT,#0 ;循环显示计数器清零
AJMP KEYE
KEY4: JNB P3.1,KEY5
SETB LEFT ;P3.1有键按下,置左转标志
JB LRSET,KEYE
SETB LRSET ;设置左右转循环显示标志
MOV COUNT,#0 ;循环显示计数器清零
AJMP KEYE
KEY5: CLR LRSET ;清左右转循环显示标志
KEYE: RET
LEFT_CHAR: DB 00H,10H,30H,70H,0F0H ;从右到左依次点亮值
RIGHT_CHAR: DB 00H,08H,0CH,0EH,0FH ;从左到右依次点亮值