用四盏双色灯模拟,P1口控制;南北红灯亮30秒,同时东西绿灯亮25秒,绿灯闪烁3次(间隔为1秒),然后黄灯亮2秒;然后东西与南北互换一下;重复;#include "reg51.h" //#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 PortDX_Red = P1^1; //东西方向红灯sbit PortDX_Green = P1^2; //东西方向绿灯sbit PortNB_Yellow = P1^3; //南北方向黄灯sbit PortNB_Red = P1^4; //南北方向红灯sbit PortNB_Green = P1^5; //南北方向绿灯void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz){uint ti;while(ms--){for(ti=0;ti<112;ti++){}//112}}/*==================== 主函数 ====================*/void main(void){delay(400); //开机延时400mswhile(1){PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮3秒PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮3秒delay(3000);PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮28秒PortDX_Yellow = OFF;PortDX_Red = OFF;PortDX_Green = ON ;//东西绿灯亮28秒delay(28000);PortNB_Yellow = OFF;PortNB_Red = ON ;PortNB_Green = OFF;//南北红灯亮2秒PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮2秒delay(2000);PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮1秒PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_Green = OFF;//东西黄灯亮1秒delay(1000);PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮2秒PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮2秒delay(2000);PortNB_Yellow = OFF;PortNB_Red = OFF;PortNB_Green = ON ;//南北绿灯亮38秒PortDX_Yellow = OFF;PortDX_Red = ON ;PortDX_Green = OFF;//东西红灯亮38秒delay(3800);}}1.当为黄灯时南北、东西两道同时为黄灯;以提示行人或车辆下一个灯色即将到来时间 3秒。2.当南北为红灯,南北道车辆禁止通行,时间30秒;南北道为绿灯,南北道车辆通过时间38秒 。3.当东西道绿灯,东西道车辆通行,时间为28秒;东西道为红灯,东西道车辆禁止通过时间为40秒。4.这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。
评论