导航:首页 > 操作系统 > 51单片机交通灯模型

51单片机交通灯模型

发布时间:2022-10-30 19:49:41

1. c51单片机控制交通灯要求用汇编语言

// 51单片机控制交通灯要求用汇编语言,仿真实例,可以参考一下

SNF EQU 00H ; 南北通行标志位

EWF EQU 01H ; 东西通行标志位

URF EQU 02H ; 紧急事件标志位

ORG 0000H

LJMP MAIN ; 上电转主程序

ORG 000BH ; 定时中断入口

LJMP DSZD

ORG 0003H ; 紧急中断入口

LJMP URZD

ORG 0030H

MAIN: LCALL INIT ; 调用初始化子程序

LOOP: LCALL DIS ; 循环执行显示子程序

AJMP LOOP

; *** *** *** 初始化程序

INIT: SETB SNF

SETB EWF

SETB URF

MOV R2,#20 ; 定时器中断20次为1s

MOV TMOD,#01H ; 初始化定时器

MOV TL0,#0B0H

MOV TH0,#3CH

SETB EA ; 开定时中断与紧急中断

SETB ET0

SETB TR0

SETB EX0

SETB IT0 ; 设置中断程控方式

MOV DPTR,#TAB ; 数值首地址放入DPTR中

MOV 40H,#40 ; 东南西北通行时间设置

MOV 41H,#40

MOV 30H,#40 ; 通行时间初始化

MOV 31H,#60

MOV P0,#4CH ; 初始化时南北通行并把交通灯状态分别放在32H和33H中

MOV 32H,#4CH

MOV P2,#15H

MOV 33H,#15H

RET

; *** *** *** 显示子程序

DIS: MOV P3,#0DFH ; 选中南北方向的十位数码管

MOV A,30H ; 把显示数据送人数码管显示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A ;

LCALL D1MS

MOV P3,#0EFH ; 选中南北方向的个位数码管

MOV A,B ; 送入数码管显示

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#7FH ; 选中第东西方向的十位数码管

MOV A,31H ; 送入数码管显示

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

MOV P3,#0BFH ; 选中第东西方向的个位数码管

MOV A,B

MOVC A,@A+DPTR

MOV P1,A

LCALL D1MS

SETB P3.0

SETB P3.1

JNB P3.0,DIS_S ; 查询是否第一个按键按下

JNB P3.1,DIS_E ; 查询是否第二个按键按下

AJMP DIS_R ; 没有键按下则返回

DIS_S:LCALL D5MS ; 按键去抖

JNB P3.0,DIS_SN

AJMP DIS_R

DIS_SN:MOV 40H,#50 ; 对通行时间从新分配,南北通行时间加长

MOV 41H,#30

AJMP DIS_R

DIS_E:LCALL D5MS ; 按键去抖

JNB P3.1,DIS_EW

AJMP DIS_R

DIS_EW:MOV 40H,#30 ; 东西通行时间加长

MOV 41H,#50

DIS_R:RET

; *** *** *** 定时中断处理程序

DS_C: LJMP DS_R ; 接力跳转

DSZD: PUSH ACC ; 保护现场

PUSH PSW

CLR TR0 ; 关定时器及中断标志位并重新赋值

CLR TF0

MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R2,DS_C ; 判断1m时间是否到达

MOV R2,#20 ; 到达重新赋值

DEC 30H ; 南北方向通行时间减一

MOV A,30H ; 把减一后的时间送入显示存储单元

; *** *** *** 南北通行到达最后4秒时黄灯闪烁

DS_10:CJNE A,#4,DS_11 ; 如果通行时间剩余4秒

JNB SNF,DS_11 ; 判断是否是南北通行

MOV P0,#8AH

MOV 32H, #8AH ; 把交通灯状态存入存储单元(后面类似)

DS_11:CJNE A,#3,DS_12 ; 不是剩余3秒,返回

JNB SNF,DS_12 ; 不是南北通行时间,返回

MOV P0,#88H

MOV 32H, #88H

DS_12:CJNE A,#2,DS_13

JNB SNF,DS_13

MOV P0,#8AH

MOV 32H, #8AH

DS_13:CJNE A,#1,DS_14

JNB SNF,DS_14

MOV P0,#88H

MOV 32H, #88H

; *** *** ***

DS_14:JNZ DS_NE ; 通行时间没有结束转向改变东西方向的数码管

CPL SNF ; 如果通行时间结束则对标志位取反

JNB SNF,DS_1 ; 判断是否南北通行

MOV 30H,40H ; 是,点亮相应的交通灯

MOV P0,#4CH

MOV 32H,#4CH ; 存储交通灯状态

MOV P2,#15H

MOV 33H, #15H ; 存储交通灯状态

DS_NE:DEC 31H ; 东西方向通行时间减一

MOV A,31H ; 把通行剩余时间送入显示存储单元

; *** *** *** 东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)

DS_20:CJNE A,#4,DS_21

JB EWF,DS_21

MOV P0,#51H

MOV 32H, #51H

DS_21:CJNE A,#3,DS_22

JB EWF,DS_22

MOV P0,#41H

MOV 32H, #41H

DS_22:CJNE A,#2,DS_23

JB EWF,DS_23

MOV P0,#51H

MOV 32H, #51H

DS_23:CJNE A,#1,DS_24

JB EWF,DS_24

MOV P0,#41H

MOV 32H, #41H

; *** *** ***

DS_24:JNZ DS_R ; 东西方向时间没有结束,返回

CPL EWF ; 对通行状态取反

JNB EWF,DS_2 ; 东西方向通行时间到来,跳转

MOV 31H,#80 ; 东西方向通行结束,重新显示时间

MOV P0,#89H ; 点亮相应的交通灯

MOV 32H, #89H

MOV P2,#29H

MOV 33H, #29H

AJMP DS_R

DS_1: MOV 30H,#80 ; 南北通行时间结束,重新对显示存储单元赋值

MOV P0,#89H ; 执行转弯状态1

MOV 32H, #89H

MOV P2,#26H

MOV 33H, #26H

AJMP DS_NE

DS_2: MOV 31H,41H ; 东西方向开始通行,赋值予显示存储单元

MOV P0,#61H ; 点亮相应的交通灯

MOV 32H, #61H

MOV P2,#15H

MOV 33H, #15H

DS_R: SETB TR0

POP PSW ; 恢复现场

POP ACC

RETI

; *** *** *** 紧急中断处理程序

URZD: PUSH ACC ; 保护现场

PUSH PSW

CLR IE0 ; 清除中断标志位

CLR TR0 ; 关定时器

CPL URF ; 紧急事件标志位

JB URF,UR_CON ; 紧急结束;跳转

MOV P0,#49H ; 各路口灯全显示红灯亮

MOV P2,#15H

AJMP UR_R

UR_CON:SETB TR0 ; 恢复正常交通

MOV A,32H

MOV P0,A

MOV A,33H

MOV P2,A

UR_R: POP PSW ; 恢复现场

POP ACC

RETI

; *** *** *** 查表指令0,1,2,3,4,5,6,7,8,9

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

DB 7DH, 07H, 7FH, 6FH

; *** *** *** 延时5ms与1ms

D5MS: MOV R7,#5

D1MS: MOV R7,#10

MOV R6,#50

L1: DJNZ R6,$

DJNZ R7,L1

RET

2. 51单片机C语言程序:交通灯系统

这种问题一般没人会的,像 CSDN、程序员网 等等有类似的设计,你可以去看看

3. 如何运用51单片机设计一个交通灯系统

运用定时器,数码管LED和8255A设计一个交通灯控制系统! 1.南北绿灯,东西红灯,20秒 2.南北转黄灯,东西红灯,5秒 3.南北红灯,东西绿灯,20秒 4.南北红灯,东西转黄灯,5秒 5.循环步骤1

4. 基于51单片机的交通灯控制设计

这个设计完了 可以在proteus下仿真的啊

可以交流

5. 51单片机 汇编语言设计交通灯

你用两个数码管显示时间,数码管看起来不闪,建议你做一个10ms定时器,10ms一到就切换显示,100次就秒计时器+1(显示要减1),闪烁就是有500ms送0xFFFF(或0x0000,看硬件电路)数码管就灭,500ms送数据显示,没一秒到时都要计数并判断状态改变哦

6. 利用MCS-51单片机控制交通灯。 要求:1.当南北,东西道均有车时轮流放行。各放行10秒,转换时

你要仿真

还是实物?

我做单片机开发的

7. 51单片机交通灯设计,求程序和仿真图

手动模式:当东西向(或南北向)有特殊情况,可用开关K1(或K2)使东西向绿灯、南北向红灯(南北向绿灯、东西向红灯)。

8. 基于51单片机控制交通灯的电路图与C语言程序

思路:

红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换。四个方向各有一个红、黄、绿显示和两个数码管。

东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。

三、硬件电路设计

此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。因此,可加输出锁存器。在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。

四、软件程序(C语言)

以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。

//*****************************//

//程序名:十字路口交通灯控制

//编写人:黄庭剑

//初写时间:2009年1月2日

//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.

//CPU说明:AT89C51型单片机;24MHZ晶体振荡器

//完成时间:2009年1月6日

//*****************************//

#include<stdio.h>

#include<reg51.h>

#include<intrins.h>

sfrp0=0x80;

sfrp1=0x90;

sfrp2=0xA0;

sfrp3=0xb0;//这部分内容其实在“#include<reg51.h>”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。其实两者是一样的。

sbitsw=p0^0;

sbitOE=P0^6;

sbitLE=P0^7;//74LS373锁存器控制端定义

chardisplay[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};//p1口的数码管时间显示调用,利用74L74BCD码,8位驱动输出;

//函数声明begin

voiddelay1(intcount);

voiddelay_long(intnumber1,intnumber2);

voidpeople_car_drive();

//函数声明end

//***********************//延时子程序

voiddelay1(intcount)

{inti;

for(i=count;i>0;i--)

{;}

}

voiddelay_long(intnumber1,intnumber2)

{

inta,b;

for(a=number1;a>0;a--)

{

for(b=number2;b>0;b--)

{_nop_();}

}

}

//**********************//延时子程序

voidpeople_car_drive()

{

intp_1=2,i,j=9,p_2=6;//****************//行人通行时,延时20秒

p2=0x09;//南北红灯亮

p3=0x24;//东西绿灯亮

while(p_1-->0)

{LE=1;

OE=0;

if(p_1==0){OE=1;}//当十位数减到0时,只显示个位数

p1=display[p_1];

delay1(1000);

LE=0;

j=9;

for(i=10;i>0;i--)

{

if(p_1==0&&j==3)break;//减到3时退出循环,让其黄灯闪烁显示

p1=display[j--];

delay_long(16000,2);

if(sw==1)return;

}

}

//*******************************************************************************//

p2=0x12;//南北黄灯闪烁三秒,以提醒行人注意

p3=0x12;

p1=display[3];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);

p2=0x12;

p3=0x12;

p1=display[2];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);

p2=0x12;

p3=0x12;

p1=display[1];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);

//*****************以下是车辆通行时延时60秒//

p2=0x24;//南北绿灯亮

p3=0x09;//东西红灯亮

while(p_2-->0)

{LE=1;

OE=0;

if(p_2==0){OE=1;}//当十位数减到0时,只显示个位数

p1=display[p_2];

delay1(1000);

LE=0;

j=9;

for(i=10;i>0;i--)

{

if(p_2==0&&j==3)break;//减到2时退出循环

p1=display[j--];

delay_long(16000,2);

if(sw==1)return;

}

}

p2=0x12;//南北黄灯闪烁三秒,以提醒行人注意

p3=0x12;

p1=display[3];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);

p2=0x12;

p3=0x12;

p1=display[2];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);

p2=0x12;

p3=0x12;

p1=display[1];

delay_long(8000,1);

p2=0x00;

p3=0x00;

delay_long(14000,1);//南北黄灯闪烁三秒完毕

}

voidmain()//主函数入口处

{

p0=0x01;

p1=0x00;

p2=0x00;

p3=0x00;//初始化各端口

{while(1)

{

if(sw==0)

{people_car_drive();}

else

{

p2=0x00;

p3=0x00;//关闭所有交通灯

}

}

}

}

详情访问:http://hi..com/hjiannew/

9. 单片机中十字路口交通信号灯的过程,内容,原理

基于单片机的十字路口交通灯设计

摘要:知道了交通灯的重要性,而对于交通灯最重要的是单片机。跟随单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机通常作为一个核心部件来使用,仅凭对单片机简单了解是不够的,应该根据具体硬件结构并且软硬件结合,实现自己想要达到的目的。单片机自问世以来,性能不断提高和完善,所以实用许多场合。单片机具有集成度高、功能多、速度快、体积小、功耗低、使用方便、性能可靠、价格便宜,其易于产品化、抗干扰能力强、可以在恶劣的情况下坚持工作。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。 考虑到单片机具有物美价廉、灵活方便、还有各种优秀的特点,所以我们从中选择用MCS-51系列单片机AT89C51单片机来实现十字路口交通信号灯的控制。单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件部分主要由键盘、显示和运算部分组成,再根据实际车流量通过8051芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。

关键词:单片机、MCS-51系列单片机AT89C51、交通灯

10. 51单片机交通灯电路图与程序

网络文档里我已经上传,你可以去下载http://wenku..com/view/16a276c66137ee06eff918a8.html

阅读全文

与51单片机交通灯模型相关的资料

热点内容
电脑盘文件夹如何平铺 浏览:267
相机卡满了没文件夹 浏览:749
如何批量快速压缩视频 浏览:432
我的世界如何加入ice服务器 浏览:873
兄弟cnc编程说明书 浏览:204
php闪电入门教程学习 浏览:152
金岳霖逻辑pdf 浏览:938
linuxtomcat线程 浏览:77
pboc长度加数据加密 浏览:187
英雄联盟国际服手游怎么下安卓 浏览:297
程序员的思路 浏览:234
只能用命令获得的四种方块 浏览:358
怎么用命令方块防止开创造 浏览:807
扫描版的pdf 浏览:790
编程猫怎样做3d游戏 浏览:207
怎么查找云服务器上的ftp 浏览:156
我的世界服务器如何注册账号 浏览:935
统计英文字符python 浏览:424
linux信息安全 浏览:910
压缩机接线柱爆 浏览:1001