单片机-交通灯程序(C语言)

单片机-交通灯程序(C语言)
单片机-交通灯程序(C语言)

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

* 实验名: 动态显示数码管实验

* 使用的IO :

* 实验效果: 数码管显示76543210。

* 注意:当位选用P1口的时候注意可能会有一位不亮,那么调整J21

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

#include

//--定义使用的IO口--//

#define GPIO_DIG P0

#define GPIO_PLACE P1

#define GPIO_TRAFFIC P2

sbit RED10 = P2^0; //上人行道红灯

sbit GREEN10 = P2^1; //上人行道绿灯

sbit RED11 = P2^2;

sbit YELLOW11= P2^3;

sbit GREEN11 = P2^4;

sbit RED00 = P3^0; //右人行道红灯

sbit GREEN00 = P3^1; //右人行道绿灯

sbit RED01 = P2^5;

sbit YELLOW01= P2^6;

sbit GREEN01 = P2^7;

//--定义全局变量--//

unsigned char code DIG_PLACE[8] = {

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制查表的方法控制

unsigned char code DIG_CODE[17] = {

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码

unsigned char DisplayData[8];

//用来存放要显示的8位数的值

unsigned char Time, Second; //用来存放定时时间

//--声明全局函数--//

void DigDisplay(); //动态显示函数

void Timer0Cofig(void);

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

* 函数名: main

* 函数功能: 主函数

* 输入: 无

* 输出: 无

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

void main(void)

{

Second = 1;

Timer0Cofig();

while(1)

{

if(Second == 70)

{

Second = 1;

}

//--宝田路通行,30秒--//

if(Second < 31)

{

DisplayData[0] = 0x00;

DisplayData[1] = 0x00;

DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10];

DisplayData[3] = DIG_CODE[(30 - Second) %10];

DisplayData[4] = 0x00;

DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];

DisplayData[7] = DisplayData[3];

DigDisplay();

//--宝田路通行--//

GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭

RED00 = 1;

GREEN00 = 1;

GREEN11 = 0; //宝田路绿灯亮

GREEN10 = 0; //宝田路人行道绿灯亮

RED01 = 0; //前进路红灯亮

RED00 = 0; //前进路人行道红灯亮

}

//--黄灯等待切换状态,5秒--//

else if(Second < 36)

{

DisplayData[0] = 0x00;

DisplayData[1] = 0x00;

DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10];

DisplayData[3] = DIG_CODE[(35 - Second) %10];

DisplayData[4] = 0x00;

DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];

DisplayData[7] = DisplayData[3];

DigDisplay();

//--黄灯阶段--//

GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭

RED00 = 1;

GREEN00 = 1;

YELLOW11 = 0; //宝田路黄灯亮

RED10 = 0; //宝田路人行道红灯亮

YELLOW01 = 0; //前进路红灯亮

RED00 = 0; //前进路人行道红灯亮

}

//--前进路通行--//

else if(Second < 66)

{

DisplayData[0] = 0x00;

DisplayData[1] = 0x00;

DisplayData[2] = DIG_CODE[(65 - Second) % 100 / 10];

DisplayData[3] = DIG_CODE[(65 - Second) %10];

DisplayData[4] = 0x00;

DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];

DisplayData[7] = DisplayData[3];

DigDisplay();

//--黄灯阶段--//

GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭

RED00 = 1;

GREEN00 = 1;

RED11 = 0; //宝田路红灯亮

RED10 = 0; //宝田路人行道红灯亮

GREEN01 = 0; //前进路绿灯亮

GREEN00 = 0; //前进路人行道绿灯亮

}

//--黄灯等待切换状态,5秒--//

else

{

DisplayData[0] = 0x00;

DisplayData[1] = 0x00;

DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];

DisplayData[3] = DIG_CODE[(70 - Second) %10];

DisplayData[4] = 0x00;

DisplayData[5] = 0x00;

DisplayData[6] = DisplayData[2];

DisplayData[7] = DisplayData[3];

DigDisplay();

//--黄灯阶段--//

GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭

RED00 = 1;

GREEN00 = 1;

YELLOW11 = 0; //宝田路黄灯亮

RED10 = 0; //宝田路人行道红灯亮

YELLOW01 = 0; //前进路红灯亮

RED00 = 0; //前进路人行道红灯亮

}

}

}

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

* 函数名: DigDisplay

* 输入: 无

* 输出: 无

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

void DigDisplay()

{

unsigned char i;

unsigned int j;

for(i=0; i<8; i++)

{

GPIO_PLACE = DIG_PLACE[i]; //发送位选

GPIO_DIG = DisplayData[i]; //发送段码

j = 10; //扫描间隔时间设定

while(j--);

GPIO_DIG = 0x00; //消隐

}

}

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

* 函数名: Timer0Cofig

* 函数功能: 配置定时器

* 输入: 无

* 输出: 无

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

void Timer0Cofig(void)

{

TMOD = 0x01; //定时器0选择工作方式1

TH0 = 0x3C; //设置初始值,定时50MS

TL0 = 0xB0;

EA = 1; //打开总中断

ET0 = 1; //打开定时器0中断

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

}

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

* 函数名: Timer0

* 输入: 无

* 输出: 无

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

void Timer0() interrupt 1

{

TH0 = 0x3C; //设置初始值

TL0 = 0xB0;

Time++;

if(Time == 20)

{

Second ++;

Time = 0;

}

}

51单片机用C语言实现交通灯(红绿灯)源程序

51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-29 23:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。源程序如下: /* 1、程序目的:使用定时器学习倒计时红绿灯原理主要程序和倒计时一样 2、硬件要求:数码管、晶振12M */ #include 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定时器0,工作方式1,16位定时器 TH0=0xd8; //65535-10000=55535=D8F0(十六进制) TL0=0xf0; IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许 TR0=1; //开定时器0中断 P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。 red =1; while(1) { P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位 P2=0; delay(300);//短暂延时 P0=Dis_Gewei; //显示个位,左数,2位 P2=1; delay(300);

C语言版交通灯课程设计

微机控制课程设计报告 课程名称基于C语言单片机交通灯 学生姓名张万双 学号51102022004 专业班级电子信息科学与技术2班 指导老师 2013年12月5日

目录 一.前言 (3) 二.功能概述 (3) 三.设计思路 (4) 四.硬件介绍 (4) 五.软件程序设计 (9) 六.电路图及仿真实现 (12) 七.总结 (14) 八.源程序 (15) 九.参考文献 (18)

一.前言 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多,在学习了单片机的有关知识之后,运用相关知识来设计完成交通信号灯。二.功能概述 2.1 设计任务:交通灯的硬件和软件设计 2.2 设计目的 1.进一步熟悉和掌握单片机的结构和工作原理。 2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。 3.通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。 4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 5.通过完成一个包括电路设计和程序开发的完整过程,为我们今后从事相应工作打下基础。

三.设计思路 交通灯的变化规律 按照常规我们假设一个十字路口为东西南北走向。初始状态为状态1,南北方向绿灯通车,东西方向红灯。经过过一段时间(25S)转换状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。再转换到状态3,东西方向绿灯通车,南北方向红灯。过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。最后循环至南北绿灯,东西红灯。在这些状态下,有时钟倒数计时。四.硬件介绍 基础知识 交通灯控制器实例主要使用了89C51 单片机的定时器/计数器,基础知识主要包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存器、定时器/计数器的4 种工作方式、以及定时器/计数器的变成。 4.1 定时器/计数器 定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。 首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。

单片机交通灯(含程序)解析

单片机课程设计报告 题目现代交通灯的设计 专业电气工程及其自动化 班级电气081 学号3080421029 学生姓名郭琪 指导老师王水鱼老师 2010年秋季学期 起止日期:2011年1月10日至2011年1月14日 平时(10%任务完成 (30% 答辩 (30% (30%

课设报告 总评成绩 目录 一、引言 3 二、概要设计 4 2.1设计思路 4 2.2设计的主要内容和要求 4 2.3总体设计框图 5 三、硬件设计 5 3.1LED 循环电路设计 6 3.1.189c51单片机概述 6 3.1.2 LED循环说明9 3.2 倒计时显示电路11 3.2.1 74LS164芯片11 3.2.2 共阴极数码显示管12 3.2.3 倒计时电路13 3.2.4 急通车电路13 四、软件设计14 4.1程序流程图14 4.2 LED红绿灯显示14 4.3 到计时显示16 4.4急通车控制16 4.5程序代码16

五、总结16 参考文献17 附录一: 18 附录二: 19 基于51 单片机的交通灯控制系统设计

摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED 信息显示功能,市交通实现有效控制。 关键词:交通灯,单片机,自动控制 一、引言 当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19 世纪就已经出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”绿,色表示“注意”。1869年1 月2日,煤气灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市 5 号大街的一座高塔上。红灯亮表示 “停止”绿,灯亮表示“通行”。 信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车 辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停

用51单片机控制交通灯汇编语言编写

基于51单片机的交通灯控制系统设计 摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。 关键词:交通灯,单片机,自动控制 一引言 当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口! 二概要设计 2.1 设计思路 利用单片机实现交通灯的控制,该任务分以下几个方面: a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。 b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 C 实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进行。 2.2总体设计框图 见图一:

自动控制交通灯C语言程序

#include #define uchar unsigned char #define uint unsigned int const uchar SMG[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6F}; uchar NUM,SIGN=10,TIM,TIM2; bit FLAG,FLAG2; sbit hong_D=P1^0; sbit lv_D=P1^1; sbit huang_D=P1^2; sbit hong_B=P1^3; sbit lv_B=P1^4; sbit huang_B=P1^5; sbit BEEP=P3^4; sbit EN1=P2^3; sbit DIG1=P2^6; sbit DIG2=P2^7; sbit EN2=P2^2; sbit DIG3=P2^4; sbit DIG4=P2^5; sbit KEY1=P3^0; sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3;

sbit KEY5=P2^0; sbit KEY6=P2^1; void keyscan(); uint M,N; void delay(uint n) { uint x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); } void seg1(uint x) { DIG1=0; P0=SMG[x/10]; delay(1); DIG1=1; P0=0X00; DIG2=0; P0=SMG[x%10]; delay(1); DIG2=1; P0=0X00; } void seg2(uint x)

单片机8255交通灯程序

单片机8255交通灯程序

交通灯程序 /*********************************************************** 十字路口交通灯控制 C 程序 ***********************************************************/ #include #define uchar unsigned char #define uint unsigned int /*****定义控制位*******************************************/ sbit Time_Show_LED2=P2^5; //Time_Show_LED2(直行时间显示)控制位 sbit Time_Show_LED1=P2^4; //Time_Show_LED1(直行时间显示)控制位 sbit EW_LED2=P2^3; //EW_LED2控制位 sbit EW_LED1=P2^2; //EW_LED1控制位 sbit SN_LED2=P2^1; //SN_LED2控制位 sbit SN_LED1=P2^0; //SN_LED1控制位 sbit SN_Yellow=P1^6; //SN黄灯 sbit EW_Yellow=P1^2; //EW黄灯 sbit EW_ManGreen=P3^0; //EW人行道绿灯 sbit SN_ManGreen=P3^1; //SN人行道绿灯 sbit Special_LED=P2^6; //交通特殊指示灯 sbit Busy_LED=P2^7; //交通繁忙指示灯 sbit Nomor_Button=P3^5; //交通正常按键 sbit Busy_Btton=P3^6; //交通繁忙按键 sbit Special_Btton=P3^7; //交通特殊按键

单片机设计方案——交通灯控制系统设计方案

单片机课程设计报告交通灯控制系统设计

摘要 本设计是针对交通灯系统的设计,由单片机AT89C51(实物用AT89S52)、键盘、LED显示、交通灯演示系统组成。单片机是把微型计算机的各功能部件集成在一块芯片中,构成的一个完整的微型计算机。AT89C51单片机是MC-51中的子系列,是一组高性能兼容型单片机,AT89C51是一个低功耗高性能的CMOS 8位单片机,40个引脚,片内含4KB Flash ROM和128B RAM,它是一个全双工的串行通行口,既可以用常规编程,又可以在线编程。 本设计中的数码管的选通采用的方法是动态显示,对每一位数码分时轮流通电显示,复位电路采用上电+按钮电平复位,时钟电路采用内部时钟产生方式。对特殊情况的处理采用中断处理方式,在中断处理程序中采用对管脚的状态查询扫描,已采取相应情况的处理。 对设计方案进行电路硬件设计,并将已编程的程序载入调试,可以得到理想的实验效果。系统包括人行道、左转、右转、以及基本的交通灯的功能.具体功能是假如 A 道和B道上均有车辆要求通过时,A、B道轮流放行。A道放行 25秒,B道放行20秒。一道有车而另一道无车,交通灯控制系统能立即让有车道放行。有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。绿灯转换为红灯时黄灯亮 1秒钟。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。

目录 1引言.......................................................................................................................................... - 1 - 1.1交通灯的重要作用........................................................................................................... - 1 -1.2该交通灯系统的特点....................................................................................................... - 1 -2系统总体方案及硬件设计 ......................................................................................................... - 2 - 2.1原理框图........................................................................................................................... - 2 -2.2设计功能........................................................................................................................... - 2 - 2.3交通灯控制系统各部分硬件组成................................................................................... - 2 - 2.3.1复位部分.................................................................................................................... - 2 - 2.3.2时钟电路部分............................................................................................................ - 3 - 2.3.3路口指示灯部分........................................................................................................ - 3 - 2.3.4显示部分.................................................................................................................... - 3 -2.4元器件清单....................................................................................................................... - 4 -3软件设计..................................................................................................................................... - 5 - 3.1交通灯控制系统软件流程图及程序分析....................................................................... - 5 - 3.1.1主程序流程图及程序模设计.................................................................................... - 5 - 3.1.2INT0中断服务程序流程图及程序模设计.............................................................. - 6 -3.2路口指示灯部分............................................................................................................... - 7 - 3.3显示部分........................................................................................................................... - 7 - 4. Proteus软件仿真 ..................................................................................................................... - 8 - 5 课程设计体会......................................................................................................................... - 10 -参考文献....................................................................................................................................... - 10 -附1:源程序代码 (13) 附2:系统原理图 (20)

红绿灯C语言程序

红绿灯C语言程序(P0口接数码管,平口接发光二极管) #include #define uchar unsigned char #define uint unsigned int uchar i=0,c=0,s=1;// m_flag=1;// ////////////////////////////////////// void dxlv1_nbh1(void) // { P1=0x5a; } void dx0_nbh1(void) // { P1=0x0a; } void dxh1_nbl1(void) // { P1=0xa5; } void dxh1_nb0(void) // { P1=0xa0; } void nbs(void) // 南北灯闪 { if(m_flag==1){dxh1_nb0();} else {dxh1_nbl1();} } void dxs(void){ // 东西灯闪 if(m_flag==1){dx0_nbh1();} else {dxlv1_nbh1();} } //////主程序////////////////// void main() { TMOD=0x01;//定时器0工作在方式1 TH0=-5000/256;//50ms

TL0=-5000%256;//20ms IE=0x82;///允许定时器0中断 TR0=1;///启动定时器0 while(1){ //0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f if(s==10){P0=0x3f;} // 东西绿灯亮,南北红灯亮倒计时开始 if(s==9)P0=0x06; if(s==8)P0=0x5b; if(s==7)P0=0x4f; if(s==6)P0=0x66; if(s==5)P0=0x6d; if(s==4)P0=0x7d; if(s==3)P0=0x07; if(s==2)P0=0x7f; if(s==1){P0=0x6f;P1=0x5a;} if(s>9&&s<13){dxs();} //10秒结束南北红灯继续,东西绿灯一秒一闪闪三次 if(s==13){dxh1_nbl1(); P0=0x6f; }//东西红灯亮,南北绿灯亮倒计时开始 if(s==22){P0=0x3f;} if(s==21)P0=0x06; if(s==20)P0=0x5b; if(s==19)P0=0x4f; if(s==18)P0=0x66; if(s==17)P0=0x6d; if(s==16)P0=0x7d; if(s==15)P0=0x07; if(s==14)P0=0x7f; if(s>21&&s<25){nbs();} //10秒结束东西向红灯亮继续,南北绿灯一秒一闪三次 if(s==25){s=1; }// s归位 } } /////T0中断子程序//////////// void T0_INT()interrupt 1 { TH0=-50000/256;//50ms TL0=-50000%256; if(c==10)m_flag=0; c++;if(c==20)//50ms*20=1s {m_flag=1; c=0;

用单片机控制交通灯源程序代码及流程图

用单片机控制交通灯 传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。下面介绍一种用单片机控制交通灯的方法。 一、硬件硬件电路如附图。AT89C2051的P1.7~P1.5和P1.3~P1.1直接驱动红、黄、绿灯,利用单片机的串口和二片74LS164串/并转换移位寄存器实现时间显示,七段数码管为共阴管,硬件电路极为简单。 二、软件交通灯有红、黄、绿三种。红灯亮,停止通行;绿灯亮,允许通行;黄灯亮,作过渡。红灯亮60秒,绿灯亮55秒,黄灯亮5秒。每组灯的亮暗状态以2分钟为周期循环,故程序采用主、子程序方式,循环结构。另外,为了简化电路,红、黄、绿灯采用低电平点亮。 源程序清单如下: ORG0000H START:MOVDRTR,#TAB MOVSCON,#00H MOVP1,#6CH;点亮红、绿灯 MOVR0,#0;R0清零 LEFT:INCR0 CJNER0,#55,LP0;R0<55,转LP0 MOVP1,#6AH;R0=55,点亮红、黄灯 LJMPLP1 LP0:CJNER0,#60,LP1;R0<60,转LP1 MOVP1,#0C6H;R0=60,点亮绿、红灯 LJMPRIGHT LP1:LCALLDBDB LCALLDISP LJMPLEFT;20H为1,转LEFT RIGHT:DECR0 CJNER0,#5,LP2;R0>0,转LP2 MOVP1,#0A6H;R0=5,点亮黄、红灯 LJMPLP3 LP2:CJNER0,#0,LP3 MOVP1,#6CH;R0=0,点亮红、绿灯 LJMPLEFT LP3:LCALLDBDB

基于单片机的交通灯控制系统

基于单片机的交通灯控制系统 一、实验目的 1、了解交通灯的控制方法 2、掌握8051单片机基本操作 3、掌握keil和PrOteuS软件的使用 二、实验原理 通过对十字路口的观察,发现红绿灯的控制原理:首先南北方向右转加直行的绿灯亮起。此时,东西方向为红灯;当右转加直行绿灯倒计时进入最后5秒, 绿灯切换为黄灯并开始闪烁,东西方向红灯不变;接着南北方向切换为左转灯,东西方向依然是红灯;同样当倒计时进入最后5秒时,黄灯开始闪烁。东西方向为红灯。然后东西方向的右转加直行绿灯亮起,以此类推。 三、实验内容及程序 主程序: void main (VOid)

Busy_LED=O; SPeCiaLLED=O; ITO=1; //INTO 负跳变触发 TMOD=O X OI;//定时器工作于方式1 TH0=(65536-50000)∕256;// 定时器赋初值TL0=(65536- 50000)%256; EA=1; //CPU开中断总允许 ET0=1;//开定时中断 EX0=1;//开外部INTO中断 TR0=1;// 启动定时 while(1) { Flag_EW_Yellow=0; //EW关黄灯显示信号 Time_EW=EW; Time_SN=SN; WhiIe(Time_SN>=5) {P仁S[0]; /∕SN 通行,EW红灯 DiSPIay();} P仁0x00; WhiIe(Time_SN>=0 ) {Flag_SN_Yellow=1; EW_Red=1; /∕SN //SN开黄灯信号位 黄灯亮,等待左拐信号,EW红灯 DiSPIay(); } Flag_SN_Yellow=0; /∕SN关黄灯显示信号Time_SN=SNL; WhiIe(Time_SN>=5) {P仁S[2];//SN左拐绿灯亮,EW红灯 DiSPIay();} P仁0x00; WhiIe(Time_SN>=0 ) {Flag_SN_YeIIow=1; EW_Red=1; /∕SN //SN开黄灯信号位 黄灯亮,等待停止信号,EW红灯 DiSPIay(); }

C51单片机的交通灯控制系统

基于C51单片机的交通灯控制系统 1、实验方案论证: 进行十字路口的交通信号灯控制电路设计,画出电路原理图及实验电路图,进行软件编程、以及使用说明文档的建立等一整套工作任务。进行十字路口的交通信号灯控制程序设计,提交一个符合上述功能要求的十字路口的交通信号灯控制系统设计。 2、控制流程分析: 对设计要求进行分析后可得出以下交通工作状态表: 3、硬件设计概要: 根据设计要求,可用6个LED灯分别模拟东西、南北的交通灯。具体接法如下:AT89C51的P1口接LED灯,P1.0、P1.1、P1.2分别接东西方向红、绿、黄交通灯,P1.3、P1.4、P1.5分别接南北方向的红、绿、黄交通灯。P1口和LED 灯之间要接限流保护电阻。两位数码管段选接P2口,位选接P0口低两位,P0口低两位接上拉电阻使其可以输出高电平。紧急情况按钮一端接地,另一端与外中断1引脚相连;恢复正常按钮一端接地,另一端与外中断0引脚相连。

三、原理图设计 1、LED显示部分电路设计: 把单片机AT89C51的P1口作为红黄绿灯显示部分,用6个LED灯分别模拟东西、南北的交通灯。P1.0、P1.1、P1.2各通过一个300Ω的限流保护电阻接东西方向的红、绿、黄LED灯;P1.3、P1.4、P1.5各通过一个300Ω的限流保护电阻接南北方向的红、绿、黄LED灯。LED灯的一端接电源,另一端经电阻接P1口,因此当P1口引脚输出低电平时LED灯发光,即此方案采取低电平驱动方式。具体电路如下: 2、紧急情况处理电路设计: 紧急情况按钮一端接地,另一端与外中断1引脚相连;恢复正常按钮一端接地,另一端与外中断0引脚相连。在程序设计时,我会将其设置为下降沿触发方式。具体电路如下:

交通灯 C语言程序

十字路口交通灯C语言控制程序 LSX编写 2011年5月长沙 #include #define uint unsigned int #define uchar unsigned char uchar code tamp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar num,num1,n1,n2,e1,e2,s1,s2,w1,w2,x,x1,y,y1,a,a1,a2,b,b1,b2; void init(uchar n1,uchar n2,uchar e1,uchar e2,uchar s1,uchar s2,uchar w1,uchar w2); void deley(uint z); void zhixing(); void zhixing1(); void traffic(); void max(); sbit green=P2^3; sbit yellow=P2^4; sbit red=P2^5; sbit dula=P2^6; sbit wela=P2^7;

LSX编写 2011年5月长沙//主函数// void main() { P1=0x00; deley(1);//延时消影// yellow=1; P0=0x00; yellow=0; deley(1);//延时消影// red=1; P1=0xfd; red=0; deley(1);//延时消影// green=1; P1=0x02; green=0; deley(1);//延时消影//

x=25; y=45; a=60; b=120; x1=60; a1=85; b1=105; y1=120; a2=25; b2=45; EA=1; ET0=1; TR0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; while(1) {

51单片机交通灯程序设计

单片机控制交通灯设计方案 一、单片机设计交通灯的设计要求: 状态一:南北绿灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。(时间为15S) 状态二:南北黄灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。(时间为5S) 状态三:南北红灯亮,东西绿灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。(时间为15S) 状态四:南北红灯亮,东西黄灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。(时间为5S) 二、设计原理分析 1、首先了解实际交通灯的变化情况和规律。假设一个十字路口如上图所以, 为东南西北走向。初始状态0:为东西绿灯亮,南北红灯亮;然后转状态1:东西绿灯亮黄灯亮,南北红灯亮黄灯亮;过后转状态2:东西红灯亮,南北绿灯亮;再转状态3:东西红灯亮黄灯亮,南北绿灯亮黄灯亮。一段时间后,又循环至状态0。中间可通过中断按钮产生中断,跳入中断程序执行中断。2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。 3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。 4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。

5.通过脉冲中断编写中断程序,可实现中断。 三、设计的仿真图如下; 其接法为:P0接数码管的端选段, P1接数码管的位选端, P2接交通灯,接法如下: P20,P21,P22,分别接南北向的红黄绿灯, P23接南北左拐绿灯, P24,P25,P26,分别接东西向的红黄绿灯, P27接东西左拐红灯 东西人行到红绿灯和南北红绿灯接到一起 南北人行到红绿灯和东西红绿灯接到一起 四、AT89C51的KILL程序 #include "reg51.h" #define uchar unsigned char #define uint unsigned int uchar code wei[]={0x01,0x02,0x04,0x08}; //位码选择 uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码选择 uchar table[4]={0,0,0,0};//四位为选端赋值区间

用单片机来控制交通灯

基于单片机的交通灯设计 摘要: 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本系统实用性强、操作简单、扩展功能强。 关键词: 单片机交通灯闯红灯检测车流量 1 引言 当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。 电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,

基于单片机C语言交通灯数码管显示的设计完整版

基于单片机C语言交通灯数码管显示的设计完整版

基于单片机C语言交通灯数码管显示的设计完整版/* P2口位控口,P0口段控口, P1口按键,P3口发光二极管*/ #include #define uchar unsigned char #define uint unsigned int /*共阳数码管字型码数组*/ /*0,1,2,3,4,5,6,7,8,9,P.,灭*/ char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8 ,0x80,0x90,0xbf,0x21,0xff}; /*共阳数码管位控码数组(从右往左点亮,反向驱动)*/ char code weikong_code[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf, 0x7f}; char find_code[8]; sbit S2=P1^0; //S1键启动交通灯控制器 sbit S3=P1^1; //S2键回归“P.”状态 sbit S4=P1^2; //S3键处理紧急状况

uchar time; void DelayX1ms(uint count) //1ms延时函数{ uint j; while(count--!=0) { for(j=0;j<80;j++); } } /*********************显示函数*****************************/ void disp() { char i; char k; for(i=0;i<8;i++) { P2=weikong_code[i]; k=find_code[i]; P0=dis_code[k]; DelayX1ms(1); }

51单片机交通灯设计.

摘要 交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制技术日益更新。接下来将介绍基于单片机控制的交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机80C51和芯片74LS245为中心器件来设计交通灯控制系统。、 关键字:单片机,信号灯,控制

前言 道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。 最早的时候只有红、绿两种颜色,后来经过改良后,增加了一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。之所以采用这三种颜色,一方面是三原色,其他颜色也是在此基础上调出来的,另一方面,用这三种颜色作为交通讯号也和人们的视觉结构和心理反应有关。 人的视网膜含有杆状和三种锥状感光细胞,杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。由于这种视觉结构,人最容易分辨红色与绿色。虽然黄色与蓝色也容易分辨,但因为眼球对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。 交通信号灯是交通信号指挥中的重要组成部分,是道路交通的基本语言。交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。广泛用于公路交叉路口,弯道、桥梁等存有安全隐患的危险路段,指挥司机或行人交通,促进交通畅通,避免交通事故和意外事故发生。 图1-1.系统硬件构成模块 1.2.1功能概述 本设计由中断系统、单片机、LED数码显示模块和按键等构成。单片机是集成的IC芯片AT89C51单片机,只需根据实际选型。其他部分都需要根据应用要求和性能指标自行设计。

基于51单片机控制交通灯的毕业设计

安徽工商职业学院ANHUI BUSINESS VOCATIONAL COLLEGE 毕业设计(论文) 基于单片机控制的交通灯毕业设计 系别:电子信息系 专业班级:10应用电子技术2班 学号: 103596 学生姓名:吴坤 指导老师:聂凯 二零一二年十月

基于单片机控制的交通灯毕业设计 摘要 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本设计主要分为五大模块输入:控制电路、时钟控制电路、片内外程序切换控制、显示电路。以MSC-51系列单片机IntelAT89C51为中心器件来设计交通灯控制器,实现了AT89C51芯片的P0口设置红灯、绿灯、黄灯燃亮时间的功能;为了系统稳定可靠采用了74LS14施密特触发器芯片的消抖电路,避免了系统因输入信号抖动产生误操作;显示时间直接通过AT89C51的P2口输出,由CD4511驱动LED数码管显示红灯燃亮时间。 关键字:AT89C51 LED显示交通灯

The Traffic Light Based On The Single-chip Control Abstract The intersections vehicle wears shuttle, pedestrian Xi Rang, garage driveway, person's sidewalk, orderly. So depend what to carry out this well arranged order? What to depend is a traffic sign light of automatic conductor system. The control method of the traffic sign light is a lot of. This design is mainly divided into five greatest molds a piece the electric circuit, clock of the importation control a control outside procedure inside the electric circuit, slice to cut over a control and shows electric circuit. Take single slice the machine IntelAT89 C51 of the serieses MSC-51s as a center spare part to design transportation light controller, carried out the AT89 C51's P's 0 people's constitution of the chips red, the function in bright time of green light, Huang2 Deng Ran2;For the sake of system stability the credibility adopted a 74 LS14 airtight trigger eliminate of machine chip to tremble electric circuit especially, avoided system because of importation the signal tremble movable property to living a mistake operation; The P 2 people who shows that time directly passes the AT89 C51 output, is driven LED figures a tube by the CD4511 to show red-light Ran bright time. Key word: The AT89 C51 LED show transportation light

相关文档
最新文档