Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

 

7seg (Seven Segment Display)

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 by avr/interrupt.h!)

Example code to display "ok":

#include <avr/interrupt.h>
#include "7seg.h"
void main(void){
// enable interrupts
sei();
// display "ok"
// spin forever
while(1) {};
}
See also
timer.h

Function Documentation

◆ sb_7seg_disable()

void sb_7seg_disable ( void  )

Disables the 7-segment displays.

Any running alarms are unregistered.

◆ sb_7seg_setMask()

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)

7seg.png

For example a value of 0x86 (decimal 134, binary representation: 1000 0110) will enlight the LEDs 1 and 2 of the first block.

Parameters
mask8-bit bitfield describing the desired 7 segment display state

◆ sb_7seg_showHexNumber()

int8_t sb_7seg_showHexNumber ( uint8_t  nmbr)

Prints the hexadecimal representation of an 8-bit unsigned integer on the 7-segment display.

Parameters
nmbrthe number to print
Return values
0on success
!0on error

◆ sb_7seg_showNumber()

int8_t sb_7seg_showNumber ( int8_t  nmbr)

Prints a number in the range [-9; 99] on the 7-segment display.

Parameters
nmbrthe number to print
Return values
0success
-1nmbr is smaller than -9
-2nmbr is greater than 99

◆ sb_7seg_showString()

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
strthe 0-terminated string
Return values
0success
-1character at position 0 not printable
-2character at position 1 not printable
-3both characters not printable
-4str is an empty string