汽车单片机转向灯程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
你好朋友,课设的内容是很多的,这里我可以给你汽车灯的程序:
Din BIT P3.0
CLK BIT P3.2
R_CLK BIT P3.1
SAME EQU 4EH
ORG 0000H
LJMP START1
ORG 0100H
START1: ;初始化显示
mov a, #0FFH
mov P0, a
mov P1, a
mov a, #00H
mov P2, a
MOV A ,#0FFH
LCALL DISPLAY
START: MOV A,P3 ; 读P3口的数据
ANL A,#0F8H ; 取用P3口的高五位数据
CJNE A,#0F8H,SHIY ; 对P3口高五位进行判断
LJMP START1 ; 开关没有动作时无输出
SHIY: MOV SAME,A
LCALL YS ; 延时
MOV A,P3 ; 读P3口的数据
ANL A,#0F8H ; 取用P3口的高五位数据
CJNE A,#0F8H,SHIY1 ; 对P3口高五位进行判断
LJMP START1 ; 开关没有动作时无输出
SHIY1: CJNE A,SAME,START1
CJNE A,#0F0H,NEXT1 ; P3.3=0时进入刹车分支
LJMP BRAKE
NEXT1: CJNE A,#0E8H,NEXT2 ; P3.4=0时进入紧急分支
LJMP EARGE
NEXT2: CJNE A,#0B8H,NEXT3 ; P3.6=0时进入左转分支
LJMP LEFT
NEXT3: CJNE A,#078H,NEXT4 ; P3.7=0时进入右转分支
LJMP RIGHT
NEXT4: CJNE A,#0B0H,NEXT5 ; P3.3=P3.6=0时进入左转刹车分支 LJMP LEBR
NEXT5: CJNE A,#070H,NEXT6 ; P3.3=P3.7=0时进入右转刹车分支 LJMP RIBR
NEXT6: CJNE A,#0E0H,NEXT7 ; P3.3=P3.4=0时进入紧急刹车分支
LJMP BRER
NEXT7: CJNE A,#0A0H,NEXT8 ; P3.3=P3.4=P3.6=0时进入左转紧急刹车分支
LJMP LBE
NEXT8: CJNE A,#60H,NEXT9 ; P3.3=P3.4=P3.7=0时进入右转紧急刹车分支
LJMP RBE
NEXT9: CJNE A,#0D8H,NEXT10 ; P3.5=0时进入停靠分支
LJMP STOP
NEXT10: LJMP ERROR ; 其它情况进入错误分支
LEFT: MOV A,#10101101B;0ABH ; 左转分支
LCALL DISPLAY
LCALL Y1s
MOV A,#0FFH
LCALL DISPLAY
LCALL Y1s
LJMP START
RIGHT: MOV A,#11010011B;0D5H ; 右转分支
LCALL DISPLAY
LCALL Y1s
MOV A,#0FFH
LCALL DISPLAY
LCALL Y1s
LJMP START
EARGE: MOV A,#10000000B;01H ; 紧急分支
LCALL DISPLAY
LCALL Y1s
MOV A,#0FFH
LCALL DISPLAY
LCALL Y1s
LJMP START
BRAKE: MOV A,#11111000B;0F9H ; 刹车分支
LCALL DISPLAY
LJMP START
LEBR: MOV A,#10101000B;0A9H ; 左转刹车分支
LCALL DISPLAY
LCALL Y1s
MOV A,#11111010B;0FDH
LCALL DISPLAY
LCALL Y1s
LJMP START
RIBR: MOV A,#11010000B;0D1H ; 右转刹车分支
LCALL DISPLAY
LCALL Y1s
MOV A,#11111100B;0F8H
LCALL DISPLAY
LCALL Y1s
LJMP START
BRER: MOV A,#10000000B;081H ; 紧急刹车分支
LCALL DISPLAY
LCALL Y1s
MOV A,#11111000B;0F9H
LCALL DISPLAY
LCALL Y1s
LJMP START
LBE: MOV A,#10000000B;81H ; 左转紧急刹车分支 LCALL DISPLAY
LCALL Y1s
MOV A,#11111010B;0FDH
LCALL DISPLAY
LCALL Y1s
LJMP START
RBE: MOV A,#10000000B;81H ; 右转紧急刹车分支 LCALL DISPLAY
LCALL Y1s
MOV A,#11111100B;0F8H
LCALL DISPLAY
LCALL Y1s
LJMP START
STOP: MOV A,#10011000B;99H ; 停靠分支
LCALL DISPLAY
LCALL Y100ms
MOV A,#0FFH
LCALL DISPLAY
LCALL Y100ms
LJMP START
ERROR: MOV A,#01111110B;0FEH ; 错误分支 LCALL DISPLAY
LCALL Y100ms
MOV A,#0FFH
LCALL DISPLAY
LCALL Y100ms
LJMP START
DISPLAY:
MOV R7, #8
OUTDATA:
RRC A
MOV DIN, C
CLR CLK
SETB CLK
NOP
NOP
DJNZ R7,OUTDATA
SETB R_CLK ;显示一行
CLR R_CLK
RET
YS: MOV R7,#20H ; 延时
YS0: MOV R6,#0FFH
YS1: DJNZ R6,YS1
DJNZ R7,YS0
RET
Y1s: MOV R7,#04H ; 延时
Y1s1: MOV R6,#0FFH
Y1S2: MOV R5,#0FFH
Y1S3: DJNZ R5,Y1S3
DJNZ R6,Y1s2
DJNZ R7,Y1s1
RET
Y100ms: MOV R7,#066H ; 延时
Y100ms1:MOV R6,#0FFH
Y100ms2:DJNZ R6,Y100ms2
DJNZ R7,Y100ms1
RET
END
希望对你有帮助!。