首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机交通灯设计 2

单片机交通灯设计 2

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.

附录 系统总体电路图
[url=http://www.51hei.com/UpFiles/Pic/2007-06/20076124199898355.gif][/url]
1.满足南北向红绿灯亮,东西向红灯亮,占25秒——南北向黄灯亮,东西向红灯亮,占5秒——南北向红灯亮,东西向绿灯亮,占25秒——南北向红灯亮,东西向黄灯亮,占5秒。如此循环,周而复始。 2.十字路口要有数字显示,提示行人把握时间:当某方向绿灯亮时,置显示器为24,然后以每秒减1计数方式工作,直到减为0,绿灯灭,黄灯亮。黄灯灭,红灯亮时,再次置显示器为29,并开始减计数,直到为0,十字路口红绿灯交换,完成一次工作循环。
3.可手动调整和自动调整,夜间为黄灯闪耀。
下面是一个单片机交通灯程序
/*
******************************************************************************************
* *
* Keil C 89S51 交通信号控制程序 *
* (C) 版权所有 Dai_Weis@hotmail.com *
* *
******************************************************************************************
*/
#include "reg51.h"
#define UINT unsigned int
#define ULONG unsigned long
#define UCHAR unsigned char
/*
信号灯变量
南北方向绿灯
sbit n_bike_g = P1^0; //自行车
sbit n_right_g = P1^1; //右转
sbit n_up_g = P1^2; //直行
sbit n_left_g = P1^3; //左转 调头
南北方向红灯
sbit n_bike_r = P1^4; //自行车
sbit n_right_r = P1^5; //右转
sbit n_up_r = P1^6; //直行
sbit n_left_r = P1^7; //左转 调头
南北方向黄灯
sbit n_bike_y = P3^0; //自行车
sbit n_right_y = P3^1; //右转
sbit n_up_y = P3^2; //直行
sbit n_left_y = P3^3; //左转 调头

东西方向绿灯
sbit e_bike_g = P2^0; //自行车
sbit e_right_g = P2^1; //右转
sbit e_up_g = P2^2; //直行
东西方向红灯
sbit e_bike_r = P2^4; //自行车
sbit e_right_r = P2^5; //右转
sbit e_up_r = P2^6; //直行
东西方向黄灯
sbit e_bike_y = P3^4; //自行车
sbit e_right_y = P3^5; //右转
sbit e_up_y = P3^6; //直行
*/
//延时
void delay(UINT t, UINT s)
{
while (t)
{
UINT i;
for (i = 0; i < s; i++)
{
}
t --;
}
}
//信号灯状态
void time_x(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3)
{
P1 = P_P1;
P2 = P_P2;
P3 = P_P3;
delay(150, 65535);
}
void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22)
{
UINT i;
for (i = 0; i < 3; i ++)
{
P1 = P_P1;
P2 = P_P2;
delay(5, 65535);
P1 = P_P11;
P2 = P_P22;
delay(5, 65535);
}
P1 = P_P1;
P2 = P_P2;
P3 = P_P3;
delay(10, 65535);
}
//主程序
void main()
{
P1 = P2 = P3 = 0x0;
while (1)
{
time_x(0xA5, 0x38, 0x0);
time_s(0xA4, 0x38, 0x1, 0xA5, 0x38);
time_x(0x96, 0x52, 0x0);
time_s(0x92, 0x52, 0x4, 0x96, 0x52);
time_x(0x5A, 0x52, 0x0);
time_s(0x50, 0x50, 0x2A, 0x5A, 0x52);
time_x(0xF0, 0x25, 0x0);
time_s(0xF0, 0x24, 0x20, 0xF0, 0x25);
time_x(0xD2, 0x16, 0x0);
time_s(0xD0, 0x10, 0x62, 0xD2, 0x16);
}
}
给你一个定时控制的信号系统,我只做的简单的测试,至于延时我用的软件,你自己想办法。^_^

Dai_Weis 于 2005-5-4 13:43:23
重新给你说明
/*
***********************************************************************************
* *
* Keil C AT89S51 交通信号控制程序 *
* (C) 版权所有 Dai_Weis@hotmail.com *
* *
***********************************************************************************
开发说明:
固定时间信号变换,南北设置调头、左传、直行、右转、自行车。
东西设置左传、直行、右转、自行车。
时序状态:
红 绿 红 绿
序号 左 前 右 自 左 前 右 自 前 右 自 前 右 自
1 1 0 1 0 0 1 0 1 1 1 1 0 0 0
2 1 0 0 1 0 1 1 0 1 0 1 0 1 0
3 0 1 0 1 1 0 1 0 1 0 1 0 1 0
4 1 1 1 1 0 0 0 0 0 1 0 1 0 1
5 1 1 0 1 0 0 1 0 0 0 1 1 1 0
*/
另外修正个错误
while (1)
{
time_x(0xA5, 0x70, 0x0);
time_s(0xA4, 0x70, 0x1, 0xA5, 0x70);


 
返回列表