一种用AT89C2051制作的新颖汽车尾灯指示器
发布时间:2011-11-5 21:04
发布者:z_lzdq
本文介绍一种新颖的汽车尾灯指示器,指示器由特制的发光二极管点阵组成,共有八组,每组同时点亮由九个发光二极管,置于汽车后玻璃窗上,共有五种显示状态,当有停车或刹车信号时,八组发光管点阵全点,有后退信号时,发光二极管点阵闪亮,当有危险信号时,八组发光二极管分为左右两组交替闪亮,有右转弯信号时,右边四组发光二极管从中间向右边依次点亮,有左转弯信号时,左边四组发光二极管从中间向左边依次点亮,在转弯信号未消失时不断重复,此指示器新颖别致,给人以赏新悦目的感觉。 本装置采用的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 ;从左到右依次点亮值 END |
网友评论