目录
具体实现功能
设计介绍
51单片机简介
资料内容
仿真实现(protues8.7)
程序(Keil5)
全部内容
资料获取
具体实现功能
(1)东西向右转和直行绿灯20S,左转红灯;南北向直行和左转红灯,右转绿灯;东西人行道绿灯。
(2)东西向右转绿灯,直行红灯,左转绿灯15S;南北向直行和左转红灯,右转绿灯;东西人行道绿灯。
(3)南北向右转和直行绿灯20S,左转红灯;东西向直行和左转红灯,右转绿灯;南北人行道绿灯。
(4)南北向右转绿灯,直行红灯,左转绿灯15S;东西向直行和左转红灯,右转绿灯;南北人行道绿灯。
(5)紧急按键按下,所有路口红灯亮,车辆禁行。
(6)特种车辆通行按键分为东西和南北两个按键,东西按键按下,东西向绿灯全亮;南北按键按下,南北向绿灯全亮,20S后恢复。
仿真演示视频:
基于51单片机的路口交通灯控制系统仿真-仿真视频
设计介绍
51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。
本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。
资料内容
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计,具体如图。
程序(Keil5)
本设计利用KEIL5软件实现程序设计。
主函数如下:
///
void main()
{
multiple = 1;
time = 20 *multiple; //初始化开始时间
Timer_Init(); //定时器初始化
while(1)
{
multiple = 1;
if(NO_ENTRY == 1) //全面禁止通行按钮没有按下时
{
TR0 = 1;
key_value = Key_Scan(); //按键值
if(key_value == 0)
{
Digital_Display(time);//显示时间
switch(step)
{
case 0:
NS_STRAIGHT_LED = 1; //南北直行红灯亮
EW_STRAIGHT_LED = 0; //东西直行绿灯亮
NS_SIDEWALK_LED = 0; //南北人行道红灯亮
EW_SIDEWALK_LED = 1; //东西人行道绿灯亮
NS_LEFT_LED = 1; //南北左转红灯亮
EW_LEFT_LED = 1; //东西左转红灯亮
NS_RIGHT_LED = 0; //南北右转绿灯亮
EW_RIGHT_LED = 0; //东西右转绿灯亮
break;
case 1:
NS_STRAIGHT_LED = 1; //南北直行红灯亮
EW_STRAIGHT_LED = 1; //东西直行红灯亮
NS_SIDEWALK_LED = 0; //南北人行道红灯亮
EW_SIDEWALK_LED = 1; //东西人行道红灯亮
NS_LEFT_LED = 1; //南北左转红灯亮
EW_LEFT_LED = 0; //东西左转绿灯亮
NS_RIGHT_LED = 0; //南北右转绿灯亮
EW_RIGHT_LED = 0; //东西右转绿灯亮
break;
case 2:
NS_STRAIGHT_LED = 0; //南北直行绿灯亮
EW_STRAIGHT_LED = 1; //东西直行红灯亮
NS_SIDEWALK_LED = 1; //南北人行道绿灯亮
EW_SIDEWALK_LED = 0; //东西人行道红灯亮
NS_LEFT_LED = 1; //南北左转红灯亮
EW_LEFT_LED = 1; //东西左转红灯亮
NS_RIGHT_LED = 0; //南北右转绿灯亮
EW_RIGHT_LED = 0; //东西右转绿灯亮
break;
case 3:
NS_STRAIGHT_LED = 1; //南北直行红灯亮
EW_STRAIGHT_LED = 1; //东西直行红灯亮
NS_SIDEWALK_LED = 1; //南北人行道红灯亮
EW_SIDEWALK_LED = 0; //东西人行道红灯亮
NS_LEFT_LED = 0; //南北左转绿灯亮
EW_LEFT_LED = 1; //东西左转红灯亮
NS_RIGHT_LED = 0; //南北右转绿灯亮
EW_RIGHT_LED = 0; //东西右转红绿灯亮
break;
default: break;
}
}
else
{
if(key_value == 1)
{
TR0 = 0;
TR1 = 1;
ns_time = 20;
while(ns_time)
{
NS_STRAIGHT_LED = 0; //南北直行绿灯亮
EW_STRAIGHT_LED = 1; //
NS_SIDEWALK_LED = 1; //
EW_SIDEWALK_LED = 1; //
NS_LEFT_LED = 0; //
EW_LEFT_LED = 1; //
NS_RIGHT_LED = 0; //
EW_RIGHT_LED = 1; //
Digital_Display(ns_time);//显示时间
}
}
if(key_value == 2)
{
TR0 = 0;
TR1 = 1;
ew_time = 20;
while(ew_time)
{
NS_STRAIGHT_LED = 1; //东西直行绿灯亮
EW_STRAIGHT_LED = 0; //
NS_SIDEWALK_LED = 1; //
EW_SIDEWALK_LED = 1; //
NS_LEFT_LED = 1; //
EW_LEFT_LED = 0; //
NS_RIGHT_LED = 1; //
EW_RIGHT_LED = 0; //
Digital_Display(ew_time);//显示时间
}
}
}
}
if(NO_ENTRY == 0) //禁止通行
{
TR0 = 0;
NS_STRAIGHT_LED = 1;
EW_STRAIGHT_LED = 1;
NS_SIDEWALK_LED = 0;
EW_SIDEWALK_LED = 0;
NS_LEFT_LED = 1;
EW_LEFT_LED = 1;
NS_RIGHT_LED = 1;
EW_RIGHT_LED = 1;
}
}
}
程序运行结果如图:
全部内容
全部资料包括程序(keil5)、protues仿真(protues8.7)、开发资料、资料使用介绍、仿真视频、程序讲解视频、仿真讲解视频、最小系统介绍视频等。
资料获取
https://docs.qq.com/doc/DT0VXVXJpWmd6TUlN