1、设计一个包括2个按键(K1、K2)、1个红色LED指示灯(RLED)、1个黄色LED指示灯(YLED)、1个绿色LED(GLED)指示灯的模拟交通灯控制单片机电路,上述元件均要求接在P0口上,且单片机的晶振频率为12MHz,请完成下述内容:
(1)绘制电路原理图;
(2)单片机初始化时,三个指示灯同时闪烁2下,然后熄灭,请写出相应初始化程序;
(3)利用定时器T0完成定时50毫秒的功能,请写出相应的定时器初始化函数和中断服务函数;
(4)K1按下后,模拟开始,循环以下列方式亮灯:先红灯亮15秒,后绿灯亮30秒,在绿灯亮的最后3秒内,以闪烁方式显示,然后黄灯以闪烁方式亮3秒。请写出相应的按键函数;
(5)K2按下后,模拟结束,三个指示灯同时闪烁3下,然后全亮,请写出相应的按键函数。
附:主函数程序供参考
#include<>
sbit K1 P0^0;
sbit K2 P0^1;
sbit RLED P0^2;
sbit YLED P0^3;
sbit GLED P0^4;
main()
{
Init();//单片机初始化
Init_Timer0();//定时器初始化
while(1)
{
if(K1= =0)
M_Start();//模拟开始
if(K2= =0)
M_End();//模拟结束
}
}
晚上随手写,也未调试,权当看看
程序有不严谨地方还得调试修改
#include <REGX51.H>
#define STATUS_1S 1
#define STATUS_2S 2
#define STATUS_3S 3
#define STATUS_4S 4
#define STATUS_5S 5
#define STATUS_15S 15
#define STATUS_28S 28
#define STATUS_29S 29
#define STATUS_30S 30
unsigned char flag,status,status_temp=1,status_temp_;
sbit K1 = P0^0;
sbit K2 = P0^1;
sbit RLED = P0^2;
sbit YLED = P0^3;
sbit GLED = P0^4;
void Init(void)
{
ET0=1;
TR0=1;
RLED=0; //亮
YLED=0;
GLED=0;
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1; //灭,闪一次
YLED=1;
GLED=1;
} break;
case STATUS_2S: //1S
{
RLED=0; //亮,闪一次
YLED=0;
GLED=0;
} break;
case STATUS_3S: //1S
{
RLED=1; //灭
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
void Init_Timer0(void)
{
TMOD=0x01;
// ET0=1;
// TR0=1;
EA=1;
TH0=0X3C;
TL0=0XB0; // 未计算,偷楼上的
}
void M_Start(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //红亮
while(status_temp)
{
switch (status)
{
case STATUS_1S:
{
if(status_temp_==1)
{
YLED=0;
}
} break;
case STATUS_2S:
{
if(status_temp_==1)
{
YLED=1;
}
} break;
case STATUS_3S:
{
if(status_temp_==1)
{
YLED=0;
status_temp_=0;
}
} break;
case STATUS_15S: //15S灭,绿亮
{
RLED=1;
GLED=0;
} break;
case STATUS_28S:
{
GLED=1;
} break;
case STATUS_29S:
{
GLED=0;
} break;
case STATUS_30S:
{
GLED=1;
status=0;
status_temp_=1;
} break;
}
}
ET0=0;
TR0=0;
status=0;
status_temp=1;
YLED=1;
}
void M_End(void)
{
TH0=0X3C;
TL0=0XB0;
ET0=1;
TR0=1;
RLED=0; //亮 1次
YLED=0;
GLED=0;
while(status_temp)
{
switch (status)
{
case STATUS_1S: //1S
{
RLED=1; //灭一次
YLED=1;
GLED=1;
} break;
case STATUS_2S: //1S
{
RLED=0; //亮二次
YLED=0;
GLED=0;
} break;
case STATUS_3S: //1S
{
RLED=1; ////灭二次
YLED=1;
GLED=1;
} break;
case STATUS_4S: //1S
{
RLED=0; ////亮三次
YLED=0;
GLED=0;
} break;
case STATUS_5S: //1S
{
RLED=1; ////灭三次
YLED=1;
GLED=1;
status_temp=0;
} break;
}
}
status_temp=1;
ET0=0;
TR0=0;
}
main()
{
Init();//单片机初始化
Init_Timer0();//定时器初始化
while(1)
{
if(K1==0)
M_Start();//模拟开始
if(K2==0)
M_End();//模拟结束
}
}
void interrupt_time0() interrupt 1 //核对头文件,一致就好
{
TH0=0X3C;
TL0=0XB0;
flag++;
if(flag==20)
{
status++;
flag=0;
}
}
C51单片机程序设计题,要求用C语言做,模拟交通灯控制单片机电路,答案要...
晚上随手写,也未调试,权当看看 程序有不严谨地方还得调试修改 include <REGX51.H> define STATUS_1S1 define STATUS_2S2 define STATUS_3S3 define STATUS_4S4 define STATUS_5S5 define STATUS_15S15 define STATUS_28S28 define STATUS_29S29 define STATUS_30S30 unsigned char flag,status,sta...
c51单片机c语言交通灯的程序
使用C语言为C51单片机编写交通灯控制程序是完全可行的,通过合理地设置定时器、I\/O端口以及逻辑控制,可以实现交通灯的定时切换和状态显示。接下来,我将详细解释如何为C51单片机使用C语言编写交通灯控制程序。首先,我们需要了解C51单片机的基本结构和资源,包括其I\/O端口、定时器\/计数器等。通常,交通灯系...
c51单片机c语言交通灯的程序
\/\/主程序 void main(){ TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;EX1=1;logo();P2=0Xc3;\/\/ 开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5;while(1){ key(); \/\/调用按键扫描程序 display(); \/\/调用显示程序 Buzzer();} } \/\/函数的定义部分 void key()...
求用C语言编写的交通灯程序,C51单片机控制,无左转右转
define uint unsigned int define uchar unsigned char define ON 0 \/\/0的时候灯亮 define OFF 1 \/\/1的时候灯亮 \/\/管脚定义 \/\/南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒 \/\/东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒 sbit PortDX_Yellow = P1^0; \/\/东西方向黄灯 sbit...
请问单片机C51用C语言怎么编这个例子
sbit K2=P2^1;void delay(uchar count){uchar i;for(i=0;i<count;i++){TMOD=0X01;TH0=(65536-50000)%256;TL0=(65536-50000)\/256;TR0=1;while(!TF0);TF0=0;} void keyscan(){ if(K1==0)delay(1);if(K1==0){NUM++;if(NUM==3);{NUM=0;} } switch(NUM){case 1:{delay...
基于51单片机控制交通灯的电路图与C语言程序
四、软件程序(C语言)以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。\/\/***\/\/ \/\/程序名:十字路口交通灯控制 \/\/编写人:黄庭剑 \/\/初写时间:2009年1月2日 \/\/程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2...
c语言模拟交通灯控制
通过对模拟交通灯控制系统的制作,掌握定时器和中断系统的综合应用,进一步熟练软、硬件联调方法。二、 任务要求设计并实现单片机交通灯控制系统,将东西方向称为A方向、南北方向称为B方向。实现以下三种情况下的交通灯控制:1. 正常情况下双方向轮流点亮交通灯,交通灯的状态如表1所示。2. 特殊情况时,A道放行。3. 有...
用单片机模拟控制交通灯
你也可到“淘宝网”上找找:“51单片机交通灯控制系统C语言设计源程序送仿真图”,有现成的,有实物图、仿真、原理图、源程序等,这款交通灯有以下功能。1. 系统除基本交通灯功能外;2. 还具有倒计时、显示时间设置;3. 紧急情况处理、LED信息显示;4. 时间可以根据具体情况手动控制等功能。
c51单片机问题C语言
单片机支持汇编编程的C51编程。1、汇编编程,传统的汇编代码。缺点:可读性不强,优点:代码精简 2、C51编程,使用专用C语言编程。缺点:代码不精简,优点:可读性强。KeilC和IAR等编译软件,同时支持C51和汇编代码。
基于51单片机的交通灯控制设计
sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;uchar Flash_Count=0,Operation_Type=1; \/\/闪烁次数,操作类型变量 《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例 5 上海师范大学信息与机电工程学院—倪继锋 \/\/延时 void DelayMS(uint x){ uchar i;while(x--) for(i=0;i<120;i+...