# JiaoTongXinhaoDeng
智能远程可控交通信号灯
从网上找了一份资料,满足了基本的需要,但没有实现远程控制的功能,于是我将代码和电路图进行了修改,使其能进行远程通信
## 代码
```c
#include <reg52.h> //头文件
#define uchar unsigned char
#define uint unsigned int //宏定义
sfr T2MOD = 0xC9;
uchar data buf[4]; //秒显示的变量
uchar data sec_dx = 20; //东西数默认
uchar data sec_nb = 30; //南北默认值
uchar data set_timedx = 20; //设置东西方向的时间
uchar data set_timenb = 30; //设置南北方向的时间
uchar data num_che_dx = 0; //设置变量用于记录东西通行车量的个数
uchar data num_che_nb = 0; //设置变量用于记录南北通行车辆的个数
uchar data xianshi_fx = 0; //显示方式
int n;
uchar data countt0, countt1; //定时器0中断次数
//定义6组开关
sbit k1 = P1 ^ 5; //夜间模式
sbit k2 = P1 ^ 4; //禁止
sbit k3 = P3 ^ 4; //确认
sbit k4 = P1 ^ 6; //东西通行
sbit k5 = P1 ^ 7; //南北通行
sbit hw_dx = P3 ^ 5; //使用此引脚接红外探头检测"东西"方向通过的车辆当检测到南北有车辆通行时,该引脚会呈现低电平
sbit hw_nb = P3 ^ 6; //使用此引脚接红外探头检测"南北"方向通过的车辆当检测到南北有车辆通行时,该引脚会呈现低电平
sbit k6 = P3 ^ 7; //切换方向
sbit Red_nb = P2 ^ 6; //南北红灯标志
sbit Yellow_nb = P2 ^ 5; //南北黄灯标志
sbit Green_nb = P2 ^ 4; //南北绿灯标志
sbit Red_dx = P2 ^ 3; //东西红灯标志
sbit Yellow_dx = P2 ^ 2; //东西黄灯标志
sbit Green_dx = P2 ^ 1; //东西绿灯标志
sbit Buzz = P3 ^ 3;
bit set = 0; //调时方向切换键标志 =1时,南北,=0时,东西
bit dx_nb = 0; //东西南北控制位
bit shanruo = 0; //闪烁标志位
bit yejian = 0; //夜间黄灯闪烁标志位
uchar code table[11] = {
//共阴极字型码
0x3f, //--0
0x06, //--1
0x5b, //--2
0x4f, //--3
0x66, //--4
0x6d, //--5
0x7d, //--6
0x07, //--7
0x7f, //--8
0x6f, //--9
0x00 //--NULL
};
//函数的声明部分
void delay(int ms); //延时子程序
void key(); //按键扫描子程序
void key_to1(); //键处理子程序
void key_to2();
void key_to3();
void key_to4();
void key_to5();
void display(); //显示子程序
void logo(); //开机LOGO
void Buzzer();
//主程序
void main()
{
TMOD = 0X11; //定时器设置
TH1 = 0X3C;
TL1 = 0XB0;
TH0 = 0X3C; //定时器0置初值 0.05S
TL0 = 0XB0;
T2MOD = 0x01; //自动重载
T2CON = 0x30; //T2用做发送接收时钟
TH2 = 0xFF; //9600波特率,11.0592Mhz晶振
TL2 = 0xDC;
RCAP2H = 0xFF;
RCAP2L = 0xDC;
SCON = 0x50; //串口方式1,1个起始位,1个停止位,8位数据,可变波特率
PCON = 0X00; //波特率不加倍
TR2 = 1; //启动T2
ES = 1; //开串口中断
EA = 1; //开总中断
ET0 = 1; //定时器0中断开启
ET1 = 1; //定时器1中断开启
TR0 = 1; //启动定时0
TR1 = 0; //关闭定时1
EX0 = 1; //开外部中断0
EX1 = 1; //开外部中断1
logo(); //开机初始化
P2 = 0Xc3; // 开始默认状态,东西绿灯,南北黄灯
sec_nb = sec_dx + 5; //默认南北通行时间比东西多5秒
while (1) //主循环
{
key(); //调用按键扫描程序
display(); //调用显示程序
}
}
void key_to1() //夜间模式设置函数
{
TR0 = 0; //关定时器
P2 = 0x00;
TR1 = 1;
sec_dx = 00; //四个方向的时间都为00
sec_nb = 00;
}
void key_to2() //禁止通行模式设置函数
{
TR0 = 0; //关定时器
P2 = 0x00; //灭显示
Red_dx = 1;
Red_nb = 1; //全部置红灯
TR1 = 0;
sec_dx = 00; //四个方向的时间都为00
sec_nb = 00;
}
void key_to3() //确认设置函数
{
TR0 = 1; //启动定时器0
xianshi_fx = 0; //设置重新显示
sec_nb = set_timenb; //从中断回复,仍显示设置过的数值
sec_dx = set_timedx; //显示设置过的时间
TR1 = 0; //关定时器1
if (set == 0) //时间倒时到0时
{
P2 = 0X00; //灭显示
Green_dx = 1; //东西绿灯亮
Red_nb = 1; //南北红灯亮
sec_nb = sec_dx + 5; //回到初值
}
else
{
P2 = 0x00; //南北绿灯,东西红灯
Green_nb = 1;
Red_dx = 1;
sec_dx = sec_nb + 5;
}
}
void key_to4() //东西通行设置函数
{
TR0 = 0; //关定时器0
TR1 = 0; //关定时器1
P2 = 0x00; //灭显示
Green_dx = 1; //东西方向置绿灯
Red_nb = 1; //南北方向为红灯
sec_dx = 00; //四个方向的时间都为00
sec_nb = 00;
}
void key_to5() //南北通行设置函数
{
TR0 = 0; //关定时器0
TR1 = 0; //关定时器1
P2 = 0x00; //灭显示
Green_nb = 1; //置南北方向为绿灯
Red_dx = 1; //东西方向为红灯
sec_nb = 00; //四个方向的时间都为00
sec_dx = 00;
}
//函数的定义部分
void key(void) //按键扫描子程序
{
if (k1 != 1) //当K1(夜间模式)按下
{
display(); //调用显示,用于延时消抖
if (k1 != 1) //如果确定按下
{
key_to1(); //夜间模式设置函数
do
{
display(); //调用显示,用于延时
} while (k1 != 1); //等待按键释放
}
}
if (k2 != 1) //当K2(禁止)键按下时
{
display(); //调用显示,用于延时消抖
if (k2 != 1) //如果确定按下
{
key_to2(); //停止通行设置函数
do
{
display(); //调用显示,用于延时
} while (k2 != 1); //等待按键释放
}
}
if (k3 != 1) //当K3(确认)键按下时
{
display(); //调用显示,用于延时消抖
if (k3 != 1) //如果确定按下
{
key_to3();
do
{
display(); //调用显示,用于延时
} while (k3 != 1); //等待按键释放
}
}
if (k4 != 1) //当K4(东西通行)键按下时
{
display(); //调用显示,用于延时消抖
if (k4 != 1) //如果确定按下
{
key_to4(); //东西通行函数
do
{
display(); //调用显示,用于延时
} while (k4 != 1); //等待按键释放
}
}
if (k5 != 1) //当K5(南北通行)键按下时
{
display(); //调用显示,用于延时消抖
if (k5 != 1) //如果确定按下
{
key_to5(); //南北通行函数
do
{
display(); //调用显示,用于延时
} while (k5 != 1); //等待按键释放
}
}
if (hw_dx != 1) //东西红外探头
{
display(); //调用显示,用于延时消抖和按键检测方法基本相同
if (hw_dx != 1) //如果确定有车辆经过
{
if (dx_nb == 0) //东西通行的时间
{
num_che_dx++; //用于记录东西绿灯时经过的车辆数
}
else
{
Buzz = 0; //蜂鸣器开
}
while (hw_dx != 1)
; //等待释放
{
display(); //调用显示,用于延时
}
Buzz = 1; //蜂鸣器关
}
}
if (hw_nb != 1) //南北红外探头
{
display(); //调用显示,用于延时消抖和按键检测方法基本相同
if (hw_nb != 1) //如果确定有车辆经过
{
if (dx_nb == 1) //东西通行的时间
{
num_che_nb++; //用于记录南北绿灯时经过的车辆数
}
else
{
Buzz = 0; //蜂鸣器开
}
while (hw_nb != 1)
; //等待释放
{
display(); //调用显示,用于延时
}
Buzz = 1; //蜂鸣器关
}
}
if (k6 != 1) //(查看)键按下
{
display(); //调用显示,用于延时消抖
if (k6 != 1) //如果确定按下
{
xianshi_fx++;
if (xianshi_fx >= 3)
xianshi_fx = 2;
while (k6 != 1)
; //等待按键释放
{
display(); //调用显示,用于延时
}
}
}
}
void display(void) //显示子程序
{
if (xianshi_fx == 0) //正常显示
{
buf[1] = sec_nb / 10; //第1位 东西显示秒十位
buf[2] = sec_nb % 10; //第2位 东西显示秒个位
buf[3] = sec_dx / 10; //第3位 南北显示秒十位
buf[0] = sec_dx % 10; //第4位 南北显示秒个位
}
if (xianshi_fx == 1) //查看通行时间
{
buf[1] = set_timenb / 10; //第1位 东西通行秒十位
buf[2] = set_timenb % 10; //第2位 东西通行秒个位
buf
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于C语言+单片机开发的智能远程可控交通信号灯系统设计+源码+原理图+仿真图+开题报告+芯片资料+文档PPT,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C语言+单片机开发的智能远程可控交通信号灯系统设计+源码+原理图+仿真图+开题报告+芯片资料+文档PPT,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C语言+单片机开发的智能远程可控交通信号灯系统设计+源码+原理图+仿真图+开题报告+芯片资料+文档PPT,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C语言+单片机开发的智能远程可控交通信号灯系统设计+源码+原理图+仿真图+开题报告+芯片资料+文档PPT,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~
资源推荐
资源详情
资源评论
收起资源包目录
智能远程可控交通信号灯系统设计.zip (68个子文件)
JiaoTongXinhaoDeng-master
《物联网项目案例》报告.docx 6.73MB
程序
jtd_uvproj.bak 13KB
jtd.M51 27KB
STARTUP.LST 13KB
jtd.uvgui.Administrator 85KB
jtd.uvopt 6KB
jtd.uvproj 14KB
STARTUP.A51 6KB
jtd.uvgui.圣三一 87KB
jtd_uvopt.bak 55KB
jtd.LST 23KB
jtd.c 12KB
jtd.OBJ 20KB
jtd.build_log.htm 969B
jtd.hex 4KB
STARTUP.OBJ 749B
jtd 18KB
jtd.lnp 36B
jtd.uvgui_Administrator.bak 70KB
README.md 52B
jtd.plg 4KB
芯片资料
STC89C52单片机.doc 197KB
STC89C51.pdf 2.53MB
AT89C51.pdf 4.98MB
max232.jpg 34KB
AT89S51.doc 1.51MB
74HC245.pdf 612KB
7805引脚.png 48KB
AT89S52的中文资料.doc 51KB
stc89c52单片机.pdf 13.86MB
STC89C51应用介绍.pdf 1.52MB
timg.jpg 41KB
at89c52.docx 463KB
7805.jpg 14KB
光电传感器模块 E18-D80NK 漫反射式红外光电开关 避障传感器模块.pdf 181KB
任务书
交通灯任务书.doc 30KB
原理图
debug.log 0B
Previous Backup of Sheet2.Sch 258KB
__Previews
Previous Backup of Sheet2.SchPreview 64KB
Backup of Sheet2.SchPreview 71KB
History
Previous Backup of Sheet2.~(2).Sch.Zip 33KB
Previous Backup of Sheet2.~(1).Sch.Zip 24KB
Previous Backup of Sheet2.pdf 58KB
Free Documents.OutJob 5KB
仿真图
Last Loaded 交通灯.DBK 145KB
Last Loaded 交通灯.pdsbak 23KB
交通灯.DSN 144KB
Backup Of 交通灯.pdsbak 23KB
交通灯.pdsprj 23KB
交通灯.PWI 874B
交通灯.pdsprj.THRINITY.圣三一.workspace 2KB
交通信号灯.pptx 2.34MB
开题报告
开题报告.doc 52KB
交通灯论文
加蜂鸣器 2-正版+更新+单片机交通灯控制.doc 280KB
单片机交通灯控制_毕业设计.doc 378KB
基于单片机的交通灯设计论文.doc 459KB
2-正版+更新+单片机交通灯控制.doc 1.11MB
README.md 16KB
实物图
照片 562.jpg 2.56MB
交通灯制作照片
照片 1528.jpg 1.56MB
照片 1529.jpg 1.47MB
照片 1536.jpg 1.46MB
照片 1530.jpg 1.5MB
照片 1526.jpg 1.46MB
照片 1527.jpg 1.63MB
照片 1535.jpg 1.52MB
照片 563.jpg 2.53MB
245蜂鸣器交通灯_副本.jpg 163KB
共 68 条
- 1
资源评论
梦回阑珊
- 粉丝: 3660
- 资源: 1243
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数据库课程设计on-model-for-netwo开发笔记
- linux常用命令大全mage-processing-m开发笔记
- mysql安装配置教程droid-m开发笔记
- PWMmodel-for-network-ids-ma开发笔记
- apache-doris-build-env-for-2.0.c
- apache-doris-build-env-for-2.0.b
- apache-doris-build-env-for-2.0.a
- 1719422999141832_lls-release_cqfw.mobileconfig
- 数据库课程设计processing-m开发笔记
- pycharm安装教程ention-model-for-开发笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功