Sei sulla pagina 1di 5

Fastest Finger First Mini Project using 8051

Microcontoller
Couch ModePrint It

The quiz buzzer systems are widely used in school, colleges and TV programs. The team
which presses the buzzer earliest is entitled to give the answer. At times it becomes very
difficult to identify which team has pressed the button when two teams press the buzzer
within a very small time gap. In such cases the decision can be biased due to human
intervention. The quiz buzzer presented here takes care of the aforesaid problem. This
quiz buzzer disables the other inputs as soon as the first buzzer is pressed. This quiz
buzzer can be used for a maximum of eight teams. It is build around 8051
microcontroller (AT89C51).

This quiz buzzer system has eight input pins corresponding to eight teams. The output is
displayed on a seven segment display(interfaced with microcontroller), which shows the
number corresponding to the team which has pressed the button first. A buzzer is also
sounded for a small duration to give an acoustic alarm. The connections of the seven
segment, input pins and output pins is shown in the circuit diagram.
For more details, refer seven segment interfacing . There are a total of nine input pins.
Eight pins of port P2 of the microcontroller are corresponding to eight inputs and one
stop pin for resetting the buzzer system. On the output side a seven segment is
connected to display the corresponding output number. There is also a provision for
sounding a buzzer for a small duration.

When the system starts, the seven segment does not displays any output. The
microcontroller keeps scanning the input pins. As soon as any one of the inputs is
pressed, the buzzer sounds for a small duration. The seven segment displays the number
corresponding to the input pressed. Now even if any other input pin is pressed, there
will be no effect on the system till the time the stop pin is pressed to reset the system.
Proteous Software simulation:

C-programming code for above Project is given Below:

#include<reg51.h>
unsigned int digi_val[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x10};
// Hex value corresponding to the digits 0 to 9
sbit output_on_pin = P3^0;
// Enable pin to enable the seven segment.
sbit stop_pin = P3^1;
// Stop pin to reset the buzzer.
sbit buzzer_pin=P0^0;
// Buzzer pin to sound the buzzer.
int flag;
void delay()
// Time delay function
{
int i,j;
for(i=0;i<200;i++)
for(j=0;j<1275;j++);
}
void display(unsigned int current_dig)
// Function to display the resultant digit on
the seven segment and sound the buzzer.
{
P2=digi_val[current_dig];
output_on_pin = 1;
buzzer_pin=0;
delay();

buzzer_pin=1;
while(stop_pin != 0);
}
void buzzer() //Function to monitor the input switches
{
flag = 0;
while(1)
{
while (P1 == 0xFF);
while (P1 == 0xFE)
{
flag = 1;
display(1);
}

//Check if switch 1 is pressed

while (P1 == 0xFD)


{
flag = 2;
display(2);
}

//Check if switch 2 is pressed

while (P1 == 0xFB )


{
flag = 3;
display(3);
}

//Check if switch 3 is pressed

while (P1 == 0xF7 )


{
flag = 4;
display(4);
}

//Check if switch 4 is pressed

while (P1 == 0xEF )

//Check if switch 5 is pressed

{
flag = 5;
display(5);
}
while (P1 == 0xDF)
{
flag = 6;
display(6);
}

//Check if switch 6 is pressed

while (P1 == 0xBF )


{
flag = 7;
display(7);
}

//Check if switch 7 is pressed

while (P1 == 0x7F )


{
flag = 8;
display(8);
}

//Check if switch 8 is pressed

P1 = 0xFF;
stop_pin = 1;
output_on_pin = 0;
}
}
void main()
{
output_on_pin=0;
stop_pin = 1;
P1 = 0xFF;
buzzer();

Potrebbero piacerti anche