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

51单片机交通灯设计

发布时间:2022-01-22 15:16:43

1. 基于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/

2. 基于单片机的交通灯系统设计 论文

这些方向都可以些,但是plc也可以
你觉得如

3. 如何用单片机AT89S51设计交通灯

这个完整的暂时没有,不过思路可以介绍一下:

主程序主要就是处理哪个灯亮
子程序主要就是显示。灯和数码管

系统图 就是一个芯片加几个线很简单的,如果有深度要求可以探讨

4. 基于89C51单片机的交通灯设计报告

可能不是很符合你的要求,看一看能不能用。

功能:红灯10秒,黄灯2秒。照着你的要求改一改。

看不清的话,留下邮箱,发给你。

#include"reg51.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitla=P2^1;

sbitwela=P2^2;

sbitp1_0=P1^0;

ucharcodedat[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

ucharcodetem[]={0x01,0x02,0x04,0x08,0x10,0x20};

uinti;

ucharnum,st;

voiddelay(uint);

voidinit();

voidmain()

{

init();

la=1;

P0=0xc0;

la=0;

while(1)

{

if(i==1000)

{

i=0;

num++;

if(st==0)

{

if(num==10)

{

num=0;

st=1;

P2=0x40;

}

}

if(st==1)

{

if(num==2)

{

num=0;

st=2;

P2=0x30;

}

}

if(st==2)

{

if(num==10)

{

num=0;

st=3;

P2=0x40;

}

}

if(st==3)

{

if(num==2)

{

num=0;

st=0;

P2=0x88;

}

}

la=1;

P0=dat[num];

la=0;

delay(5);

}

}

}

//程序初始化

voidinit()

{

EA=1;//开总中断允许

EX0=1;//外部中断0允许

IT0=0;//外部中断0为低电平触发方式

TMOD=0X01;//设定T0为16位定时器

ET0=1;//定时器T0中断允许

TR0=1;//启动定时器T0

TH0=0XFC;

TL0=0X66;

i=0;

num=0;

st=0;

p1_0=1;

wela=1;

P0=0x01;

wela=0;

P0=0xff;

P2=0x88;

}

//延时约为Z毫秒

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=113;y>0;y--);

}

//外部中断0

voidint0()interrupt0

{

P2=0x28;

st=0;

i=0;

num=0;

la=1;

P0=0xc0;

la=0;

delay(10);

P2=0x88;

}

//定时器T0精确1ms

voidtimer0()interrupt1

{

TH0=0XFC;

TL0=0X66;

i++;

}

5. 基于51单片机的红绿灯设计

ORG 0000H
MOV DPTR ,#0B00H ;选中8155的命令寄存器,P2.2接CE端,p2.1接I/O
MOV A,#01H ;命令寄存器设为01H=000000001B D0=1A口输出,D1=0B口输入
MOVX @DPTR,A
LOOP :MOV DPTR,#0B01H
LED0:MOV A,#0FFH ;第一组灯点亮
MOVX @DPTR,A
MOV R4,#09H
LOOP0:ACALL DELAY
DJNZ R4,LOOP0
MOV A,#11011110B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
LED1:ACALL DELAY ;第二组灯点亮
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY

LED2:MOV R5,#09H ;第三组灯点亮
LOOP1:ACALL DELAY
DJNZ R5,LOOP1
MOV A,#11110011B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP LOOP
DELAY:MOV R3,#02H
LOP3:MOV R1,#85H
LOP1:MOV R2,#0FAH
LOP2:DJNZ R2,LOP2
DJNZ R1,LOP1
DJNZ R3,LOP3
RET
END

6. 基于89s51单片机的交通灯控制设计的汇编程

没办法,我只有一个C的,刚开始学单片机的时候,一直用的汇编,后来,转学C了,觉得C要方便很多。网上应该都有啊,很多例子的呀

这样吧,如果你需要,给我一个邮箱,我可以发到你邮箱,你可以参考参考,语言只是一种方式,最关键是思路和算法

7. 我准备用51单片机做交通灯设计选择哪个单片机合适,而且需要做实物哪个更方便那

用ATMEGA8吧,免费的IDE,GCC编译器!网上先去买个最小ATMEGA8系统,让后改改,搞一搞就行了。

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

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

9. 用单片机AT89C51设计一个交通灯系统

交通灯 有 C 语言,有汇编
发了

阅读全文

与51单片机交通灯设计相关的资料

热点内容
linuxc编程高级 浏览:725
python解码vip视频 浏览:585
丑陋的中国人pdf 浏览:717
我的世界如何在服务器里面装模组 浏览:622
javaweb进销存源码下载 浏览:555
单片机遥控门铃设计图解 浏览:322
闪送app怎么更改照片 浏览:158
公司的程序员开始忙了 浏览:504
统信系统命令行如何输汉字 浏览:279
java随机取数组 浏览:477
服务器匆忙什么意思 浏览:780
windows下载文件命令 浏览:101
绍兴加密防伪技术 浏览:54
linux清除缓存的命令 浏览:779
梁柱连接处梁的加密箍筋 浏览:103
安卓录屏大师如何弹出 浏览:658
cad命令详解 浏览:173
品牌云服务器提供商 浏览:326
加密投资者的心理 浏览:700
小米无命令 浏览:826