A 7-segment display is a LED-LCD display with 8 LCD cells are controlled by 8 pins. Usually a 7-segment display has 10 pins, 2 are common pins and the rest 8 control each LCD cell.
Now, a 7-segment display is of 2 types, common cathodic and common anodic display. While the common cathodic display has its common pins hooked up to the ground(GND), the common anodic display has its common pins hooked up to high voltage(+5). A diagram explaining this is given.
I have used a display numbered LT542 which is a common anodic display. This project is aimed to control the LT542 to display each number from 0 to 9 at a second's gap.
MATERIALS REQUIRED:
CODE:
/**
PINOUT DIAGRAM FOR THIS CODE
______________
| |
a b | c d |
| | | | | |
|+++++++++++++| |
| _________ | |
| | _______ | | |
| | | | | | |
| | | | | | |
| \ \_____/ / | |
| _____ | |
| / / \ \ | |
| | | | | | |==============[+5V]
| | | | | | |
| | |_____| | | | [LT542]
| |_________| | | COMMON ANODE
| | |
|+++++++++++++| |
| | | | | |
h g | f e |
|______________|
*/
#define DELAY 5
const int a = 5;
const int b = 6;
const int c = 7;
const int d = 8;
const int h = 9;
const int g = 10;
const int f = 11;
const int e = 12;
int counter = 0;
unsigned long n = 0;
unsigned long currenttime = 0;
unsigned long previoustime = 0;
unsigned long interval = 1000;
void setup() {
//seeting the number to be displayed
counter = 0;
//setting up the pins for 7 segment display
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
pinMode(g,OUTPUT);
pinMode(h,OUTPUT);
//initializing the 7 segment pins
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
//setting up user display on computer
Serial.begin(9600);
}
void loop() {
/*code to print all numbers from 0 to 9 on
a 7 segment display*/
while(true)
{
//resetting counter value
if(counter == 10)
counter = 0;
segmentWrite((int)counter);
Serial.print(n);
Serial.print(" ");
Serial.println(counter);
if(currenttime-previoustime>=interval)
{
counter++;
previoustime = currenttime;
break;
}
}
}
void segmentWrite(int value)
{
//Serial.println(value);
switch(value)
{
case 0:
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 1:
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
break;
case 2:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 3:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
case 4:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
break;
case 5:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
case 6:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 7:
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
break;
case 8:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 9:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
default:
Serial.println("NOT VALID");
}
}
Now, a 7-segment display is of 2 types, common cathodic and common anodic display. While the common cathodic display has its common pins hooked up to the ground(GND), the common anodic display has its common pins hooked up to high voltage(+5). A diagram explaining this is given.
I have used a display numbered LT542 which is a common anodic display. This project is aimed to control the LT542 to display each number from 0 to 9 at a second's gap.
MATERIALS REQUIRED:
- Arduino Uno
- LT542
- Jumper wires (male-to-male)
- Breadboard
- Wire the setup as shown in the schematic and pictures.
- Copy the code given and paste it into the arduino IDE.
- Plug in your board tho the computer using a USB cable.
- Upload the code.
CODE:
/**
PINOUT DIAGRAM FOR THIS CODE
______________
| |
a b | c d |
| | | | | |
|+++++++++++++| |
| _________ | |
| | _______ | | |
| | | | | | |
| | | | | | |
| \ \_____/ / | |
| _____ | |
| / / \ \ | |
| | | | | | |==============[+5V]
| | | | | | |
| | |_____| | | | [LT542]
| |_________| | | COMMON ANODE
| | |
|+++++++++++++| |
| | | | | |
h g | f e |
|______________|
*/
#define DELAY 5
const int a = 5;
const int b = 6;
const int c = 7;
const int d = 8;
const int h = 9;
const int g = 10;
const int f = 11;
const int e = 12;
int counter = 0;
unsigned long n = 0;
unsigned long currenttime = 0;
unsigned long previoustime = 0;
unsigned long interval = 1000;
void setup() {
//seeting the number to be displayed
counter = 0;
//setting up the pins for 7 segment display
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
pinMode(g,OUTPUT);
pinMode(h,OUTPUT);
//initializing the 7 segment pins
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
//setting up user display on computer
Serial.begin(9600);
}
void loop() {
/*code to print all numbers from 0 to 9 on
a 7 segment display*/
while(true)
{
//resetting counter value
if(counter == 10)
counter = 0;
segmentWrite((int)counter);
Serial.print(n);
Serial.print(" ");
Serial.println(counter);
if(currenttime-previoustime>=interval)
{
counter++;
previoustime = currenttime;
break;
}
}
}
void segmentWrite(int value)
{
//Serial.println(value);
switch(value)
{
case 0:
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 1:
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
break;
case 2:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 3:
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
case 4:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
break;
case 5:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
case 6:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 7:
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,HIGH);
break;
case 8:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
break;
case 9:
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,HIGH);
break;
default:
Serial.println("NOT VALID");
}
}





Comments
Post a Comment