本文介绍一种新颖的轿车尾灯指示器,指示器由特制的发光二极管点阵组成,共有八组,每组一起点亮由九个发光二极管,置于轿车后玻璃窗上,共有五种显现状况,当有泊车或刹车信号时,八组发光管点阵全点,有撤退信号时,发光二极管点阵闪亮,当有风险信号时,八组发光二极管分为左右两组替换闪亮,有右转弯信号时,右边四组发光二极管从中心向右边顺次点亮,有左转弯信号时,左面四组发光二极管从中心向左面顺次点亮,在转弯信号未消失时不断重复,此指示器新颖别致,给人以赏新顺眼的感觉。
本设备选用的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 ;从左到右顺次点亮值