7-세그먼트 표시장치는 숫자 혹은 영문 알파벳의 일부를 표시하기 위하여 7개의 선분 형태의 발광 다이오드(LED)를 '8' 모양으로 배치하여 만든 표시장치로 디지털시계, 전자 계량기, 기본 계산기 및 숫자 정보를 표시하는 여러 전자 장치에 널리 사용된다. 하지만 7-세그먼트가 표시장치로 표시할 수 있는 분자의 범위는 0-9까지의 숫자와 몇 개의 알파벳으로 제한되어 있으며, 시장의 7-세그먼트 디스플레이보다 훨씬 좋은 성능의 표시장치들이 있다. 그럼에도 불구하고 7-세그먼트 디스플레이가 여전히 시장에 존재하는 이유는 이 장치가 판매되는 표시장치 중에서 가장 저렴하기 때문이다.

이 장치의 이름은 7-세그먼트이지만 실제로는 7개의 선분에 소수점을 표시하기 위한 한 개의 LED가 추가되어 8개의 세그먼트로 구성되어 있다.
7-세그먼트의 표시장치의 공통 핀(COM)은 유형에 따라 Vcc에 연결하는 공통 양극 방식과 GND에 연결하는 공통 음극 방식의 두 가지 유형이 있다. 공통 양극 방식 Vcc에 5V에 전원을 연결하면 a에서 g, 그리고 dp핀에 전압을 0V로 설정하면 LED가 켜지고, 5V로 설정하면 LED가 꺼진다. 반대로 공통 음극 방식은 Vcc 대신 GND를 연결하고 a에서 g, 그리고 dp핀에 전압을 5V로 설정하면 LED가 켜지고, 0V로 설정하면 LED가 꺼진다. 7-세그먼트 표시장치를 사용하기 전에 공통 양극 방식인지 공통 음극 방식인지 먼저 확인해야 한다.

공통 음극 방식으로 회로가 결선되어 있으므로 각 LED 요소를 제어하기 위하여 제어 핀에 HIGH 값을 출력하면 불이 켜지고, LOW 값을 출력하면 불이 꺼진다.
int pin =2; // 7-세그먼트의 LED 요소 a를 아두이노의 디지털 2번 핀과 연결
void setup(){
for (int i =2; i<=9; i++){
pinMode(i,OUTPUT);
}
digitalWrite(2,HIGH); // 시작과 동시에 LED 요소 a에 불이 켜짐
}
void loop(){
for(int i =0; i<8; i++){
for (int j =0; j<8; j++){
if (i==j) digitalWrite (pin+j,HIGH); // 한 개의 LED에 불을 켜고
else digitalWrite (pin+j, LOW); // 나머지 LED의 불은 끈다.
}
delay(1000); // 1초 지연
}
}
byte numbers[10][8]={
{1,1,1,1,1,1,0,0}, //0
{0,1,1,0,0,0,0,0}, //1
{1,1,0,1,1,0,1,0}, //2
{1,1,1,1,0,0,1,0}, //3
{0,1,1,0,0,1,1,0}, //4
{1,0,1,1,0,1,1,0}, //5
{1,1,1,0,0,1,0,0}, //6
{1,1,1,1,1,1,0,0}, //7
{1,1,1,1,1,1,1,0}, //8
{1,1,1,1,0,1,1,0} //9
};
int pin =2;
int num =0;
void setup(){
for(int i=2; i<=9; i++){
pinMode(i,OUTPUT);
}
digitalWrite(9,HIGH);
}
void loop(){
for(int i =0; i<8; i++){
digitalWrite(pin+i,numbers[num][i]);
}
num++;
if(num>9)num=0;
delay(1000);
}
변수 num이 가진 숫자 모양대로 7-세그먼트에 표시하기 위한 코드, num++은 num의 값을 1만큼 증가시키며, if(num>9)num=0은 변수 num이 한 자리 숫자 중 최댓값인 9를 초과할 경우 num의 값을 0으로 다시 초기화
int num =0;
byte numbers[10][8]={
{1,1,1,1,1,1,0,0}, //0
{0,1,1,0,0,0,0,0}, //1
{1,1,0,1,1,0,1,0}, //2
{1,1,1,1,0,0,1,0}, //3
{0,1,1,0,0,1,1,0}, //4
{1,0,1,1,0,1,1,0}, //5
{1,0,1,1,1,1,1,0}, //6
{1,1,1,0,0,1,0,0}, //7
{1,1,1,1,1,1,1,0}, //8
{1,1,1,1,0,1,1,0} //9
};
void displayNumbers(int n){
//7-세그먼트의 LED 요소들은 디지털 2번 핀 부터 차례대로 연결됨
int pin =2; // a-->2, b-->3, ... , dp-->8
for (int i =0; i<8; i++){
digitalWrite(pin+i,numbers[n][i]);
}
}
void setup(){
pinMode(12,INPUT);
for(int i=2; i<=9; i++){
pinMode(i,OUTPUT);
}
digitalWrite(9,HIGH);
}
void loop(){
if(digitalRead(12)==HIGH){
++num;
if (num>9){
num=0;
}
}
displayNumbers(num);
delay(300);
}
int num =0;
byte numbers[10][8]={
{1,1,1,1,1,1,0,0}, //0
{0,1,1,0,0,0,0,0}, //1
{1,1,0,1,1,0,1,0}, //2
{1,1,1,1,0,0,1,0}, //3
{0,1,1,0,0,1,1,0}, //4
{1,0,1,1,0,1,1,0}, //5
{1,0,1,1,1,1,1,0}, //6
{1,1,1,0,0,1,0,0}, //7
{1,1,1,1,1,1,1,0}, //8
{1,1,1,1,0,1,1,0} //9
};
void displayNumbers(int n){
//7-세그먼트의 LED 요소들은 디지털 2번 핀 부터 차례대로 연결됨
int pin =2; // a-->2, b-->3, ... , dp-->8
for (int i =0; i<8; i++){
digitalWrite(pin+i,numbers[n][i]);
}
}
void setup(){
pinMode(12,INPUT);
for(int i=2; i<=9; i++){
pinMode(i,OUTPUT);
}
digitalWrite(9,HIGH);
}
void loop(){
if(digitalRead(12)==HIGH){
num = random(6);
num = num +1;
}
displayNumbers(num);
delay(300);
}
int num =0;
byte numbers[10]= {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE4,0xFE,0xF6};
void displayNumber(int n){
int pin =2;
for(int i =0; i<8; i++){
boolean state =bitRead(numbers[n],7-i);
digitalWrite(pin+i,state);
}
}
void setup(){
pinMode(12,INPUT);
pinMode(13,INPUT);
for(int i =2; i<=9; i++){
pinMode(i,OUTPUT);
}
digitalWrite(9,HIGH);
}
void loop(){
if(digitalRead(12)==HIGH){
++num;
if(num>9){
num=0;
}
}
if(digitalRead(13)==HIGH){
--num;
if(num<0){
num=9;
}
}
displayNumber(num);
delay(300);
}