Interfacing seven segment display LCD and 8051 microcontroller

Published May 02, 2021
 3 hours to build
 Advanced

this project is designed and implemented to control the meeting room or conference status using 80C51 microcontroller. LCD, LEDs and seven segment display interfaced together with AT89C51 to show meeting room or any other conference status , to indicate exact number of people who are entering and leaving the meeting room . In place of using PIR sensor I used pushbuttons so that I can test it manually, in the update version of project we will replace pushbuttons with PIR sensor.

display image

Components Used

LCD 16x2 Display Module
LCD16x2 has two lines with 16 character in each line. LCD16x2 is generally used for printing values and string in embedded application.
1
8051 AT89c51
8051 AT89c51
1
Seven 7 Segment Display
Seven 7 Segment Display
1
Description
#include <reg51.h>
sbit rs=P3^0;
sbit rw=P3^1;
sbit en= P3^2;
sbit  sw0= P3^3;
sbit  sw1= P3^4;
sbit  led0= P3^5;
sbit  led1= P3^6;
sbit  led2= P3^7;

void msdelay(void);
void delay(unsigned int);
void cmd(unsigned char);
void dat(unsigned char);

void main(void)
{
	unsigned int number[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
	unsigned char ch[]="room is full";
	unsigned char ch1[]="keep entering";
	unsigned char ch2[] ="ROOM IS EMPTY";
	unsigned int k,s;
	P1=0xC0;
	 while(1){
 if (sw0==0 && s<9)	 
 { 
     s++;
	   cmd(0x01);
	   P1= number[s];
	   msdelay ();
	   if (s==9)
			 {
	   cmd(0x80);
	   cmd(0x0c);
	   cmd(0x06);
			for(k=0;ch[k]!='\0';k++)
	   dat(ch[k]);
		 led0=0;
		 led1=1;
		 led2=1;			 
		}
		else
		{
	   cmd(0x80);
	   cmd(0x0c);
	   cmd(0x06);
			for(k=0;ch1[k]!='\0';k++)
	   dat(ch1[k]);
	  led1=0;	
    led0=1;
    led2=1;	
		}
 }
 else if(sw1==0 && s>0)
 {
	 s--;
	 cmd(0x01);
	 P1 = number[s];
	 msdelay (); 
	   if (s==0){
	   cmd(0x80);
	   cmd(0x0c);
	   cmd(0x06);
			for(k=0;ch2[k]!='\0';k++)
	   dat(ch2[k]);
			led0=1;
			led1=1;			 			 
	  	led2=0;
		}
		else 
		{	
	    cmd(0x80);
	   cmd(0x0c);
	   cmd(0x06);
			for(k=0;ch1[k]!='\0';k++)
	   dat(ch1[k]);
			led0=1;
			led1=0;
			led2=1;
		}
  }
 else if (s==0)
 {
	   cmd(0x80);
	   cmd(0x0c);
	   cmd(0x06);
			for(k=0;ch2[k]!='\0';k++)
	   dat(ch2[k]);
			led0=1;
			led1=1;
	    led2=0;
   }
 }
}
void delay(unsigned int t)
{
	unsigned int i,j;
	en=1;
	for(i=0;i<t;i++)
	for(j=0;j<150;j++);
	en=0;
}
void msdelay()
{
	unsigned  int a,b;
 for(a = 0; a <50; a++)
	{
    for(b = 0; b <50; b++)
		;
	}
}
void cmd(unsigned char ch)
{
    
	rs=0;
	rw=0;
	P2=ch;
	delay(20);
}
void dat(unsigned char ch)
{
	
	rs=1;
	rw=0;
	P2=ch;
	delay(20);
}
Codes

Downloads

project schematic Download
Comments
Ad