电路CAD交通信号灯的设计

  • 格式:doc
  • 大小:2.39 MB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计任务和要求

1.1要求和任务

①东西与南北方向灯轮流交替工作,按照下面示意图进行。

图一循环流程图

②要求设计中所用的计数器为一个到两个,定时时间最长为4分钟。在南北向和东西向增加强行绿灯按钮,可以强制某个方向通行而另一个方向禁止。

③路口增加车辆传感器,某方向无车辆时可跳过绿灯时段。

④红绿灯时段长度做成可调的,方便设置通行的时间。

⑤增加译码显示电路,使用数码管显示倒计时。

二、方案选择与论证

2.1使用数字逻辑电路

使用数字电路需要进行计时电路以及显示电路的设计,元件规模小,电路也可靠,采用状态机方式实现也具有可操作性。

2.2选择使用51单片机控制电路

使用51单片机的优点是电路简单,作为本次设计完全具备硬件控制要求,在成本上也与数字逻辑电路相当。另外,单片机控制方便,电路修改性强,可根据具体的情况修改程序,从而达到更切合实际的效果。

综上,此次我们选择STC89C51单片控制电路实现。

三、单片机资源分配与程序设计

3.1一秒定时的实现

由于单片最长定时时间为65536us,所以无法需要计数形式的定时。我们采用方式二定时,一次定时200us,则需要重复5000次,具体定时程序如下:TMOD=0x2; //设置为采用方式二定时

TH0=0x38; //赋初值

TL0=0x38; //赋初值

设置一个变量Y,当Y=5000时,定时器溢出,则开始下一次计时。这样实现了1s的定时。

3.2控制选择设置

本次需要增加了方向传感器和强制按钮以及检测按钮,所以设计嵌套和优先级关系,还有时间调节按钮。它们关系为时间调节按钮最大,强制开关是稍次,其次是检测开关,控制循环结构的跳转,最低的是最基本的灯循环工作结构。对应程序部分如下:

i f(q1==0)

{

时间调节部分;

}

else if(q2==0)

{

南北方向强制控制部分;

}

else if(q3==0)

{

东西方向强制控制部分;

}

else

{

基本指示循环工作;

}

3.3数码管显示倒计时设计

本次采用四位数码管,基本的循环指示状态下两位数码管显示倒计时,而在调节时间是,每两位分别显示当前南北和东西的绿灯定时时间。数码管采用三极管共阳形式接法。

图二数码管驱动原理

3.4循环指示工作的实现

对于循环工作的实现,本次设计定义了两个标志a和b,共计四种状态。a=0且b=0时为东西绿灯,南北红灯;a=0,b=1时为东西绿灯闪烁,南北红灯;a=1,b=0时为东西红灯,南北为绿灯;a=1,b=1时为东西红灯,南北绿灯闪。程序实现如下

if(a==0&&b==0)

{

if(timegre1<=5)

{

a=0;b=0;

}

}

if(a==0&&b==1)

{

if(timegre1<=0)

{

a=1;b=0;

}

if(a==1&&b==0)

{

if(timegre2<=5)

{

a=1;b=1;

}

}

if(a==1&&b==1)

{

if(timegre2<=0)

{

a=0;b=0;

}

3.5时间调节的设计

针对时间的调节部分,我们采用按键形式,分别定义东西绿灯时间加和减,南北时间加和减,共计四个按键。采用扫描判断,有低电平来时,认为按键按下,对应数码管显示当前设置的时间。具体部分程序入下

if(q1==0)

{

关闭各个方向的指示灯;

if(zz==0)

{

yanshi(10); //消除抖动

i f(zz==0)

{

按键按下,执行东西方向绿灯时间加动作;

}

while(!zz) ; //等待按键的弹起

}

if(jj==0)

{

yanshi(10) ;

if(jj==0)

{

按键按下,执行东西方向绿灯时间减动作;

}

while(!jj) ;

}

if (jj2==0)

{

yanshi(10) ;

if (jj2==0)

{

按键按下,执行南北方向绿灯时间加动作;

}

while(!jj2) ;

}

if (zz2==0)

{

yanshi(10) ;

if (zz2==0)

{

按键按下,执行东西方向绿灯时间减动作;

}

while(!zz2) ;

}

dispaly2(z_timegre1 ,z_timegre2 ) ; //调用数码管显示函数,同时显示两个方向时间

}

本次设计完整的程序设计详见附录一。

3.6单片机输入输出端口分配以及基本参数定义

有以上分析,我们对单片机的输入输出端口进行分配,还针对控制部分定义

3.7实验结果分析

本次程序的编写是在keil 4实现的,程序运行过程经过了实物的具体验证,程序能够完成设计目标,达到了设计的具体要求。

四、protel原理图绘制

本次原理图绘制采用的是protel99版本软件。

具体原理图设计见附录二

五、PCB版图设计

本次PCB版图绘制采用的是protel99版本软件。

具体PCB版图见附录二

六、元件清单