A20. Seitsemän segmentin näytöt - matpi/EmbeddedSystemsUTU GitHub Wiki

7 segmentin näyttö

Seitsemän segmentin näytöt (seven-segment display, SSD), ovat elektronisia näyttökomponentteja,jotka soveltuvat erityisesti numeronäytöiksi. Niitä käytetään digitaalisissa kelloissa, mittareissa, laskimissa ja muissa numeroarvojen ilmaisemista vaativissa käyttökohteissa. Seitsemän segmentin näytöt voivat perustua ledeihin, tai ne voivat olla nestekidenäyttöjä (liquid crystal display, LCD). Myös muunlaisia valoa tuottavia teknologioita käytetään ilmaisemaan segmenttejä.

Yksittäisessä ledeihin perustuvassa 7 segmentin näytössä ledien katodit (yhteiskatodikytkentä) tai anodit (yhteisanodikykentä) ovat kytkettynä yhteen. Yksittäisen näytön ohjaamiseen tarvitaan siis 7 mikrokontrollerin output pinniä. Lisäksi mahdollinen desimaalipiste vaatii oman ohjauspinnin. Ohjauspiiriä (esim. MAX 7221) käytettäessä tarvittavien ohjauspinnien määrä voidaan rajoittaa kolmeen. Tällaisten ohjainpiirien avulla voidaan ohjata useita näyttöjä samanaikaisesti kolmella output pinnillä. Näytön segmentit on nimetty seuraavalla tavalla: 7-segmentin näytön segmentit

Numeroarvojen ja kirjainten muodostuminen 7-segmentin näytössä

Numero
              a    b    c    d    e    f    g
0            on   on   on   on   on   on   off 
1            off  on   on   off  off  off  off 
2            on   on   off  on   on   off  on 
3            on   on   on   on   off  off  on 
4            off  on   on   off  off  on   on 
5            on   off  on   on   off  on   on 
6            on   off  on   on   on   on   on 
7            on   on   on   off  off  off  off 
8            on   on   on   on   on   on   on 
9            on   on   on   on   off  on   on 
A            on   on   on   off  on   on   on 
b            off  off  on   on   on   on   on 
C            on   off  off  on   on   on   off 
d            off  on   on   on   on   off  on 
e            on   off  off  on   on   on   on 
F            on   off  off  off  on   on   on 

Max7221 piirin datasheet: http://pdf1.alldatasheet.com/datasheet-pdf/view/73758/MAXIM/MAX7221.html

Arduino sivuston ohjeet Max221 piirin liittämiseksi näyttösegmentteihin ja Arduinolle: http://playground.arduino.cc/Main/LEDMatrix

Kytkentäkaaviot löytyvät täältä: http://playground.arduino.cc/Main/MAX72XXHardware

Max7221 kytkentä

7-segmentin näytöt yhdistettynä

Hyvä sivusto: http://duino4projects.com/a-arduino-library-for-the-max7221-and-max7219/

Seven segment screen

Testikoodi:

//We always have to include the library
#include "LedControl.h"

/*
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 12 is connected to the DataIn 
pin 11 is connected to the CLK 
pin 10 is connected to LOAD 
We have only a single MAX72XX.
*/
LedControl lc=LedControl(12,11,10,1);

/* we always wait a bit (now 1000 milliseconds between updates of the display */
unsigned long delaytime=1000;

void setup() {
/*
The MAX72XX is in power-saving mode on startup,
we have to do a wakeup call
*/
lc.shutdown(0,false);
/* Set the brightness to a medium values */
lc.setIntensity(0,8);
/* and clear the display */
lc.clearDisplay(0);
}


/*
This method will display the characters for the
word "Arduino" one after the other on digit 0. 
*/
void writeArduinoOn7Segment() {
lc.setChar(0,0,'a',false);
delay(delaytime);
lc.setRow(0,0,0x05);
delay(delaytime);
lc.setChar(0,0,'d',false);
delay(delaytime);
lc.setRow(0,0,0x1c);
delay(delaytime);
lc.setRow(0,0,B00010000);
delay(delaytime);
lc.setRow(0,0,0x15);
delay(delaytime);
lc.setRow(0,0,0x1D);
delay(delaytime);
lc.clearDisplay(0);
delay(delaytime);
} 

/*
This method will scroll all the hexa-decimal
numbers and letters on the display. You will need at least
four 7-Segment digits. otherwise it won't really look that good.
*/
void scrollDigits() {
for(int i=0;i<13;i++) {
lc.setDigit(0,3,i,false);
lc.setDigit(0,2,i+1,false);
lc.setDigit(0,1,i+2,false);
lc.setDigit(0,0,i+3,false);
delay(delaytime);
}
lc.clearDisplay(0);
delay(delaytime);
}

void loop() { 
writeArduinoOn7Segment();
scrollDigits();
}

Koodin lähde: https://github.com/wayoda/LedControl/blob/master/examples/LCDemo7Segment/LCDemo7Segment.ino