交通灯的单片机设计

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-28
用单片机设计交通灯怎么做啊?

你们实验箱是什么样的?可以将LED连接到单片机的任意I/O口吗?如果可以的话给你一个例子电路图如下程序如下:#include #define RED 0#define YELLOW 1#define GREEN 2sbit P2_0 = P2^0;sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4;sbit P2_5 = P2^5;#define E2W_LED_RED_ON P2_3 = 0 //东西方向红灯亮#define E2W_LED_RED_OFF P2_3 = 1#define E2W_LED_YELLOW_ON P2_4 = 0#define E2W_LED_YELLOW_OFF P2_4 = 1#define E2W_LED_GREEN_ON P2_5 = 0#define E2W_LED_GREEN_OFF P2_5 = 1#define S2N_LED_RED_ON P2_0 = 0 //南北方向红灯亮#define S2N_LED_RED_OFF P2_0 = 1#define S2N_LED_YELLOW_ON P2_1 = 0#define S2N_LED_YELLOW_OFF P2_1 = 1#define S2N_LED_GREEN_ON P2_2 = 0#define S2N_LED_GREEN_OFF P2_2 = 1unsigned char Status_E2W; //东西方向的交通灯状态unsigned char Status_S2N; //南北方向的交通灯状态unsigned int T10sCnt=0;unsigned int T3sCnt=0;void InitTimer1(void) //定时器1定时50ms{ TMOD = 0x10; TH1 = 0x3C; TL1 = 0xB0; EA = 1; ET1 = 1; TR1 = 1;}void main(){ Status_E2W = GREEN; Status_S2N = RED; E2W_LED_GREEN_ON; S2N_LED_RED_ON; InitTimer1(); while(1) { } }void Timer1Interrupt(void) interrupt 3{ TH1 = 0x3C; TL1 = 0xB0;if(Status_E2W == GREEN){ if(++T10sCnt >= 200)//10s时间到 { T10sCnt = 0; Status_E2W = YELLOW; //东西方向变为黄灯状态 E2W_LED_GREEN_OFF;//东西方向绿灯关 E2W_LED_YELLOW_ON;//东西方向黄灯亮 S2N_LED_RED_OFF;//南北方向红灯关 S2N_LED_YELLOW_ON;//南北方向黄灯亮 }}else if(Status_E2W == YELLOW){ if(++T3sCnt >= 60) //3s时间到 { T3sCnt = 0; Status_E2W = RED;//东西方向变为红灯状态 Status_S2N = GREEN;//南北方向 变为绿灯状态 E2W_LED_YELLOW_OFF; //东西方向黄灯关 E2W_LED_RED_ON;//东西方向绿灯亮 S2N_LED_YELLOW_OFF;//南北方向黄灯关 S2N_LED_GREEN_ON;//南北方向绿灯亮 }}else if(Status_S2N == GREEN){ if(++T10sCnt >= 200)//10s时间到 { T10sCnt = 0; Status_S2N = YELLOW; //南北方向变为黄灯状态 S2N_LED_GREEN_OFF;//南北方向绿灯关 S2N_LED_YELLOW_ON; //南北方向黄灯亮 E2W_LED_RED_OFF;//东西方向红灯关 E2W_LED_YELLOW_ON;//东西方向黄灯亮 }}else if(Status_S2N == YELLOW){ if(++T3sCnt >= 60) //3s时间到 { T3sCnt = 0; Status_S2N = RED;//南北方向变为红灯状态 Status_E2W = GREEN; //东西方向变为绿灯状态 S2N_LED_YELLOW_OFF; //南北方向黄灯关 S2N_LED_RED_ON; //南北方向红灯亮 E2W_LED_GREEN_ON; //东西方向绿灯亮 E2W_LED_YELLOW_OFF; //东西方向黄灯关 }}}

可以做到,也不难做

哥们啊 你是不是做毕业设计啊,那还不自己好好做啊,这个作出来很有用啊,这个既不需要扩展口,真的很简单啊,好好做吧,给你个图看看吧,基本上就是这个电路就行了啊

程序也很简单,用定时器就好了啊,中断也用的到,加油啦,支持你,Myfriends!!!(这个图中用了8个LED,做交通灯再加上4个就行了,口也够)



查看文章
【单片机课程设计_交通灯设计报告单片机课程设计(图文教程)】2009年05月09日 星期六 14:01【单片机课程设计_交通灯设计报告单片机课程设计(图文教程)】

单片机课程设计_直流风扇电机转速测量与PWM控制
单片机课程设计_秒表的设计
单片机课程设计_交通灯设计报告
C51单片机毕业设计
基于单片机的多路数据采集系统
单片机课程设计_报警器程序

单片机课程设计_交通灯设计报告
2007-11-10 12:36
单片机课程设计_交通灯设计报告

交通灯控制系统设计
摘要:本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
关键词:AT89S51,交通规则
一、 方案比较、设计与论证
1 电源提供方案
为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案

方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案。
2 显示界面方案
该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案:
方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。
方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:采用数码管与点阵LED 相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
3 输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:
方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是:
使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。
方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。
二、理论分析与计算
1.交通灯显示时序的理论分析与计算
对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。

先设定一些标号如图2-1 所示。

说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为西
路口灯。
图2-2 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四
的状态为一个周期,循环执行(见图2-3)。

请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在
一定的时间内达到较大的车流量,效率特别高。
依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于相向的灯的状态图
是一样的,所以只需写出相邻路口的灯的逻辑表;根据图2-3 可以看出,相邻路口的灯它
们的状态在相位上相差180°。因此最终只需写出一组S1、S2、S3、S4的逻辑状态表。

如表2-1 所示。

表中的“×”代表是红灯亮(也代表逻辑上的0),“√”是代表绿灯亮(也代表逻辑上
的1),依上表,就可以向相应的端口送逻辑值。

2.交通灯显示时间的理论分析与计算

东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且
S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示。
T-S1+T-S2=T-S3
T-S2=T-S4
T-S1=T-S3
我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分

为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以此为参
考。
三、电路图及设计文件
1.灯控制电路设计
由于32个LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不
能实现,所以本次设计中采用一种新型的电路如图3-1 所示。

图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要
求,而且发光管也能达到足够的亮度。
观察图可以看出:两组发光管(一组红、一组绿)由于反相器的作用,其逻辑状态恰恰
相反。
图中和电阻串联的二极管的作用是为了分压,防止因上下两组发光管分压不同导致逻辑
的错误。
共四组和上述相同的电路分别代表东西南北四个方向的红绿灯,使用两片74LS04 作为
驱动。
2.倒计时显示电路设计
前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管
作为倒计时的显示;同时为了节省口资源,采用串口显示的方式驱动数码管。见图3-2 所
示。

四、程序设计思路与流程图
1.主程序流程图
主程序中主要是一个死循环,不停的循环四个状态,如图4-1 所示。

2.按键子程序流程图
它包含倒计时调整和紧急状态两个状态。
主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子
程序处理。当检测到K2键按下的时候就自动返回到主程序。
当出现紧急的情况的时候,按下K3或者K4 就切换到紧急状态,当紧急事件处理完毕
的时候,按下K2,就可以返回正常状态。

五、测试、数据及结果分析
1.状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和K2分别给端口送高电平和
低电平,通电即可检测。
2.数码管的测试
将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。
3.整体电路测试
系统上电,刷写好程序即可开始测试,观测一个周期(共计S1~S4四个状态,默认140
秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。
六、总结
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,
而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅
速,红绿灯规则不效率还不是很高等等,这需要在实践中进一步完善。
参考文献
[1] 李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,1998
[2] 李广弟.单片机基础.北京:北京航空航天大学出版社,1992
[3] 何立民.单片机应用技术大全.北京:北京航空航天大学出版社, 1994
[4] 张毅刚. 单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990
[5] 谭浩强.单片机课程设计. 北京:清华大学出版社,1989
Abstract
This system is made up of single-chip microcomputer ,keyboard,lcd displaying module
and Traffic lights system.The system includes pavement,left truning,right truning,and the basic
traffic lights function.Excepting the basic traffic lights function,italso includes couting,time
installing,emergency disposaling,speech cluing,lcd information displaying,adjusting the lighting
time of lights based on different time and controlling with hand in accordance with circumstances
and so on

不就是控制灯的亮跟灭嘛简单得要死

/*
1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要程序和倒计时一样
2、硬件要求:数码管、晶振12M
*/
#include <reg52.h>

bit red,green,yellow,turnred;

code unsigned char tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//共阴数码管 0-9

unsigned char Dis_Shiwei;//定义十位
unsigned char Dis_Gewei; //定义个位
void delay(unsigned int cnt)
{
while(--cnt);
}

main()
{

TMOD |=0x01;//定时器设置 10ms in 12M crystal
TH0=0xd8;
TL0=0xf0;
IE= 0x82; //打开中断
TR0=1;

P1=0xfc;//红灯亮
red =1;
while(1)
{
P0=Dis_Shiwei;//显示十位
P2=0;
delay(300);//短暂延时
P0=Dis_Gewei; //显示个位
P2=1;
delay(300);
}

}
/********************************/
/* 定时中断 */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char second=60,count; //初值99

TH0=0xd8;//重新赋值
TL0=0xf0;
count++;
if (count==100)
{
count=0;
second--;//秒减1
if(second==0)
{ //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序
if(red)
{
red=0;yellow=1;
second=5;
P1=0xF3;//黄灯亮5秒
}
else if(yellow && !turnred)
{
yellow=0;green=1;
second=25;
P1=0xCF;//绿灯亮25秒
}
else if(green)
{
yellow=1;green=0;
second=5;
P1=0xF3;//黄灯亮5秒
turnred=1;
}
else if(yellow && turnred)
{
red=1;yellow=0;
P1=0xFC;//红灯亮30秒
second=30;
turnred=0;
}

}
Dis_Shiwei=tab[second/10];//十位显示值处理
Dis_Gewei=tab[second%10]; //个位显示处理

}
}

这个设计我倒是做过,就是没做板子。不知道楼上给你的资料,你够了没?
不够可以给我发邮件,
huazai1105@126.com

  • 80c51单片机交通灯程序
    答:ORG 1000H L:JNB P3.0,LP3 JNB P3.1,LP2 ;判断p3.1,p3.0口 ;如果P3.0为1的话,正常运行交通灯 ;如果P3.1为1的话,正常运行交通灯 ;如果P3.1为0的话,依次点亮灯 ;如果P3.0为0的话,停止交通灯,只有黄灯闪烁 ;正常运行交通灯 LP1:MOV P1,#61H CLR P3.2 CLR P3....
  • 跪求51单片机交通灯编程 请帮下谢谢
    答://南北红灯sbit dx_red=P2^3;//东西红灯sbit dx_lv=P2^4;//东西绿灯sbit nb_lv=P2^5;//南北绿灯sbit dx_h=P2^6;//东西黄灯sbit nb_h=P2^7; //南北黄灯/*sbit nb_red=P0^0;sbit dx_red=P0^7;sbit dx_lv=P0^6;sbit nb_lv=P0^1;sbit dx_h=P0^5;sbit nb_...
  • 用单片机做交通灯,这么做
    答:基于单片机的交通灯设计 时间:2010-12-08 21:43:12 来源: 作者:一、 系统功能要求:1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。时间方向 控制要求 白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯 晚上 东西 黄灯 南北 红灯 2.总体设计方案现在流行的一种设计为两...
  • 单片机控制交通灯论文
    答:要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的科技手段加以实现。本文在对目前交通控制进行深入分析的基础上,运用检测传感、实时调整智能化控制的实现技术,将传感器监测、实时调整车辆通行时间的算法与单片机控制作用相结合,提出了基于单片机的交通控制系统设计方案。8051单片机的交通灯...
  • 单片机交通灯的汇编程序
    答: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 ;东西路...
  • 单片机编程 交通灯的控制(求wave软件的程序源程序*.asm)
    答:五、设计说明 1. 因为本设计是交通灯控制设计,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯,然后转状态l南北绿灯通车,东西红灯;过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时3秒,东西仍然红灯;再转状态3,东西绿灯通车,南北红灯;过一...
  • 如何用单片机制作交通灯
    答:LED模拟交通灯 本例中的12只LED分成东西向和南北向两组,各组指示灯均有相向的2只红色、2只黄色与2只绿色的LED,本例中对应的LED单独进行定义,程序运行时模拟了十字路口交通信号灯得切换过程与显示效果。本例电路如下图:(呵呵 图片插入不进来)程序设计调试与实训:源程序中用6行sbit对东西和南北向...
  • 设计一个以单片机为核心的交通灯控制器。 要求红黄绿灯,各自闪烁时间...
    答:实验内容:用并口实现模拟交通灯;要求:东西向的绿灯亮,接着该方向的黄灯闪烁5次,然后红灯亮;同时南北向的绿灯亮,接着该方向的黄灯闪烁5次,然后红灯亮;如此重复。转向灯可以不需要。include<reg51.h> sbit r1=P2^0;sbit y1=P2^1;sbit g1=P2^2;sbit r2=P2^3;sbit y2=P2^4;sbit g...
  • 模拟交通灯单片机控制系统设计
    答:/*--- 程序名称:十字路口交通灯控制程序 CPU:51单片机 功能:实现十字路口四组交通灯的控制,带时间显 示、紧急情况控制和恢复正常工作控制 ---*/ include<reg52.h> unsigned int i,j,shi,flag,ge,ew=25,sn=45,wait1=3,wait2=3;sbit duan=P2^6; //数码管段选通(第一个74HC573选...
  • 求助一个单片机设计的交通灯程序,用C语言编写。
    答:include <reg52.h> define uint unsigned int sbit red1=P1^2;sbit yel1=P1^1;sbit gre1=P1^7;sbit red2=P1^4;sbit yel2=P1^5;sbit gre2=P1^6;//假设灯亮为低电平 sbit key1=P0^2;sbit key2=P0^3;uint tt;void delay(uint z){ uchar x;while(z--)for(x=110;x>0;x-...