Discussion in "Project Doubts" started by    isha    Jul 13, 2007.
Thu Jul 19 2007, 01:57 AM
sir, plz guide me how to start programming the project "digital visitror counter " in C language??????????

 tienduhieu like this.
Thu Jul 19 2007, 09:20 AM
hm... before starting that.. i want to ask you some questions.. which IDE (software for compiling) you are using? and are you familiar with that IDE? if yes then how much...
because understanding the IDE is the first important thing.
 ishatienduhieu like this.
Fri Jul 20 2007, 08:42 AM
sir , i'm using keil uvision for the project, and i m familiar with that , i've used that for a counter(0-30) project.....
 tienduhieu like this.
Sat Jul 21 2007, 02:10 AM
hi isha
please refer the book "Embedded C"
it is used c for programming 8051 with some useful examples suited to your requirement
and most good thing is that it use same keil
the book is already posted in the e-book download section or
click this link

[ Edited Sat Feb 16 2008, 04:13 AM ]
 tienduhieu like this.
Sat Jul 21 2007, 02:32 AM
Thats good if you have already worked on it oce..
so.. simply define the ports which you are using in your project. you can define in two ways...
#include #define port_name port
e.g. #define abc P1
and pin can de defined as..
#define def P2_1

defining bit-
sbit abc=0x81;
defining port or other sfr
sfr def = 0x90;

after that you start writing your program in C as you write normally. you can make fuctions or simply write the whole program in a single function called main()
please start writing something afterwards i will explain you.. as you go on. :-)
 tienduhieu like this.
Tue Jul 24 2007, 02:19 PM
i've defined the ports which are used in the project,
plz tell me how to initialize the timer?
and how to program the ports where transistors are attatced and the ports where ldrs are attatched????
plz reply soon
 tienduhieu like this.
Wed Jul 25 2007, 05:19 AM
ok... setting up the timer is very simple. putting value in register is same like moving value to a variable. you can open the file you included "AT89X51.H" and see how the registers have defined in it.
so timer can be set like this way...
TMOD = 0x20; // timer mode setting
TH1 = 20; // put value in Timer 1 high byte
TL1 = 3; // put value in Time 1 low byte
TR1 = 1; // run the timer

this way you can do the same for timer 0 you can do.
you can enable the timer interrupt as..
ET1 = 1; // Timer 1 interrupt
EA = 1; // global interrupt

writing interrupt routine..
void timer1_isr() interrupt 3
// your code
TF1 = 0; // clrear Timer overflow flag
//other code

Interrupt numbers..
Exter. int 0 - 0
timer int 0 - 1
Exter. int 1 - 2
timer int 1 - 3
RX/Tx int - 4

similar with the ports..
P1 = 0x40; //some value
port... pin..
P1_1 = 1 or 0; // setting or clearing a pin..

checking pin is set or cleared..
if(P1_1){ //execute the code if Port 1 pin 1 is set
else{ //execute the code if Port 1 pin 1 is clear

or you can sometime have this way too..

if(!P1_1){ //execute the code if Port 1 pin 1 is clear
else{ //execute the code if Port 1 pin 1 is set

making a port o/p
P1 = 0;

making a port i/p
P1 = 0xFF;

making a port pin i/p
P1_1 = 1;

making a port pin o/p
P1_1 = 0;

Please you can move on with your code now.. if any problem tell me..
 tienduhieu like this.
Tags programming 8051 microcontroller in Cport programming in Ctimer programming in C
Thu Aug 02 2007, 03:23 PM
sir, i 've started programming in C language but i'm having problems ...
why four seven segments have been used and why they are all connected to the same port? and what about their common cathodes where transistors are attathed?? how current pass through??? how to program those pins???
plz reply soon...
 tienduhieu like this.
Thu Aug 02 2007, 05:45 PM
welcome back isha you came back after a long time..

anyways.. four segments are connected to same port just to save pins. otherwise you need 32 pins to connect four 7-seg but now you are just using 12 pins (4 common control and 8 data).
transistor will switch the seven segments on one by one. As you know the phenomenon "persistence of vision" of human eye.. so the 7-segments are going to be switched one by one so fast that human eye will think all of them as ON!!

this is done in C like this..

    7seg_port = 7seg_decode(digit1);
    7seg1_cathode = 1;
    7seg1_cathode = 0;
    7seg_port = 7seg_decode(digit2);
    7seg2_cathode = 1;
    7seg2_cathode = 0;
    7seg_port = 7seg_decode(digit3);
    7seg3_cathode = 1;
    7seg3_cathode = 0;
    7seg_port = 7seg_decode(digit4);
    7seg4_cathode = 1;
    7seg4_cathode = 0;

So the above thing is done continuously..
7seg(1,2,3,4)_cathode are the pins connected to transistor. making it 1 will activate the transistor and current flows from power via LED of 7-seg to ground.
7seg_port is the port where all 7-segment displays are connected.
7seg_decode(digit variable) this function gets an input digit which is going to be displayed. for example 0 is the digit to be displayed.. but you cannot directly send 0 to the port. so what you need to do is, get which LED has to glow on 7-seg (a,b,c,d,e,f,g) the dot LED is considered usually always off or as per you need..
e.g 0 is displayed on 7-seg like this..
So to get this u need LED a,b,c,d,e,f as on so the decoded value for zero will be
val     a   b  c  d  e  f   g   dot   Decoded
 0      1   1  1  1  1  1   0    0        0x3F

the above value is calculated as.. a is connected to Port pin 0, b with pin 1 and so on.. dot with dot with pin 7 of the port.

So once the decoded value is sent to the port.. switch the 7-seg on by switching the corresponding transistor. and then switch it off after some time.. this delay is provided by some_delay routine and the value of delay is selected according to your need.. just to avoid flickering on the display.
so this step by step switching will display the digits one by one so fast that.. user looking at the display will think that all 7-segments are ON!

I hope i am clear.. how to use 7-segments. If you still have doubt please feel free to ask
 tienduhieu like this.
Tags programming 7-segment display in C7-segment interfacing with microcontroller7-segment display7-seg led display
Fri Aug 03 2007, 01:51 PM
i tried it , but same digit is displayed on all the displays, what should be done if i have to display 11, 12 , or 100 or 1122 etc....
 tienduhieu like this.

Get Social


Powered by e107 Forum System


Wed May 20 2020, 03:59 AM
Does anyone have microcontroller programming software for STC15F104W (core 8051, 4 k, 128 byte, 6 I/O pin, UART ... DIL8), that works?
Sun May 03 2020, 01:08 AM
Tamu Gurung
Hi I am looking for a assembly language program for a digital decimal counter. Time counts max limit of 2 mins starting from 2.00 mins and ending at 0.00. time is to be displayed on 4 7-segment LED displays. Edsim51 simulator to be used. Thanks
Wed Mar 25 2020, 07:09 PM
Sir kindly send the code file i2c for 8051
Sat Mar 14 2020, 04:06 AM
@ Rohitnani,ABEBE..which project ?
Fri Mar 13 2020, 06:25 PM
how can get hadwere of this project
Sat Mar 07 2020, 09:41 PM
Sir, Could you please send me the zip file input password....
Wed Feb 26 2020, 09:28 PM
Peter Parker
Is it possible to send multiple messages using only 1 GSM module?
Sat Feb 01 2020, 02:42 PM
Pearl Olin
Wed Jan 22 2020, 10:46 PM
I m getting errors while simulation process during interfacing socket output and lcd... Can i get the report of ur project which is same as us.
Tue Jan 14 2020, 11:38 AM
shubham kharade
when i am trying to simulate the program in Proteus 8 professional, I am getting some errors as cannot find module file dhtxx.md can u help me



Thu May 21 2020, 08:44 AM
Wed May 20 2020, 09:28 PM
Wed May 20 2020, 03:05 PM
Wed May 20 2020, 07:52 AM
Wed May 20 2020, 03:15 AM
Tue May 19 2020, 06:08 PM
Tue May 19 2020, 02:22 PM
Mon May 18 2020, 09:50 PM


Guests: 44, Members: 0 ...

most ever online: 182184
(Members: , Guests: 182184) on 06 Aug 2010: 01:37 AM

Members: 38211
Newest member: Davidthils
Forum Activity
xrxx Avatar
Posted By xrxx
Thu Apr 30 2020, 06:59 AM
BCD MULTIPLICATIONAssume that you have to 2 BCD nu...
liqian Avatar
Posted By liqian
Tue Apr 28 2020, 05:26 AM
I happened to see your post and I got many useful ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Apr 28 2020, 04:21 AM
The code is hard to read.Please zip it and attach ...
rogermado Avatar
Posted By rogermado
Sun Apr 26 2020, 01:53 AM
@ExperimenterUK, thanks for your reply. You'll fin...
ExperimenterUK Avatar
Posted By ExperimenterUK
Sat Apr 25 2020, 05:42 PM
Some simulators handle displays better than others...
rogermado Avatar
Posted By rogermado
Sat Apr 25 2020, 03:59 PM
Hello everyone, sorry in advance if i'm not in the...
PHANTOM28 Avatar
Posted By PHANTOM28
Fri Feb 28 2020, 10:25 AM
Hi.I hope you all can help me. I am relatively ne...
ExperimenterUK Avatar
Posted By ExperimenterUK
Fri Feb 21 2020, 05:05 PM
ajay_bhargav Avatar
Posted By ajay_bhargav
Fri Feb 21 2020, 04:45 AM
Yes you can do that.1. Create a channel @Thingspea...
ananyagupta Avatar
Posted By ananyagupta
Thu Feb 20 2020, 03:58 AM
With regards to the particular characters sent to ...