Both sides previous revisionPrevious revisionNext revision | Previous revision |
fr:examples:display:segment_display [2010/03/10 10:13] – sdeniaud | fr:examples:display:segment_display [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
---|
===== Théorie ===== | ===== Théorie ===== |
| |
7-segmented LED number-indicator is a display which consists of 7 LEDs positioned in the shape of number 8. By lighting or switching off the corresponding LEDs (segments), it is possible to display numbers from 0 to nine as well as some letters. | L'indicateur de nombres à 7 segments de LED est un afficheur qui est constitué de 7 LEDs positionnés en forme du chiffre 8. En allumant ou éteignant les LEDs correspondantes, i est possible d'afficher les chiffres de 0 à 9 ainsi qu'un bon nombre de lettres. |
| |
[{{ :examples:display:segment_display:segment_display_leds.png?300|Positioning of the LED indicator's segments and electrical scheme}}] | [{{ :examples:display:segment_display:segment_display_leds.png?300|Positionnement des segments de l'indicateur de LED et schéma électrique}}] |
| |
Electrically all anodes of the LEDs are connected to one anode pin //ca//. LEDs are lit by switching their cathodes (//a, b, c...//). Exists also reversed connections, where the indicators have a common cathode //cc//. Generally several number-indicators are used for displaying multi digit numbers - for this purpose the indicators are equipped with coma (point) segment //dp//. All in all one indicator has 8 segments, but they are still called 7-segmented according to the number of number-segments. | Electriquement toutes les anodes des LEDs sont connectées à la broche de l'anode //ca//. Les LEDs s'allument en inversant la position de leur cathode (//a, b, c...//). Il existe aussi des connections inversées, où les indicateurs ont une cathode commune //cc//. Habituellement la plupart des indicateurs de nombres sont utilisés pour afficher des nombres multi numériques - pour ce faire les indicateurs sont équipés d'un segment point //dp//. En tout et pour tout un indicateur est composé de 8 segments, mais il continu d'être appelé afficheur à 7 segments en accord avec le nombre de segments. |
| |
LED number-indicators are easy to use, they can be controlled directly from the pins of the microcontroller, but there are also special drivers, which able to control number-indicators using fewer pins of the microcontroller. There are different colors of LED number indicators, which can be very bright and very large. For displaying the entire Latin alphabet exist indicators with extra segments. | L'afficheur de nombre à LED est très facile à utiliser, il peut être contrôlé directement à partir des broches du micro-contrôleur, mais il existe des drivers spéciaux qui sont capable de contrôler l'afficheur en utilisant moins de broches du micro-contrôleur. Il existe différentes couleurs d'afficheurs qui peuvent être très brillantes et très larges. Enfin, il existe des afficheurs spécifiques composés de segments supplémentaires permettant d'afficher les caractères de l'alphabet Latin. |
| |
===== Practice ===== | ===== Pratique ===== |
| |
There is one 7-segment LED number-indicator on the board of digital module. It is controlled through a driver with serial interface A6275. The serial interface of the driver is similar to SPI, where both clock signal and data signal are used. Different from SPI the //chip-select// is not used there, and is replaced with //latch// function. The above mentioned three lines are connected to the ATmega128 as follows: | Il y a un afficheur 7 segments disponible sur la carte du module numérique. Il est contrôlé par l'intermédiaire de l'interface en série A6275. L'interface en série est similaire à SPI, où on utilise les signaux de l'horloge et les signaux de donnée. Contrairement à SPI la fonction ''chip-select'' n'est pas utilisée ici, nous la remplacerons par la fonction ''latch''. Les trois voies mentionnées ci-dessus sont connectées à ATmega128 comme suit: |
| |
[{{ :examples:display:segment_display:segment_display_driver_logic.png?300|The build-up of the LED driver's shift-index with corresponding segments of the indicator.}}] | [{{ :examples:display:segment_display:segment_display_driver_logic.png?300|La construction de l'index du driver de LED avec le segment de l'afficheur correspondant.}}] |
| |
* Latch-signal (//latch//) - PG2 | * Latch-signal (//latch//) - PG2 |
~~CL~~ | ~~CL~~ |
| |
The data is delivered by bits through the data pin. Every time the clock signal goes high, the contents of the shift-index is shifted to the right and the bit from the data-pin is read to the left most cell. By this 8-bits are loaded to the shift-index. If the latch signal is set high, the value of the shift-index is loaded to the latch-index, where it remains until new loading. Each bit of the latch-index is connected through the current switching to one number-indicator’s segment. The segment is lit during the high bit-rate. | Les données sont transmises en bits en passant par la broche de données. A chaque passage du signal de l'horloge en position haute, le contenu de l'index shift est modifié vers la droite et le bit provenant de la broche de données est lu vers la cellule la plus à gauche. Avec ce 8 bits est transféré vers l'index shift. Si le signal //latch// est configuré en position haute, la valeur de l'index shift est transférée vers l'index latch, où il y rest jusqu'à un nouveau chargement. Chaque bits de l'index latch est connecté à l'interrupteur de courant de l'un des segments de l'afficheur. Le segment correspond est allumé en position haute du bit-rate. |
| |
For displaying the numbers on the Home Labs digital modules´ indicator, the following functionality is writen to the library of the Home Lab. | |
| |
| Pour afficher des nombres sur l'afficheur du HomeLab, la fonctions suivante se trouve dans la librairie du HomeLab. |
| |
<code c> | <code c> |
</code> | </code> |
| |
For displaying numbers and the letter “E”, is created a constant array //segment_char_map//, where lighting of all 8 segments is marked with bit 1 and switch off is market with bit 0. The bits form higher to lower (from left to right in binary form) are marking segments DP, G, F, E, D, C, B, A. The control interface of the driver is realized through software SPI, i.e. by using a software for controlling the data communication pins in the program. All three pins are set as output with // segment_display_init// function. // segment_display_write// is for displaying the function, which finds the segment-card of the mark from the array and transmits bit by bit all values of the segments to the driver. The frequency of the clock signal with the software delays is now approximately 500 kHz. | Dans le but d'afficher les chiffres ainsi que la lettre "E", nous utiliserons une liste constante ''segment_char_map'', qui permet d'allumer tous les segments marqués d'un 1 et inversement d'éteindre ceux marqués par un 0. Les bits du plus grand au plus petit (de gauche à droite de la forme binaire) sont dénomé par les segments DP, G, F, E, D, C, B, A. L'interface de contrôle du driver est réalisée a l'aide du logiciel SPI, i.e. en utilisant un logiciel permettant de contrôler les broches de communication dans le programme. Les trois broches sont configurées en sorties avec la fonction ''segment_display_init''. Puis la fonction ''segment_display_write''permet l'affichage, qui trouve la carte des segments à partir de la liste et transmet bit à bit toutes les valeurs des segments. Le fréquence de l'horloge avec les temporisation est d'environ 500 kHz. |
| |
The following is a more concrete example of a program for using the number-indicator. Previously described function of the library is described in the program. The program counts numbers from 0 to 9 with approximate interval of 1 second. Such counting is achieved by taking a module from a much larger number. | |
| |
| Le programme suivant est un exemple plus concret d'une utilisation de l'afficheur. Les fonctions utilisées correspondent à celles évoquées ci-dessus. Le programme permet de compter de 0 à 9 avec un intervalle d'environ 1 seconde. Un tel comptage peut être réalisé en prenant en module depuis un nombre plus grand. |
| |
<code c> | <code c> |