A20. Seitsemän segmentin näytöt - matpi/EmbeddedSystemsUTU GitHub Wiki
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:
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
Hyvä sivusto: http://duino4projects.com/a-arduino-library-for-the-max7221-and-max7219/
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