SOFTWARE: KEIL MICRO VISION 4
SIMULATOR: PROTEUS 8.0
CIRCUIT DIAGRAM:
CIRCUIT WORKING:
In this circuit ,I have used three traffic light. signal 1(P2.0 to P2.2) and signal 2 (P2.3 to P2.5) are connected to port 2 and signal 3(P3.0 to P3.2) is connected to port 3.Traffic light gets turned on as per the sequence provided in the program.
PROGRAM:
#include<reg51.h> //signal 1 sbit tl1r = P2^0; // red sbit tl1o = P2^1; // orange sbit tl1g = P2^2; // green //signal 2 sbit tl2r = P2^3; // red sbit tl2o = P2^4; // orange sbit tl2g = P2^5; // green //signal 3 sbit tl3r = P3^0; // red sbit tl3o = P3^1; // orange sbit tl3g = P3^2; // green void delay(int t); void trafficlight(void); void main() // main program { P2=0x00; // turned off the lights P3=0x00; // turned off the lights while(1) { trafficlight(); } } void delay(unsigned long int t) // delay routine { while(t>0) { unsigned long int i; for(i=1;i<10*1275;i++); t--; } } void trafficlight(void) // traffic light system program { P2= 0x11; // traffic signal control data P3= 0x04; /* tl1r=1; // signal 1 tl1o=0; tl1g=0; tl2r=0; // signal 2 tl2o=1; tl2g=0; tl3r=0; // signal 3 tl3o=0; tl3g=1; */ delay(100); // delay P2= 0x0c; // traffic signal control data P3= 0x02; /* tl1r=0; // signal 1 tl1o=0; tl1g=1; tl2r=1; // signal 2 tl2o=0; tl2g=0; tl3r=0; // signal 3 tl3o=1; tl3g=0; */ delay(100); // delay P2= 0x22; // traffic signal control data P3= 0x01; /* tl1r=0; // signal 1 tl1o=1; tl1g=0; tl2r=0; // signal 2 tl2o=0; tl2g=1; tl3r=1; // signal 3 tl3o=0; tl3g=0; */ delay(100); // delay }
PROGRAM DESCRIPTION:
I have provided logic '1' to turn on the required signal light and logic '0' to turn off the required signal light on the respective pins of port 2 and port 3.Delay is provided in between to provide synchronization between the signals.
Comments