Friday 18 December 2015

Video Operation for Queue Control Systems


Circuit Design using Proteus 8 Professional




Program Queue Control Systems Using Keil uVision4

#include <reg51.h>

//**********LIBRARY ADRESS**********//
#define lcd_clear 0x01
#define return_home 0x02
#define dec_cursor 0x04
#define inc_cursor 0x06
#define display_shift_left 0x05
#define display_shift_right 0x07
#define disp_off_cursor_off 0xE0
#define disp_on_cursor_off 0x0C
#define disp_on_cursor_blink 0x0F
#define shift_left_cursor 0x10
#define shift_right_cursor 0x1C
#define first_line 0x80
#define second_line 0xC0
#define lcd_2line 0x38
#define lcd_4bit 0x28
#define lcd_goto1 lcd_command(first_line)
#define lcd_goto2 lcd_command(second_line)
#define lcd_clr lcd_command(lcd_clear)

void delay_displays(unsigned int gap);
void delay_cycle(unsigned int interval);
void send_nibble(unsigned char value);
void lcd_command(unsigned char value);
void lcd_data(unsigned char value);
void lcd_init(void);
void lcd_putc(unsigned char c);
void lcd_puts(unsigned char *txt);

//void lcd_goto(unsigned char line, unsigned char column);

//**********Port Declaration**********//
#define LCD_port P0
sbit RS = P0^1;
sbit EN = P0^2;
sbit SW1 = P0^0;
sbit SW2 = P2^0;
sbit SW3 = P2^1;

void main(void)
{

lcd_init();   

while(1)
{
unsigned char n,x,j,i,interval, ticket;
code unsigned number[] = {0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
code unsigned number1[] = {0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};
code unsigned char text1[] = "   PLEASE TAKE";
code unsigned char text2[] = "   YOUR TICKET";
code unsigned char text3[] = "    COUNTER 1  ";
code unsigned char text4[] = "    COUNTER 2  ";
   code unsigned char text5[] = "  PLEASE GO TO";

      if(SW1 == 0)
    {
ticket=i++;

for(x=0; x<ticket; x++)
   {
P1=number1[x];
    delay_displays(25);
}     
           
lcd_goto1;
lcd_puts(text1);
lcd_goto2;
lcd_puts(text2);
   
    }
 
else if(SW2 == 0)
    {
  interval=j++;

for(n=0; n<interval; n++)
   {
P1=number[n];
    delay_displays(25);
}
   
lcd_goto1;
lcd_puts(text5);
lcd_goto2;
lcd_puts(text3);
     
    }

      else if(SW3 == 0)
    {
  interval=j++;

for(n=0; n<interval; n++)
   {
P1=number[n];
    delay_displays(25);
}

lcd_goto1;
lcd_puts(text5);
lcd_goto2;
lcd_puts(text4); 
    }
}  
}
  
//**********Display Delay**********//
void delay_displays(unsigned int gap)
{
unsigned int a, b;
for(a=0; a<gap; a++)
for(b=0; b<1275; b++);
}

//**********LCD Delay**************//
void delay_cycle(unsigned int interval)
{
unsigned int c, d;
for(c=0; c<interval; c++)
{
for(d=0; d<5; d++);
}
}

//**********LCD Program**********//
void send_nibble(unsigned char value)
{
LCD_port=(LCD_port&0x0F)|(value&0x0F0);
EN=1;
delay_cycle(7);
EN=0;
LCD_port=(LCD_port&0x0F)|((value<<4)&0x0F0);
EN=1;
delay_cycle(7);
EN=0;
LCD_port=LCD_port|0X09; //AVOID LATCHUP
}

void lcd_command(unsigned char value)
{
RS=0;
delay_cycle(1);
send_nibble(value);
return;
}

void lcd_data(unsigned char value)
{
RS=1;
delay_cycle(1);
send_nibble(value);
return;
}

void lcd_init(void)
{
LCD_port =0x0F0;
lcd_command(0x33);
lcd_command(0x32);
lcd_command(lcd_4bit); // 4 bit mode
lcd_command(shift_left_cursor); // shift cursor left
lcd_command(inc_cursor); // increment cursor
lcd_command(disp_on_cursor_off); // display on cursor off
lcd_command(lcd_clear); // clear LCD
delay_cycle(20);
}

void lcd_putc(unsigned char c)
{
if(c=='\f')
lcd_command(0x01);
else if(c=='\n')
lcd_command(0xC0);
else
lcd_data(c);
}

void lcd_puts(unsigned char *txt)
{
unsigned char limit=0;
while(*txt)
lcd_putc(*txt++);

}

Monday 14 December 2015

INPUT & OUTPUT REQUIREMENT FOR QUEUE CONTROL SYSTEMS