成都理工大学毕业论文 — 交通灯
图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