单片机课程设计:交通灯控制!

如题所述

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P3^0; //东西向指示灯
sbit YELLOW_A=P3^1;
sbit GREEN_A=P3^2;
sbit RED_B=P3^3; //南北向指示灯
sbit YELLOW_B=P3^4;
sbit GREEN_B=P3^5;
sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
//延时倍数,闪烁次数,操作类型变量
uchar Flash_Count=0,Operation_Type=1,LEDsng,LEDsns,LEDewg,LEDews,discnt;
uint Time_Count=0,time;
uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void displaysn()
{
LEDsng=((time-Time_Count)/20)%10;
LEDsns=((time-Time_Count)/20)/10;
LEDewg=0x10;
LEDews=0x10;
}
void displayew()
{
LEDewg=((time-Time_Count)/20)%10;
LEDews=((time-Time_Count)/20)/10;
LEDsng=0x10;
LEDsns=0x10;
}
//定时器0 中断函数
void T0_INT() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
switch(Operation_Type)
{
case 1: //东西向绿灯与南北向红灯亮
if((Time_Count%20)==0)displayew();
RED_A=0;YELLOW_A=0;GREEN_A=1;
RED_B=1;YELLOW_B=0;GREEN_B=0;
if(++Time_Count!=time) return;
Time_Count=0;
Operation_Type=2;
break;
case 2: //东西向黄灯开始闪烁,绿灯关闭
LEDewg=0x0;
LEDews=0x0;
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_A=~YELLOW_A;GREEN_A=0;
if(++Flash_Count!=6) return; //闪烁
Flash_Count=0;
Operation_Type=3;
break;
case 3: //东西向红灯与南北向绿灯亮
if((Time_Count%20)==0)displaysn();
RED_A=1;YELLOW_A=0;GREEN_A=0;
RED_B=0;YELLOW_B=0;GREEN_B=1;
if(++Time_Count!=time) return;
Time_Count=0;
Operation_Type=4;
break;
case 4: //南北向黄灯开始闪烁,绿灯关闭
LEDsng=0x0;
LEDsns=0x0;
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_B=~YELLOW_B;GREEN_A=0;
if(++Flash_Count!=6) return; //闪烁
Flash_Count=0;
Operation_Type=1;
break;
}
}
void t1_isr() interrupt 3
{
TR1=0;
TH1=(65536-3000)/256;
TL1=(65536-3000)%256;
TR1=1;
switch(discnt)
{
case 0:
P2=0x02;
P0=ledtab[LEDewg];
break;
case 1:
P2=0x01;
P0=ledtab[LEDews];
break;
case 2:
P2=0x08;
P0=ledtab[LEDsng];
break;
case 3:
P2=0x04;
P0=ledtab[LEDsns];
break;
default:discnt=0;break;
}
discnt++;
discnt&=0x03;
}
void delay()
{
uint i;
for(i=0;i<1000;i++);
}
//主程序
void main()
{
TMOD=0x11; //T0 方式1
EA=1;
ET0=1;
TR0=1;
TH1=(65536-3000)/256;
TL1=(65536-3000)%256;
TR1=1;
ET1=1;
time=120;
Time_Count=100;
Time_Count=0;
Operation_Type=1;
while(1)
{
if(KEY1==0) //按一下加1S
{
delay();
if(KEY1==0)
{
while(KEY1==0);
TR0=0;
time+=20;
LEDsng=(time/20)%10;
LEDsns=(time/20)/10;
LEDewg=0x10;
LEDews=0x10;
}
}
if(KEY2==0) //按一下减1S
{
delay();
if(KEY2==0)
{
while(KEY2==0);
TR0=0;
time-=20;
if(time==0)time=20;
LEDewg=(time/20)%10;
LEDews=(time/20)/10;
LEDsng=0x10;
LEDsns=0x10;
}
}
if(KEY3==0) //启动
{
delay();
if(KEY3==0)
{
while(KEY2==0);
TR0=1;
Time_Count=0;
}
}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

跪求,单片机交通灯控制设计心得体会.
1、通过这次课程设计,加强了我们动手、思考和解决问题的能力。在整个设计过程中,我们通过这个方案包括设计了一套电路原理和PCB连接图,和芯片上的选择。这个方案总共使用了74LS248,CD4510各两个,74LS04,74LS08,74LS20,74LS74,NE555定时器各一个。2、在设计过程中,经常会遇到这样那样的情况,...

十字路口交通灯控(单片机 课程设计)制
用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。东西向通行时间为80s,南北向通行时间为60s,缓冲时间为3s。二、设计原理利用定时器T0产生每10ms一次的中断,每100次中断为1s。对两个方向分别显示红、绿、黄灯,已经相应的剩余时间即可。值得注意的是,需要意识到,A方向红灯时间=B...

单片机控制的交通灯
题目 交通灯控制系统的设计 一、课程设计的目的与要求 1、课程设计目的: (1)进一步理解和消化书本知识,运用所学知识和技能进行简单的设计。 (2)通过课程设计提高应用能力,分析问题和解决问题的能力。 (3)培养查阅资料的习惯,训练和提高自学,独立思考的能力。 2、课程设计要求 交通灯控制系统的...

基于单片机的交通信号灯模拟控制系统设计
;2位LED数码管显示程序:P0口接数码管段,P2口接数码管位。 P3口接键盘,P1口接发光二极管 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 000BH LJMP T0INT ORG 0013H LJMP INT1P ORG 001BH LJMP CTC1 ORG 0100H MAIN: LCALL CSHIH ;初始化 LOOP: LCALL ...

基于80c51单片机的交通灯课程设计汇编语言编程
程序流程如下:开始:绿灯 东西方向南北方向的红灯 延迟30秒 东西方向绿灯“南北方向的红灯已关闭 东西方向的,黄色的光的 南北方向的,黄色的光 BR \/> 5秒延时的东西方向的黄色指示灯熄灭南北方向 黄色指示灯熄灭 的方向,南北方向20秒的延迟一个南北方向绿灯东西方向红灯 绿灯熄灭红灯熄灭东西方向 一些...

单片机交通灯设计,初始状态东西南北都是红灯',状态1南北绿灯,东西...
MOV R3,#0EEH ;主干道黄灯亮,支干道红灯亮 MOV P2,R3 LJMP L2 ;长跳跃(64K内)L1: MOV R7,#20 ;主干道延时20S MOV R3,#0F3H ;主干道红灯亮,支干道绿灯亮 MOV P2,R3 L2: DJNZ R6,LOOP ;将寄存器的内容减1,不等于0则跳至rel所指的相关地址 MOV A,21H CJNE A,#01H,L3 ...

跪求单片机89C51控制交通灯的课程设计
三 硬件设计 1 设计思路 AT89C52是一个低电压,高性能CMOS 8位单片机, 可以用来做单片机流水灯、跑马灯。。。等实验 电路原理图见下图1,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高...

MSC-51单片机交通灯论文
1.1 交通灯设计方案选择与论证: 3 1.2设计要求及目的: 3 1.2.1基本要求: 3 1.2.2提高要求: 3 1.2.3设计目的: 4 1.3交通灯控制系统的简单说明: 4 2 系统总体方案及硬件设计 5 2.1 硬件电路各元件介绍: 5 2.1.1核心芯片AT89C51单片机的说明 5 2.1.2两位八段式数码管 7 ...

单片机的交通灯课程设计,希望大神能帮我!
include<reg51.h> define uint unsigned int define uchar unsigned char define red (~0x01)define yellow (~0x02)define green (~0x04)define left (~0x08)define nbred (~0x10)define nbyellow (~0x20)define nbgreen(~0x40)define nbleft (~0x80)uint num2;uchar dx_js,nb_js;uchar...

交通灯控制系统设计的毕业论文
1.1课程设计的目的 设计一个单片机控制的交通信号灯控制系统设计,从而锻炼自己的动手能力,深入了解一下交通灯的工作原理。综合应用单片机原理、微机原理、微机接口技术等课程方面的知识,熟练掌握单片机仿真系统的使用方法,达到提高综合应用相关知识的能力,掌握单片机系统设计全部设计过程的目的。1、通过单片机...

相似回答