EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Replies / code for microcontroller based visitor counter in c

code for microcontroller based visitor counter in c

|

Microcontroller › 8051 › microcontroller based visitor counter › code for microcontroller based visitor counter in c

November 8, 2010 at 4:52 am #5143
john
Participant

you can choose either of language

here is the code in C

 

// Program to make a bidirectional visitor counter using IR sensor

#include <reg51.h>
#define msec 1
unsigned int num=0;
sbit dig_ctrl_4=P1^3; //declare the control pins of seven segments
sbit dig_ctrl_3=P1^2;
sbit dig_ctrl_2=P1^1;
sbit dig_ctrl_1=P1^0;
unsigned int digi_val[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x10};
unsigned int dig_1,dig_2,dig_3,dig_4,test=0;
unsigned char dig_disp=0;
sbit up=P3^5; //up pin to make counter count up
sbit down=P3^6; //down pin to make counter count down

void init() // to initialize the output pins and Timer0
{
up=down=1;
dig_ctrl_4 = 0;
dig_ctrl_3 = 0;
dig_ctrl_2 = 0;
dig_ctrl_1 = 0;
TMOD=0x01;
TL0=0xf6;
TH0=0xFf;
IE=0x82;
TR0=1;
}

void delay() //To provide a small time delay
{
TMOD=0x01;
TL0=0x36;
TH0=0xF6;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}

void display() interrupt 1 // Function to display the digits on seven segment. For more details refer seven segment multiplexing.
{
TL0=0x36;
TH0=0xf6;
P2=0xFF;
dig_ctrl_1 = dig_ctrl_3 = dig_ctrl_2 = dig_ctrl_4 = 0;
dig_disp++;
dig_disp=dig_disp%4;
switch(dig_disp)
{

case 0:
P2= digi_val[dig_1];
dig_ctrl_1 = 1;
break;

case 1:
P2= digi_val[dig_2];
dig_ctrl_2 = 1;
break;

case 2:
P2= digi_val[dig_3];
dig_ctrl_3 = 1;
break;

case 3:
P2= digi_val[dig_4];
dig_ctrl_4 = 1;
break;
}
}

void main()
{
init();
while(1)
{
if(up==0&&down==1) //check if up pin is pressed
{
test++;
num=test;
dig_4=num%10;
num=num/10;
dig_3=num%10;
num=num/10;
dig_2=num%10;
dig_1=num/10;
if(test==9999)
test=0;
}
if(up==1&&down==0) //check if down pin is pressed
{
test--;
num=test;
dig_4=num%10;
num=num/10;
dig_3=num%10;
num=num/10;
dig_2=num%10;
dig_1=num/10;
if(test==0)
test=9999;
}
} 

 

RSS Recent Posts

  • Phone charger fix March 12, 2026
  • Very Curious Issue With DS3231 RTC Clock March 12, 2026
  • Summing inverting amplifier query March 12, 2026
  • Troubleshoot Wine Enthusiast Model 272 03 12 01 control board FX-108-1 March 12, 2026
  • Motor Getting Hot March 12, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise