奔驰C级怎么使用转信号灯?

奔驰C级怎么使用转信号灯?,第1张

奔驰C级使用转信号灯 *** 作如下:

短暂指示:沿箭头 2 或 4 的方向轻拨组合开关至阻力点。

相应的指示灯将闪烁三次。

永久指示:沿箭头 2 或 4 的方向拨动组合开关,使其越过阻力点。

配备主动式车道变更辅助系统的车辆:主动式车道变更辅助系统:

在驾驶员已启用指示灯时,可延长指示灯工作时间,直至变换车道结束。

在驾驶员打算立即转向但不可立即变换车道时,会自动启用转向信号指示灯。

//看看用AT89s52行不?

//制作:晓军

#include <reg52.h>

#define ON 1

#define OFF 0

unsigned int t,t_Light

unsigned char flag

sbit SN_Green=P1^0

sbit SN_Yellow=P1^1

sbit SN_Red=P1^2

sbit EW_Green=P1^3

sbit EW_Yellow=P1^4

sbit EW_Red=P1^5

void init(void)

{

TMOD=0x01

EA=1

ET0=1

TR0=1

TH0=(65536-50000)/256

TL0=(65536-50000)%256

}

void main(void)

{

init()

while(1)

{

switch(flag)

{

case 1:

SN_Green=ON

SN_Yellow=OFF

SN_Red=OFF

EW_Green=OFF

EW_Yellow=OFF

EW_Red=ON

break

case 2:

SN_Green=OFF

SN_Yellow=ON

SN_Red=OFF

EW_Green=OFF

EW_Yellow=ON

EW_Red=OFF

break

case 3:

SN_Green=OFF

SN_Yellow=OFF

SN_Red=ON

EW_Green=ON

EW_Yellow=OFF

EW_Red=OFF

break

}

}

}

void timer(void) interrupt 1 using 0

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

t++

if(t==18)

{

t=0

t_Light++

if(t_Light<=30)

{

flag=1

}

else if(t_Light<=34)

{

flag=2

}

else if(t_Light<88)

{

flag=3

if(t_Light==88) t_Light=0

}

}

}

我有个这样的你可以参考一下哦

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit K0=P3^0/*控制两道均为红灯*/

sbit SPK=P3^1/*报警灯亮*/

sbit K1=P3^2/*主道通行,支道禁行*/

sbit K2=P3^3/*支道通行,主道禁行*/

sbit red_a=P1^2

sbit yellow_a=P1^3

sbit green_a=P1^4

sbit red_b=P1^5

sbit yellow_b=P1^6

sbit green_b=P1^7

uchar a=0,m,k,h

uchar code dsy[]={0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff}/*断码*/

void delay(uint x)

{

uchar i

while(x--)

for(i=0i<120i++)

}

void traffic()

{

while(1)

{

while(1)

{

int i

for(i=0i<3i++)

{

red_a=1yellow_a=0green_a=0

red_b=0yellow_b=0green_b=1

k=30h=25

while(1) /*主干道通行35s*/

{

if(K0==0) break /*判断K0是否被按下,如果按下跳出本循环*/

P2=0x08

P0=dsy[k/10]

delay(2)

P2=0x04

P0=dsy[k%10]

delay(2)

P2=0x02

P0=dsy[h/10]

delay(2)

P2=0x01

P0=dsy[h%10]

delay(2)

if(k==0) break

if(h==0)

{h=5yellow_a=1red_a=1yellow_b=1red_b=0}

}

if(K0==0) break /*再判断一次K0,跳出本循环*/

{

red_a=0yellow_a=0green_a=1

red_b=1yellow_b=0green_b=0

}

k=15h=20

while(1) /*支道通行25s*/

{

if(K0==0) break

P2=0x08

P0=dsy[k/10]

delay(2)

P2=0x04

P0=dsy[k%10]

delay(2)

P2=0x02

P0=dsy[h/10]

delay(2)

P2=0x01

P0=dsy[h%10]

delay(2)

if(h==0) break

if(k==0)

{k=5yellow_a=1red_a=0yellow_b=1red_b=1}

}

if(K0==0) break

}

if(K0==0)

{

while(1) /*全部禁止通行*/

{

red_a=1yellow_a=0green_a=0

red_b=1yellow_b=0green_b=0

P2=0X00

SPK=1

if(K0!=0) break

}

}

SPK=0

}

}

}

void INT() interrupt 0 /*主干道通行,支道禁止通行*/

{

EX0=0

m=P1

if(K1==0)

{ while(1)

{

green_a=0red_a=1yellow_a=0P2=0x00

red_b=0yellow_b=0green_b=1

if(K1!=0) break

}

}

P1=m

EX0=1

}

void IMTER1() interrupt 2 /*支道通行,主干道禁止通行*/

{

EX1=0

m=P1

if(K2==0)

{ while(1)

{

green_a=1red_a=0yellow_a=0P2=0x00

red_b=1yellow_b=0green_b=0

if(K2!=0) break

}

}

P1=m

EX1=1

}

void TIMER0() interrupt 1/*1s的定时*/

{

a=a+1

if(a==10)

{k--h--a=0}

TH0=0x3CTL0=0xB0

}

void main()

{

TMOD=0x01

TH0=0x3C

TL0=0xB0

ET0=1

TR0=1

EA=1

EX1=1

EX0=1

IT0=0

IT1=0

PX0=1

PX1=1

SPK=0

traffic()

while(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11938491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存