libspicboard-Doku
Controls the two 7-segment displays on the board. More...
Files | |
file | 7seg.h |
Functions | |
int8_t | sb_7seg_showNumber (int8_t nmbr) |
Prints a number in the range [-9; 99] on the 7-segment display. More... | |
int8_t | sb_7seg_showHexNumber (uint8_t nmbr) |
Prints the hexadecimal representation of an 8-bit unsigned integer on the 7-segment display. More... | |
int8_t | sb_7seg_showString (const char *str) |
Prints a 2 character string on the 7-segment display. More... | |
void | sb_7seg_setMask (uint8_t mask) |
Set the LEDs of the 7-segment display manually. More... | |
void | sb_7seg_disable (void) |
Disables the 7-segment displays. More... | |
Detailed Description
Controls the two 7-segment displays on the board.
The two 7-segment displays of the SPiCboard share one common port of the MCU. The two displays can be connected and disconnected from the port using two transistors. By quickly and periodically connecting and disconnecting the displays an observer will not be able to notice when a display is disabled and both displays can be used apparently simultaneously.
The module uses the 8-bit Timer 2 of the ATmega328PB to multiplex the two 7-segment displays.
- Note
- As the timer is used, interrupts must be enabled for the display to work (if one of the 7 segments seems to be not working it is quite likely that interrupts are not enabled – you have to call
sei()
provided byavr/interrupt.h
!)
Example code to display "ok":
- See also
- timer.h
Function Documentation
void sb_7seg_disable | ( | void | ) |
Disables the 7-segment displays.
Any running alarms are unregistered.
void sb_7seg_setMask | ( | uint8_t | mask | ) |
Set the LEDs of the 7-segment display manually.
The bitfield contains one bit for each of the 7 segment LEDs of a block. A set bit enables and a cleared bit disables the corresponding LED. The most significant bit determines the block: If set, the first block (tens' place) will be used, if cleared the second block (ones' place)
For example a value of 0x86 (decimal 134, binary representation: 1000 0110) will enlight the LEDs 1 and 2 of the first block.
- Parameters
-
mask 8-bit bitfield describing the desired 7 segment display state
int8_t sb_7seg_showHexNumber | ( | uint8_t | nmbr | ) |
Prints the hexadecimal representation of an 8-bit unsigned integer on the 7-segment display.
- Parameters
-
nmbr the number to print
- Return values
-
0 on success !0 on error
int8_t sb_7seg_showNumber | ( | int8_t | nmbr | ) |
Prints a number in the range [-9; 99] on the 7-segment display.
- Parameters
-
nmbr the number to print
- Return values
-
0 success -1 nmbr is smaller than -9 -2 nmbr is greater than 99
int8_t sb_7seg_showString | ( | const char * | str | ) |
Prints a 2 character string on the 7-segment display.
Supported characters are in the group [-_ 0-9A-Za-z] (contains space). Read this article for possible representations of these characters. Two characters of the set should never have the same representation. No differentiation is made between upper- and lowercase characters.
- Parameters
-
str the 0-terminated string
- Return values
-
0 success -1 character at position 0 not printable -2 character at position 1 not printable -3 both characters not printable -4 str is an empty string