城市交通灯模拟系统(哈尔滨工程大学学士学位论文) - 图文(7)

2019-06-11 15:13

NY15≤e<20?路口1直行等待电容式智能液位测量仪设计 NP1=0x00; //给锁存器送全低电平 Y路口2直行20≤e<35?P20=1; //开数码管位锁存器 P20=0; //关数码管位锁存器 NP25=1; //开二极管位锁存器 35≤e<40?P25=0; //关二极管位锁存器 delay(5000); //延时子程序调用 } 路口3直行Y40≤e<55?路口2直行等待 以上程序即可实现对所有数码管和发光二极管的点亮。可以用于对数码管和二极管的损坏检查。 4.4 数据处理函数 55≤e<60?Y路口3直行等待在本系统中所谓数据处理,一共包括两个部分。第一就是转向各个小的数的显示的判断条件处理函数,另一个就是将数据分开成个位、十位以用来将数据传递给数码管让其显示的数据处理。下面就来分别介绍各个模块的数据处理。 Y路口4直行60≤e<75?N(1)判断条件数据处理。在本系统中路口1的通行时间是a,路口2的通行时间是b,路口3的通行时间是c,路口4的通行时间是d,各个路口通行时间的初始值是20秒,以往的不具有时间调节功能的城市交通灯系统往往各路口通行时Y75≤e<80?路口4直行等待间相同。也就是说对其进行判断的标注就是看总的计数时间是否为单个路口通行N时间的倍数即可。如果各路口的通行时间为20秒,判断模块工作流程图如图4.4所示. e=0图4.4 判断模块工作流程图

程序语句如下:

if(e<15) { 路口1直行 } else if(e>=15&&e<20) { 路口1直行等待} else if(e>=20&&e<35) { 路口2直行} else if(e>=35&&e<40) { 路口2直行等待 } else if(e>=40&&e<55) 25

{ 路口3直行} else if(e>=55&&e<60) { 路口3直行等待} else if(e>=60&&e<75) { 路口4直行} else if(e>=75&&e<80) { 路口4直行等待}

以上程序是常用的各路口通行时间固定的程序,程序中的数据处理是第二种要介绍的数据处理,在本节中要介绍,首先还是先介绍第一种数据处理。这次的设计城市交通灯模拟与控制系统是4个路口通行时间可调的系统,程序设计不能用上面所说的,必须对数据进行处理。四个路口的通行时间分别为a,b,c,d。计时器时间累加为e。所以当e

26

A+b+c+d-5≤e

程序语句如下:

if(e

else if(e>=a-5&&e

else if(e>=a&&e

else if(e>=a+b-5&&e

else if(e>=a+b&&e=a+b+c-5&&e=a+b+c&&e=a+b+c+d-5&&e

时进入指定的按键程序,从而实现系统的正常工作。在前面硬件部分已经介绍了按键的硬件组成,这里简单描述一下,本系统中共有4个按键,分别为k1,k2,k3,k4,分别连接的是P0.0,P0.1,P0.2,P0.3.根据设计要求按键k1为路口时间加,即每按一次k1相应路口的绿灯通行会加1秒;按键k2为路口时间减,即每按一次k2相应路口的绿灯通行时间会减1秒;按键k3为路口切换按钮,即在时间调节模式下每按一次k3会改变时间调节的路口;按键k4为模式切换按钮,按一次k4系统会工作在禁止通行工作模式,再按一次k4会进入夜间模式,再按一次k4会进入时间调节模式,再按一次k4会进入正常工作模式。本系统中按键扫描程序一共设计了两个子程序,分别为 key3()和key4()。key4()子程序主要是用来切换模式的,key3子程序则是为了调节时间。

在介绍着两个子程序之前先介绍一些按键消抖。当工作人员按下任意一个按钮时,它的电平都有一个抖动时间,很短,但是单片机能够识别出来,并认为已经按了多次按钮,如此一来系统便不能正确按照操作者的意图工作,此时就需要设计按键消抖程序。按键消抖就是在确定按键按下之后停止一段时间再对系统进行扫描,然后再确定按钮已经松开之后,停止一段时间再对其进行扫描,停止时间很短。按键消抖流程图如图4.5所示:

图4.5 按键消抖流程图

针对本系统设计的按键消抖程序如下: if(ki==0) //按键ki被按下

{ delay(100); //延时一段时间

if(ki==0) //再对其进行扫描,如果ki确实被按下 { 语句1 //执行语句1 }

while(ki!=1); //如果ki按下程序会在此处等待,直到ki松开 delay(100); //延时一段时间 }

以上所述即为本系统所使用的按键消抖程序,下面介绍key3(),key4()子程序。

(1) 时间调节程序key3()设计,时间调节流程图如图4.7.时间调节程序用来调节各

路口的通行时间。由于4个路口的时间调节程序基本相同,在这里就简要介绍一

28

g=5?YNg=1电容式智能液位测量仪设计 任意三个路口通行时间 之和小于100?Y下路口1的时间调节程序。路口时间调节流程图如图4.6所示: 结束 图4.7 路口时间调节流程图

对一个路口时间调节程序如下:

void key3() { if(k3==0)

{ delay(100);

if(k3==0) //按键消抖

}

{ g++; //g初始值为0,g的改变可以用于进行路口选择判断} while(k3!=1);

delay(100); //键盘消抖 while(g==1)

{

数码管显示,二极管显示 if(k1==0) //检查k1是否被按下

{ delay(100);//延时程序调用 if(k1==0) ++a; //路口1通行时间加1秒 while(k1!=1); delay(100); //消抖 }

if(k2==0) //检查k2是否被按下 { delay(100); //延时子程序调用 if(k2==0) --a; //路口1通行时间减1秒 while(k2!=1); delay(100);//消抖 }

以上程序可以用来对路口1进行时间调节,其余路口时间调节方式与以上所述路口1的调节方式相同,不再敖述。 (2)模式切换子程序key4()设计。模式切换子程序的设计需要满足系统的要29


城市交通灯模拟系统(哈尔滨工程大学学士学位论文) - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:骑马与砍杀:三国无双坐骑,神奇与装甲秘籍代码

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: