• 大小: 429KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: C/C++
  • 标签:

资源简介

交通灯控制系统,附实验要求及图纸 利用单片机控制十字路口的红绿黄灯交替点亮和熄灭,并且用4只七段LED数码管(不能使用BCD数码管)显示十字路口两个方向的剩余时间。要求能用按键设置两个方向的通行时间(绿灯点亮的时间)和暂缓通行时间(黄灯点亮的时间),系统的工作符合一般交通灯控制要求。

资源截图

代码片段和文件信息

#include “at89x51.h“		 
#include “control.h“    //用于显控制数码管示的函数

int EWNowCount;    //东西向的显示秒数
int NSNowCount; //南北向德显示秒数
int temp ;    // 临时变量,用以判断路灯转换条件及赋给count的值
unsigned int num;   //计时次数,每4000次为一秒
unsigned char delay_time;      //控制闪烁的延时
unsigned char edit;    //可设置红绿灯初始值
unsigned char setClicks; //保存set键的按下次数
unsigned char FlashChange; //东西向与南北向计时器转换 
char add;                //加或者减后的值
int EWGreenDef = 60 ;    //东西向的默认值
int EWYellowDef = 4 ;
int EWRedDef = 44 ;
int NSGreenDef  = 40 ;    //南北向的默认值
int NSYellowDef = 4 ;
int NSRedDef  = 64 ;
int EWGreen;
int EWYellow;    //定义六个变量 ,用来读秒
int EWRed;
int NSGreen;
int NSYellow;
int NSRed ;
int Sum1 ;   //  EWGreenDef +EWYellowDef+ EWRedDef
int Sum2 ;   //   EWGreenDef+EWYellowDef
int Sum3 ;   //  NSGreenDef+NSRedDef
unsigned char n;   //用其值来判断是否为长按键

void T0_INT(void) interrupt 1 /*定时器T0,控制红绿灯的转换 */    
{
num++;
Sum1 = EWGreenDef +EWYellowDef+ EWRedDef;
Sum2 = EWGreenDef+EWYellowDef;
Sum3 = NSGreenDef+NSRedDef ;
if( num ==4000 ) /*1s = 0.25ms *4000 */ 
{

if(temp<=EWGreenDef) /* 东西向绿灯读秒 */ 
{
EWNowCount = EWGreen;
EWGreenLight();
EWGreen--;
}
if(temp<=NSRedDef)    /* 南北向红灯灯读秒 */ 
{
NSNowCount = NSRed;
NSRedLight();
NSRed--;
}
if(temp<=Sum2 && temp>EWGreenDef)        /* 东西向黄灯读秒 */  
{
EWNowCount = EWYellow;
EWYellowLight();
EWYellow--;
}
if(temp<=Sum3 && temp>NSRedDef) /* 南北向绿灯读秒 */ 
{
NSNowCount = NSGreen;
NSGreenLight();
NSGreen--;
}
if(temp<=Sum1+2 && temp > Sum2) /* 东西向红灯读秒 */ 
{
EWNowCount = EWRed;
EWRedLight();
EWRed--;
}
if(temp<=Sum1+2 && temp > Sum3) /* 南北向黄灯读秒 */ 
{
NSNowCount = NSYellow;
NSYellowLight();
NSYellow--;
}
if(EWGreen<0)  EWGreen = EWGreenDef;  /* 重新装载初值 */ 
if(EWYellow<0)  EWYellow = EWYellowDef;
if(EWRed<0)  EWRed = EWRedDef;
if(NSGreen<0)  NSGreen = NSGreenDef;
if(NSYellow<0)  NSYellow = NSYellowDef;
if(NSRed<0)  NSRed = NSRedDef;

temp++;
if(temp>Sum1) temp = 0;

num=0;
}

}

void T1_INT(void) interrupt 3 /*  定时器 T1控制长按键  */  
{
 if(P0_1==0 || P0_0==0) n++;
 if(P0_1==1 && P0_0==1) 
 {
  n=0;

 }

}

unsigned char getKey(void)      /*  判断哪个键被按下并返回键值   */
{
unsigned char key ;
if(P0_0 == 0 || P0_1==0 || P3_3==0)
{
delay_ms(10);
if(P0_0==0) /* add键 */ 

key=2;

while(!P0_0);

if(n<100) add++;
if(n>100)
add=add+10;
if(add>=99) add=99;

}

if(P0_1==0) /* decrease键 */ 

key=3;
TR1 = 1;
while(!P0_1);
if(n<100) add--;
if(n>100)
add=add-10;
if(add<=0) add = 0;
}

if(P3_3==0) /* set键 */ 
{
while(!P3_3) ;
key = 1 ;
setClicks++;

}
   
}
else key=0; /* 无键按下 */ 
return key;
}

void run(void)   /*根据键值,实现相应的功能(设置,加或减) */
{

unsi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1797  2010-06-11 07:14  C51\Control.h

     文件       7375  2010-06-11 07:14  C51\main.c

     文件      22171  2010-06-11 07:15  C51\main.LST

     文件      23005  2010-06-11 07:15  C51\main.OBJ

     文件      18476  2010-06-11 07:15  C51\S18

     文件       4794  2010-06-11 07:15  C51\S18.hex

     文件         40  2010-06-11 07:15  C51\S18.lnp

     文件      26519  2010-06-11 07:15  C51\S18.M51

     文件       1839  2010-06-11 07:15  C51\S18.Opt

     文件      98610  2010-06-11 07:15  C51\S18.plg

     文件       2190  2010-06-11 03:44  C51\S18.Uv2

    .......      1840  2010-06-11 07:15  C51\S18_Opt.Bak

    .......      2190  2010-06-04 03:52  C51\S18_Uv2.Bak

     文件       6376  2005-03-22 15:22  C51\STARTUP.A51

     文件      14076  2010-06-11 07:15  C51\STARTUP.LST

     文件        758  2010-06-11 07:15  C51\STARTUP.OBJ

     文件     129869  2010-06-11 06:49  capture\at89c51.jpg

     文件     187865  2010-06-11 06:49  capture\display.jpg

     文件     302760  2010-06-11 06:48  capture\picture1.jpg

    ..A.SH.     16896  2010-06-11 08:46  capture\Thumbs.db

     文件     116736  2010-05-23 10:19  考察项目.ppt

     文件     113536  2010-06-09 17:11  ISIS设计图\Last Loaded s.DBK

     文件     113536  2010-06-09 18:16  ISIS设计图\s.DSN

     文件        768  2010-06-11 06:50  ISIS设计图\s.PWI

     目录          0  2010-06-11 08:49  C51

     目录          0  2010-06-11 08:00  capture

     目录          0  2010-06-17 17:24  ISIS设计图

----------- ---------  ---------- -----  ----

              1214022                    27



............此处省略0个文件信息

评论

共有 条评论