给大家提供一些资料详细解释,有需要的自行提取,网盘地址我放在下面
链接:https://pan.baidu.com/s/1NigBeujDZTCFL0hdMiu7yg?pwd=syxp
提取码:syxp
按照主干道在上下班时间段和其他时间段的车流量不同分为两种模式(其中黄灯都为3秒,绿灯时间+黄灯时间=红灯时间)。
第一种模式工作日时主干道(东西方向)比其他时间段车流量多通行时间应该比次干道稍微多些,东西方向直行通行时间60秒,左转30秒,南北方向直行通行时间30秒,左转15秒。
第二种模式非工作日、夜间时,主干道(东西方向)直行通行时间45秒,左转20秒,次干道(南北方向)直行通行时间25秒,左转15秒。
交通灯的时间由按键控制,先按下设置后可以选择模式一、模式二,两种方案然后可以通过加、减键调节时间,按下启动即可运行。紧急键直接按下后可以选择八种状态中的一种运行,用于对十字路口进行交通管制。有七种模式:1、东西、南北干道红灯;2、东西红灯,南北绿灯;3、东西红灯,南北左转绿灯;4、东西绿灯,南北红灯;5、东西绿灯,南北左转绿灯红灯;6、东西绿灯,南北绿灯;7、东西黄灯,南北黄灯。
#include "ADC0832.h"
#include "intrins.h"
/*********************************************
读取ADC
**********************************************/
uchar ADC(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//开始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//选择通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3个上升沿DI=0
_nop_();
DI=1;
//********通道选择结束开始读取转换后的二进制数****
//下降沿读数,一下进行判断和处理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS=1;
return temp0;
}
资料借鉴于此纷传
阅读全文
540