交通灯单片机控制系统设计 交通灯单片机程序汇编

本篇文章给大家谈谈交通灯单片机程序汇编,以及交通灯单片机控制系统设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。办理pos机添加微信18127011016

AT89S51 单片机控制交通灯程序(汇编语言)

交通灯单片机控制系统设计 交通灯单片机程序汇编

ORG  0000H

LJMP START

ORG  0003H    ;INT 0 中断入口地址

LJMP INT0

ORG  0040H

START:

MOV SP,#60H

SETB EX0      ;INT 0 中断有效

SETB IT0

SETB EA

LCALL STATUS0 ;初始状态(都是红灯)

CIRCLE:

LCALL STATUS1 ;南北绿灯,东西红灯

LCALL STATUS2 ;南北绿灯闪转黄灯,东西红灯

LCALL STATUS3 ;南北红灯,东西绿灯

LCALL STATUS4 ;南北红灯,东西绿灯闪转黄灯

LJMP CIRCLE

INT0:

PUSH PSW      ;保护现场

PUSH 2

PUSH ACC

MOV DPTR,#8300H

MOV A,#0FH    ;南北,东西都亮红灯

MOVX @DPTR,A

MOV R2,#100   ;延时10秒

LCALL DELAY

POP ACC       ;恢复现场

MOVX @DPTR,A

POP 2

POP PSW

RETI

STATUS0:              ;南北红灯,东西红灯

MOV DPTR,#8300H

MOV A,#0FH

MOVX @DPTR,A

MOV R2,#10    ;延时1秒

LCALL DELAY

RET

STATUS1:              ;南北绿灯,东西红灯

MOV DPTR,#8300H

MOV A,#96H    ;南北绿灯,东西红灯

MOVX @DPTR,A

MOV R2,#200   ;延时20秒

LCALL DELAY

RET

STATUS2:              ;南北绿灯闪转黄灯,东西红灯

MOV DPTR,#8300H

MOV R3,#03H   ;绿灯闪3次

FLASH:

MOV A,#9FH

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

MOV A,#96H

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

DJNZ R3,FLASH

MOV A,#06H    ;南北黄灯,东西红灯

MOVX @DPTR,A

MOV R2,#10    ;延时1秒

LCALL DELAY

RET

STATUS3:              ;南北红灯,东西绿灯

MOV DPTR,#8300H

MOV A,#69H

MOVX @DPTR,A

MOV R2,#200   ;延时20秒

LCALL DELAY

RET

STATUS4:              ;南北红灯,东西绿灯闪转黄灯

MOV DPTR,#8300H

MOV R3,#03H   ;绿灯闪3次

FLASH1:

MOV A,#6FH

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

MOV A,#69H

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

DJNZ R3,FLASH1

MOV A,#09H   ;南北红灯,东西黄灯

MOVX @DPTR,A

MOV R2,#10   ;延时1秒

LCALL DELAY

NOP

RET

DELAY:                ;延时子程序

PUSH 2

PUSH 1

PUSH 0

DELAY1:

MOV 1,#00H

DELAY2:

MOV 0,#0B2H

DJNZ 0,$

DJNZ 1,DELAY2 ;延时 100 mS

DJNZ 2,DELAY1

POP 0

POP 1

POP 2

RET

END

这是我们的实验,程序肯定没问题。至于ULN2803,只是一个增大电流,电压的芯片,因为51单片机本身的电流太小。你改一下就好。至于其他不明白的地方,可以交流。QQ375778861

单片机交通灯的汇编程序

NAME T3 ;I/O口扩展实验一

PORT EQU 0CFA0H ;片选地址CS0

CSEG AT 0000H

LJMP START

CSEG AT 4100H

START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭

ACALL DISP ;调用273显示单元(以下雷同)

ACALL DE3S ;延时3秒

LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮

ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮

ACALL DISP

MOV R2,#05H ;R2中的值为黄灯闪烁次数

TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮

ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮

ACALL DISP

ACALL DE02S ;延时0.2秒

DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次

MOV A,#11H ;两个红灯亮,黄灯、绿灯灭

ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮

ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭

ACALL DISP

MOV R2,#05H ;黄灯闪烁五次

GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮

ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭

ACALL DISP

ACALL DE02S ;延时0.2秒

DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次

MOV A,#03H ;两个红灯亮,黄灯、绿灯灭

ACALL DISP

ACALL DE02S ;延时0.2秒

JMP LLL ;转LLL循环

DE10S: MOV R5,#100 ;延时10秒

JMP DE1

DE3S: MOV R5,#30 ;延时3秒

JMP DE1

DE02S: MOV R5,#02 ;延时0.2秒

DE1: MOV R6,#200

DE2: MOV R7,#126

DE3: DJNZ R7,DE3

DJNZ R6,DE2

DJNZ R5,DE1

RET

DISP: MOV DPTR,#PORT ;273显示单元

CPL A

MOVX @DPTR,A

RET

END

你看看行不行 如果不行你自己再稍微改一下吧 反正大概就这些了

希望对你能有所帮助。

基于80c51单片机的交通灯课程设计汇编语言编程

简单

程序流程如下:

开始:绿灯

东西方向南北方向的红灯

延迟30秒

东西方向绿灯“

南北方向的红灯已关闭

东西方向的,黄色的光的

南北方向的,黄色的光

BR

/

5秒延时的东西方向的黄色指示灯熄灭南北方向

黄色指示灯熄灭

的方向,南北方向20秒的延迟一个南北方向绿灯东西方向红灯

绿灯熄灭红灯熄灭东西方向

一些黄色的光

的黄色光南北方向

5秒的延迟将启动…

阿尔法

Alpha

单片机交通灯程序

采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮

每个街口有左拐、直行及行人三种指示灯。直行灯每个灯有红、黄、绿三种颜色。自行车与汽车共用左拐和直行灯。

首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒),然后东西向的绿灯亮,依次类推。

每次绿灯亮的时候,对应的行人灯亮。

60S/30S/5S/60S/30S/5S

东西道

绿和行人/左转/黄/红/红/红

南北道

红/红/红/绿和行人/左转/黄

行人灯亮的时候有声音提示盲人能通过。

突发交通事故的时候能够紧急全红灯。

在有重要人物通过的时候能手动改为绿灯。

ORG 0000H ;主程序的入口地址

LJMP MAIN ;跳转到主程序的开始处

ORG 0003H ;外部中断0的中断程序入口地址

ORG 000BH ;定时器0的中断程序入口地址

LJMP T0_INT ;跳转到中断服务程序处

ORG 0013H ;外部中断1的中断程序入口地址

MAIN : MOV SP,#50H

MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断

MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1

MOV TH1,#00H ;T1计数器清零

MOV TL1,#00H

SETB TR1 ;启动T1计时器

SETB EX1 ;允许INT1中断

SETB IT1 ;选择边沿触发方式

MOV DPTR ,#0003H

MOV A, #80H ;给8255赋初值,8255工作于方式0

MOVX @DPTR, A

AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转

MOV A,P1

JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间

MOV R0,#00H ;R0清零

MOV R0,A ;存入东西方向绿灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

RED: MOV A,P1

ANL A,#7FH ;P1.7置0

MOV R7,#00H ;R7清零

MOV R7,A ;存入东西方向红灯初始时间

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

;———————————-

N0: SETB TR0 ;启动T0计时器

MOV 76H,R7 ;红灯时间存入76H

N00: MOV A,76H ;东西方向禁止,南北方向通行

MOV R3,A

MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮

MOV A,#0DDH

MOVX @DPTR, A

N01: JB P2.0,B0

N02: SETB P3.0

CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行

;——黄灯闪烁5秒程序——

N1: SETB P3.0

MOV R3,#05H

MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮

MOV A,#0D4H

MOVX @DPTR,A

N11: MOV R4,#00H

N12: CJNE R4,#7DH,\( ;黄灯持续亮0.5秒 </p><p>N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 </p><p>MOV A,#0DDH </p><p>MOVX @DPTR,A </p><p>N14: MOV R4,#00H </p><p>CJNE R4,#7DH,\) ;黄灯持续灭0.5秒

CJNE R3,#00H,N1 ;闪烁时间达5秒则退出

;———————————–

N2: MOV R7,#00H

MOV A,R0 ;东西通行,南北禁止

MOV R3,A

MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮

MOV A,#0EBH

MOVX @DPTR,A

N21: JB P2.0,T03

N22: CJNE R3,#00H,N21

;——黄灯闪烁5秒程序——

N3: MOV R3,#05H

MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮

MOV A,#0E2H

MOVX @DPTR,A

N31: MOV R4,#00H

CJNE R4,#7DH,\( ;黄灯持续亮0.5秒 </p><p>N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 </p><p>MOV A,#0EBH </p><p>MOVX @DPTR,A </p><p>N33: MOV R4,#00H </p><p>CJNE R4,#7DH,\) ;黄灯持续灭0.5秒

CJNE R3,#00H,N3 ;闪烁时间达5秒则退出

SJMP N00

;——闯红灯报警程序——

B0: MOV R2,#03H ;报警持续时间3秒

B01: MOV A,R3

JZ N1 ;若倒计时完毕,不再报警

CLR P3.0 ;报警

CJNE R2,#00H,B01 ;判断3秒是否结束

SJMP N02

;——1秒延时子程序——-

N7: RETI

T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值

MOV TH0,#0F1H

INC R4

INC R5

CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序

MOV R5,#00H ;R5清零

DEC R3 ;倒计时初值减一

DEC R2 ;报警初值减一

T01: ACALL DISP ;调用显示子程序

RETI ;中断返回

;——显示子程序——

DISP: JNB P2.4,T02

DISP1: MOV B,#0AH

MOV A,R3 ;R3中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS2: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

RET

;——东西方向车流量检测程序——

T03: MOV A,R3

SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量

JZ N3

JB P2.0,T03

INC R7

CJNE R7,#64H,E1

MOV R7,#00H ;中断到100次则清零

E1: SJMP N22

;——东西方向车流量显示程序——

T02: MOV B,#0AH

MOV A,R7 ;R7中值二转十显示转换

DIV AB

MOV 79H,A

MOV 7AH,B

DIS3: MOV A,79H ;显示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS4: MOV A,7AH ;显示个位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

LJMP N7

;——延时4MS子程序———-

DELAY: MOV R1,#0AH

LOOP: MOV R6,#64H

NOP

LOOP1: DJNZ R6,LOOP1

DJNZ R1,LOOP

RET

;——字符表——

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

单片机交通灯汇编语言程序,只需红黄绿灯顺序亮就行了

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0;   //东西向灯

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3;   //南北向灯

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量

//延时

void DelayMS(uint x)

{

uchari;

while(x–)for(i=0;i120;i++);

}

//交通灯切换

void Traffic_Light()

{

switch(Operation_Type)

{

case1:     //东西向绿灯与南北向红灯亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2:     //东西向黄灯闪烁,绿灯关闭

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!=10)return; //闪烁5次

Flash_Count=0;

Operation_Type=3;

break;

case3:     //东西向红灯,南北向绿灯亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4:     //南北向黄灯闪烁5次

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主程序

void main()

{

while(1)Traffic_Light();

}

交通灯单片机程序汇编的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于交通灯单片机控制系统设计、交通灯单片机程序汇编的信息别忘了在本站进行查找喔。

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。