主页(http://www.cnwulian.net):AT89C52单片机智能交通灯的设计
os_create_task(job4); //创建显示任务
下位机外接动态车辆检测电路、LED和数码相机。各下位机通过对车辆检测电路定时扫描,读取各车道当前信息,判断是否有车通过;LED显示各车道方向箭头及剩余时间;数码相机则对违章车辆进行抓拍。
{os_create_task(job6); //若时间到,创建通信任务
在接收到任务2发来的信号后,根据其提供的车道记录及该车道的当前显示情况,实现流量统计或违章监测的功能。
t1--;
软件设计中,采用RTX51小型实时操作系统。它是一个专用于8051系列处理器的多任务实时操作系统,能使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换,并可以简化那些复杂而且时间要求严格的工程软件设计工作。
}
当时间到时,根据当前情况进行红绿灯显示切换若1a、1b当前为绿灯,则时间到后通知上位机,并将统计的车流量经串行口传送给上位机,由上位机触发下一组绿灯显示;右1a、1b当前为红灯,则时间到后等待上位机触发信号。这样由上位机统一调度,可以避免各下位机各自为政所造成的时间差。由于通信任务对时间特性的要求很高,所以应将通信任务设为高优先级。
else N1++; //在绿灯持续时间内对通过车辆计数
本系统设定了6种功能选项:4个主车道的绿灯窗口时间调节选项、手动/自动操作模式切换选项以及违章记录查询选项。这6项功能,可以通过按功能键进行切换。
os_wait(100ms);
埋设在各车道安全线前方路面下的环形线圈传感器与振荡器匹配,形成一定频率的周期信号。该信号经施密特整形电路转化为脉宽信号后可作为计数脉冲。当有车辆通过该环形线圈时,线圈磁场发生变化,从而导致计数脉冲数量的变化。将100ms时间内没有车通过时的频率计数作为基准计数Base,实际计数为Num。当NumBase》0时,就可判定有车辆通过。
动态车辆检测电路结构如图3所示。
void job2()_task_job2{
(3)键盘处理任务
if(t1==0)
2 系统软硬件设计
1a、1b、3c、2p转红色显示;
os_delete_task(job4);} //删除显示任务
(9)紧急通行任务
各计数器恢复初值;
}
若在初始情况下按下功能键,则进入6个功能项。再次按下功能键,则在这6个功能项之间进行切换;若按下的是确定键,则创建相应功能项所定义的任务。在任何情况下按下紧急通行键,将创建紧急通行任务。
os_wait(1000ms); //1s刷新
}
本系统硬件上采用上位机和下位机设计,其中下位机四个,均采用AT89C52单片机,分别控制图2所示的四个组合。AT89C52单片机具有 MCS-51内核,片内有8KB Flash、256字节RAM、6个中断源、1个串行口、最高工作频率可达24MHz,完全可以满足本系统的需要。
判断是哪个键;
}
以控制1a-1b-3c-4c-2p组合的下位机为例说明。
读取车辆检测电路信息,通过判断给flag1、flag2、flag3、flag4赋值;
}
if(FLAG1-flag1==1||FLAG2-flag2==1||FLAG3-flag3==1||FLAG4-flag4=1) //若某一车道有车通过
os_send_signal(job3);
while(1){