Arduino Projekten

Wed 17-Apr-24
00:27:15


7-Segment Font voor de Displays

Datum: Sat 14 February 2015
Samenvatting: 7-segment Font om hexa-decimale cijfers op het display te tonen.


Om op de 7-segment Displays eenvoudig de cijfers 0 tot en met 9 te tonen is er altijd een definitie voor de cijfers nodig. En hoewel dit maar een array is van 10 bytes (elk display kan met 1 volledige byte worden aangestuurd), is het handig om hiervoor ook een font-tabel voor te maken ... net als bij de CBM-Font tekens.

En dus moet er weer getekend en berekend worden (zie foto's). Al bij het solderen van de display-print is de bedrading volgens de standaard aansluitingen gedaan. Zo gaat het ook met het samenstellen van de cijfers voor 7-segment displays.

Het bovenste streepje heet "a", daarna gaat het met de klok mee "b" "c" d" "e" naar "f" het links-boven streepje. Het middelste streepje heet "g". De decimale punt recht-onder heet "DP". Met deze standaard is het programmeren voor de displays ook makkelijk, met "a" aan bit-0, "b" aan bit-1 tot en met "g" aan bit-6. De "DP" komt dan aan bit-7.

Vanuit de schets van het display cijfer rolt een binair getal uit van 8 bitjes (de decimale punt meegerekend), wat weer eenvoudig in een hexa-decimaal getal is omgezet.

En omdat veel in computers gebeurt met hexa-decimale cijfers (0 tot en met 9 en A tot en met F), is het display-font hier uitgebreidt met de "cijfers" "A" tot en met "F" ... of eigenlijk met "A" "b" "C" "d" "E" en "F". Zo staat er op de foto het getal 02Eb, of te wel $02EB, in plaats van een raar spiegelschrift getal (zoals 0236 of zo).

Met 7-segment displays is bijna het gehele alfabet te maken, hoewel er soms ehoorlijk wat fantasie nodig is voor letters als de "K", "M" en "W". Het kan wel, maar hiervoor is een 7x5 dots display (zoals op LCD-displays (voor de ArSid)) toch makkelijker.


Broncode: [1: Segment7 Font voor 7-segment displays]

1: De broncode van Segment7 Font voor 7-segment displays

(Sat 14 February 2015) 7-segment font variabelen voor het plaatsen van hexa-decimale cijfers op 7-segment displays

Deze broncode heeft 53 regels met programma-code.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//     ---------------------------------------------------------
//     |  RGBMatrix : 7-segment-Font Definitions               |
//     ---------------------------------------------------------

#ifndef SEGMENT7_H
#define SEGMENT7_H

// Next 2 lines is needed for PROGMEM and pgm_read_byte_near-function
#include <avr/io.h>
#include <avr/pgmspace.h>

// Number of bytes per character
#define dispcharbytes   1
// Number of chars in this font
#define dispfontchars 32
// &-Segment Font
static const unsigned char dispfont[ fontchars * charbytes ] PROGMEM =
      { // Hexa-Decimal Numbers
        0x3F,  // $00 0
        0x06,  // $01 1
        0x5B,  // $02 2
        0x4F,  // $03 3
        0x66,  // $04 4
        0x6D,  // $05 5
        0x7D,  // $06 6
        0x27,  // $07 7
        0x7F,  // $08 8
        0x6F,  // $09 9
        0x77,  // $0A A
        0x7C,  // $0B B
        0x39,  // $0C C
        0x5E,  // $0D D
        0x79,  // $0E E
        0x71,  // $0F F

        0x00,  // $10 <Space>
        0x00,  // $11 <Space>
        0x00,  // $12 <Space>
        0x00,  // $13 <Space>
        0x00,  // $14 <Space>
        0x00,  // $15 <Space>
        0x00,  // $16 <Space>
        0x00,  // $17 <Space>
        0x00,  // $18 <Space>
        0x00,  // $19 <Space>
        0x00,  // $1A <Space>
        0x00,  // $1B <Space>
        0x00,  // $1C <Space>
        0x00,  // $1D <Space>
        0x00,  // $1E <Space>
        0x00   // $1F <Space>
      };


Broncode: [1: Segment7 Font voor 7-segment displays]

Afbeeldingen

paneel02_segment7_1.jpg
1/2: paneel02_segment7_1.jpg.
paneel02_segment7_2.jpg
2/2: paneel02_segment7_2.jpg.