Atmel Studio C Library für Seven Segment LED Backpack

Atmel Studio C Library für Seven Segment LED Backpack 1.0

  • Das Forum bekommt am Sonntag 17.11.2019 um 9:00 Uhr ein Update!
    In der Zeit wird das Forum leider nicht erreichbar sein!

    Das Update wird voraussichtlich 2 bis 3 Stunden dauern.
Für das Siebensegment-LED-Displaymodul von Adafruit habe ich eine kleine C-Library für Atmel Studio geschrieben.
Ein Beispielprogramm (main.c) und die Library könnt ihr am Ende des Beitrags herunterladen. Die Routinen für MasterTWI sind ebenfalls enthalten.




Files:
  • main.c
  • SevenSegment_LEDBackpack.c
  • SevenSegment_LEDBackpack.h
  • TWI_Master.c
  • TWI_Master.h


Im Hauptprogramm bindet ihr folgendes ein:

#include "SevenSegment_LEDBackpack.h"
#include "TWI_Master.h"

Danach könnt ihr folgende Routinen nutzen (hier die Prototypen):


CodeBox C
void LEDDriver_SetBrightness(uint8_t b);
void LEDDriver_BlinkRate(uint8_t b);
void LEDDriver_SetOscillator(bool osc_on);
void LEDDriver_Init(void);
void LEDDriver_WriteDisplay(void);
void LEDDriver_DisplayClear(void);
void LEDDriver_DisplayFill(void);
void LEDDriver_DrawColon(bool state);
void LEDDriver_WriteDigitNumber(uint8_t digit, uint8_t number, bool dot);
void LEDDriver_DrawDigitDot(uint8_t digit, bool dot);
void LEDDriver_WriteDigitRaw(uint8_t digit, uint8_t bitmask);
void LEDDriver_DisplayDecimal8(uint8_t d);
void LEDDriver_DisplayDecimal16(uint16_t d);
void LEDDriver_DisplayHex8(uint8_t d);
void LEDDriver_DisplayHex16(uint16_t d);




Das Bild zeigt das 7-segment LED backpack angeschlossen am Nano Board mit ATmega32A.

Es sind lediglich zwei Signale SCL (PC0) und SDA (PC1) zu verbinden, sowie VCC und GND.

Das Anzeigenmodul gibt es übrigens in den Farben gelb, rot, grün und blau.




Ein Auszug aus main() des Beispielprogramms:



CodeBox C
int main (void)
{

  I2C_Init();

  // 7bit address (A2..0 = 0b000 ... 0b111 -> Address 0x70 ..0x77)
  displaymodule_addr = 0x70;

  LEDDriver_Init();

  while(1)
  {

  uint16_t blinkcounter = 0;
  bool drawColon = false;

  for (uint16_t counter = 0; counter < 10000; counter ++)
  {
   
  LEDDriver_DisplayDecimal16(counter);  // Displays decimal 0..9999
  // LEDDriver_DisplayDecimal8((uint8_t)counter); // Displays decimal 0..255
  // LEDDriver_DisplayHex8((uint8_t)counter);  // Displays hexadecimal 0x00..0xFF   
  // LEDDriver_DisplayHex16(counter);  // Displays hexadecimal 0x0000..0xFFFF
   
  LEDDriver_DrawColon(drawColon);
   
  LEDDriver_DrawDigitDot(0, drawColon);
  LEDDriver_DrawDigitDot(1, drawColon);   
  LEDDriver_DrawDigitDot(3, drawColon);   
  LEDDriver_DrawDigitDot(4, drawColon);   
   
   
  blinkcounter+=10;
  if (blinkcounter < 500) {
  drawColon = false;
  } else if (blinkcounter < 1000) {
  drawColon = true;
  } else {
  blinkcounter = 0;
  }
   
  LEDDriver_WriteDisplay();
  _delay_ms(10);
   
  }

  }

  return 0;
}



Wichtig ist die Defintion von F_CPU, da dies einige Routinen nutzen. F_CPU könnt ihr zum Beispiel in den Projekteinstellungen global definieren.
(Toolchain -> Symbols)

Beispiel: F_CPU=16000000UL
(für 16MHz Systemtakt)


Links

Sevensegment LED Backpack im Onlineshop (verfügbar in den Farben, gelb, rot, grün und blau)
Developmentboard Nano im Onlineshop
Developmentboard Nano auf dev-tools.de


Die Library könnt ihr nutzen unter
BSD License



Hier seht ihr noch ein sehr kurzes Video vom Displaymodul am ATmega32A auf dem Nano Board.

Autor
Dirk
Downloads
98
Aufrufe
163
Erstellt am
Letzte Bearbeitung
Bewertung
0,00 Stern(e) 0 Bewertungen

Weitere Ressourcen von Dirk

Diese Ressource weiterempfehlen

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)