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

作者&投稿:移贝 (若有异议请与网页底部的电邮联系)
单片机汇编语言编程交通灯~

问题:提问者所提问题有些许欠缺。
1.未提供具体的硬件连接方式。
2.未声明所使用单片机类型。

建议:陈述欠妥些许问题。
1.提供具体硬件连接方式,硬件连接不同,代码亦不同。
2.声明所使用的单片机类型,8位,16位抑或32为。

http://blog.163.com/asm_c/blog/static/24820311320135257560639/
参考。

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



ORG 0000H
LJMP MAIN
ORG 0003H
LJMP ZHD
ORG 1000H
MAIN:MOV R0,#60
MOV R1,#3
MOV R2,#100
CLR IT0
SETB EX0
SETB EA
MAIN0:MOV P2,#00H ;---------------------南北止,东西通 --------------------
SETB P2.2
SETB P2.7
LCALL LED ;----------------调用显示程序-------------------
MOV R0,#60
LJMP MAIN1
MAIN1:MOV P2,#00H ;---------------南北止,东西警告 ----------------
MOV P1 ,#00H
SETB P2.2
SETB P2.6
LCALL DELL1;--------------延时一秒---------
MOV P2,#00H
SETB P2.2
LCALL DELL1
DJNZ R1, MAIN1
MOV R1, #3
LJMP MAIN2
MAIN2:MOV P2,#00H;-------------------- 南北通,东西止-------------
SETB P2.4
SETB P2.5
LCALL LED ;------------------调用显示程序 ------------------
LJMP MAIN3
MAIN3:MOV P2,#00H;---------------- 南北警告,东西止 -------------
MOV P1, #0
SETB P2.3
SETB P2.5
LCALL DELL1
MOV P2,#00H
SETB P2.5
LCALL DELL1
DJNZ R1, MAIN3
lJMP MAIN
DELL1:
DELAY:MOV R7,#10
DEL3: MOV R6,#100
DEL2:MOV R5,#125
DEL1:NOP
NOP
DJNZ R5,DEL1
DJNZ R6,DEL2
DJNZ R7,DEL3
RET
LED: MOV A,R0 ;------------------显示子程序(坼字程序)-----------------------
MOV B,#10
DIV AB
LCALL DISPLAY1
MOV A,B
LCALL DISPLAY2
DJNZ R2, LED
MOV R2,#100
DJNZ R0, LED
RET
DISPLAY1: ;------------------十位显示程序---------------
MOV DPTR, #SGTR
MOVC A, @A+DPTR
SETB P1.7
CLR P2.1
MOV P1, A
LCALL YAN
RET
DISPLAY2: MOV DPTR, #SGTR;----------------个位显示程序------------------
MOVC A, @A+DPTR
CLR P1.7
SETB P2.1
MOV P1, A
LCALL YAN
RET
YAN:
DELAY1: MOV R4,#20 ;----------延时5ms-----------
LOOP: MOV R3,#125
NOP
LOOP1: DJNZ R3,LOOP1
DJNZ R4,LOOP
RET
ZHD: PUSH P2 ;-----------中断子程序---------
MOV P2,#00H
SETB P2.2
SETB P2.5
POP P2
RETI
SGTR: DB 3FH,06H,5BH,4FH,66H,6DH,7DH
DB 07H,7FH,6FH,77H,7CH,39H,5EH
END

建议你去东哥单片机学习网看看,那里有程序和电路


虹口区13514575663: 交通灯AT89s51单片机的电路怎么设置?
郗功申捷: 搜索“51单片机最小系统电路”,参考最小系统原理图,只要接上晶振,谐振电容,EA端的配置,这个系统就是最小系统,可以工作了.下载程序用的东西,我推荐用USBASP,我可以提供,但是快递费和工本费自理.配详细使用说明.腾讯:两五两八四九两三两

虹口区13514575663: 最简单的单片机制作交通灯需要的元器件 -
郗功申捷: 89S5111.0592M 晶振1K电阻 、10UF电容12个灯,红、黄、绿各四个,12个1K电阻 ,十字路口嘛.蜂鸣器一个.按键一个,按键复位 采用AT89s51型号的单片机,由于交通十字路口的对称性,所以一个引脚可以同时控制两个灯,将发光二极管分别接到P1各个引脚,在其中加入一个时振荡当电路,来控制时间,在P3.0引脚接入蜂鸣器只黄灯亮的时候发出声响,这里我们让每次黄灯亮的时候发出六声响,通过C程序的控制就可以实现,每次循环是10秒.

虹口区13514575663: 用51单片机做交通信号灯 -
郗功申捷: 有以下可能的原因:1、51单片机高电平驱动能力较小,建议低电平点亮,也就是说二极管接正.2、启动电路(第9脚)有没有接到一个阻容电路上?99脚悬空,程序可能乱跑的.

虹口区13514575663: 急急急,急求用keil c软件编写AT89S51单片机交通灯的程序,哪位单片机高手帮帮忙啦?
郗功申捷: 程序二: 蒙脱土0000h ljmp主要 主要: 等待: lcall ScanKey ;扫描键盘 捷迅等待;无键则等待; 传送一个,的R4 传送dptr ,# Discode movc一个, @

虹口区13514575663: 如何运用51单片机设计一个交通灯系统 -
郗功申捷: 运用定时器,数码管LED和8255A设计一个交通灯控制系统! 1.南北绿灯,东西红灯,20秒 2.南北转黄灯,东西红灯,5秒 3.南北红灯,东西绿灯,20秒 4.南北红灯,东西转黄灯,5秒 5.循环步骤1

虹口区13514575663: 基于51单片机控制交通灯的电路图与C语言程序 -
郗功申捷: #include <reg51.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned int uchar h; uint r=0; uint s; uchar code dis[]={ 0Xc0,0Xf9, 0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff,};/*0*//*1*//*2*//*3*//*4*//*5*//*6*//*7*//*8*//*9*//*...

虹口区13514575663: 单片机简单交通灯怎么编程?? -
郗功申捷: 红、黄、绿. 用LED来显示. 有专门的控制系统, 细节不说了. 编程就是 if (red) // 如果是红灯 yellow = false; green = false; else if (yellow) // 如果是黄灯 green = true; car_crash = true; sleep(3); // 3秒 red = true; green = false; else // 绿灯 yellow = false; red = false; 这里可以把false理解为“不亮灯”或者熄灭状态, 而true就是亮灯状态, car_crash作为一个模拟说明还可以运行.

虹口区13514575663: 用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序? -
郗功申捷: 有2种方法:1.用继电器控制,2.把板子的地接在单片机的某一个I/O口上.只要对某个I/O口操作就行了,相信你会吧

虹口区13514575663: 求一段51单片机交通灯程序:1.东西红南北绿时间15s 2.东西黄灯闪烁5s 以上2段+上延时与计时器 -
郗功申捷: RED_NS EQU P1.0 GREEN_NS EQU P1.1 YELLOW_NS EQU P1.2 RED_EW EQU P1.3 GREEN_EW EQU P1.4 YELLOW_EW EQU P1.5 FLASH_NS BIT 00H FLASH_EW BIT 01H TIME EQU 30H TICK EQU 31H;--------------------------------- ORG ...

虹口区13514575663: 运用51单片机设计一个交通灯系统,急求!运用定时器,数码管LED和8255A设计一个交通灯控制系统! -
郗功申捷: /************************************* 程序名称:红绿灯学习 功能描述:简易十字路口信号控制 作都名称:CYB 创建时间:2009/07/26*************************************/#include <reg51.h>#define FX_Time 4 //放行时间#define JG_Time 1 //警告时间 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网