交通灯控制 单片机(4)

2018-12-17 11:05

成都理工大学毕业论文 — 交通灯

图4-3 违规检测电路

16

成都理工大学毕业论文 — 交通灯

第五章 程序设计思路与流程图

5.1主程序流程图

主程序开始是运用定时器0来定时,达到准确记时,在往下走就走到程序的死循环部分,分别判断是哪一个状态,当是状态S1时,就用软件的方法启动S1,运行S1,及南北通行,东西禁止。后面S2、S3、S4与S1一样,在这过程中,如果遇到突发事件,则要进行突发事件的按键处理,当突发事件处理完后,在回到主程序,其流程图如图[5-1]所示。

开始 程序初始化 是否是状态S1 启动状态S1 是否是状态S2 启动状态S2 是否是状态S3 启动状态S3 是否是状态S4 启动状态S4 按键是否按下 按键处理 返回

图5-1主程序流程图

17

成都理工大学毕业论文 — 交通灯

部分主程序如下:

////////////////////////////主函数////////////////////////// Void main () {

t=5;

TIME_Init (); //定时器初始化 sec=COUNT_DOWN; //定时初值 while(1) {

key_scan(); //按键扫描 switch (key_flag) {

case 0:t++;if(t>=30)t=5;break;//设置时间 case 1:TR2 = 1;break; //恢复

case 2:EW_ON;P1=LED[4];TR2 = 0;break; //南北禁行,定时器停止 case 3:SN_ON;P1=LED[4];TR2 = 0;break; //东西禁行,定时器停止 }

//==========状态S1========

if( (aspect_flag == 0)&(interim_flag == 0)&(key_flag == 0) ) {

EW_ON; P1=LED[0];

P2=LED7Code[(sec-INTERIM)/10]; //东西方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED[1];

P2=LED7Code[(sec-INTERIM)]; Delay1Ms(1); P1=LED[2];

P2=LED7Code[sec/10]; //南北方向红灯 Delay1Ms(1); P2=0XFF; P1=LED[3];

P2=LED7Code[sec]; Delay1Ms(1); }

//==========状态S2========

if( (aspect_flag == 0)&(interim_flag == 1)&(key_flag == 0) ) {

if(half_sec % 2 == 1) EW_Y_ON; else EW_Y_OFF; P1=LED[0];

P2=LED7Code[sec/10]; //东西方向黄灯 Delay1Ms(1); P2 = 0XFF; P1=LED[1];

P2=LED7Code[sec]; Delay1Ms(1); P1=LED[2];

18

成都理工大学毕业论文 — 交通灯

P2=LED7Code[sec/10]; //南北方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED[3];

P2=LED7Code[sec]; Delay1Ms(1); }

//==========状态S3========

if( (aspect_flag == 1)&(interim_flag == 0)&(key_flag == 0) ) {

SN_ON; P1=LED[0];

P2=LED7Code[sec/10]; //东西方向红灯 Delay1Ms(1); P2 = 0XFF; P1=LED[1];

P2=LED7Code[sec]; Delay1Ms(1); P1=LED[2];

P2=LED7Code[(sec-INTERIM)/10]; //南北方向绿灯,少5秒 Delay1Ms(1); P2 = 0XFF; P1=LED[3];

P2=LED7Code[(sec-INTERIM)]; Delay1Ms(1); }

//==========状态S4========

if( (aspect_flag == 1)&(interim_flag == 1)&(key_flag == 0) ) {

if(half_sec % 2 == 1) SN_Y_ON; else SN_Y_OFF; P1=LED[0];

P2=LED7Code[sec/10]; Delay1Ms(1); P2 = 0XFF; P1=LED[1];

P2=LED7Code[sec]; Delay1Ms(1); P1=LED[2];

P2=LED7Code[sec/10]; Delay1Ms(1); P2 = 0XFF; P1=LED[3];

P2=LED7Code[sec]; Delay1Ms(1); } } }

19

成都理工大学毕业论文 — 交通灯

5.2.按键子程序流程图

它包含倒计时调整和紧急状态两个状态。主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。当检测到K2键按下的时候就自动返回到主程序。当出现紧急的情况的时候,按下K3或者K4就切换到紧急状态,当紧急事件处理完毕的时候,按下K2,就可以返回正常状态,流程图如图[5-2]。

K4按

K1按 进入时间调整 S3‘+’,S4‘—’ K2按 返回 K3按 循环执行S1 循环执行S3 图 5-2按键子程序流程图

图5-3 按键设置

键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在单片

20


交通灯控制 单片机(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:北关街道“三责”教育活动方案

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

马上注册会员

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