Home  |  Buy on line  |  Contact us  |  Terms & Conditions  | 
  



New FOX Board G20



Buy on-line


FOX Board G20
FOX Board LX832
Easy Guardian
SMS FoxBox
Acme Systems srl




FOX Board LX832 is discontinued
To be informed about its availability and prices please CONTACT US
To know more about the new FOX Board G20 GO HERE

Interfacing a 7-seg display module

This article illustrates how to interface the mikroElektronika Serial 7-seg display module to the FOX Board LX

The mikroElektronika Serial 7-seg display module is a 4 digit module based on a MAX7219 serial input/output common-cathode display drivers with a SPI serial interface.

As other mikroElektronika extra board this module has a 5x2 female connector to be connected with a main board. The signals available on this connector (CN1) are:

1CS# 2
3 4SCK
5 6DIN
7DOUT 8
9+5VCC 10GND

The mikroElektronika Serial
7-seg display module

Wirings

The wirings between the FOX Board LX and the 7-seg module used in this example are:
J6.23 (OG1) --> CN1.1 (CS#)
J6.26 (OG3) --> CN1.4 (SCK)
J6.25 (OG4) --> CN1.6 (DIN)

J6.12 (+5VCC) --> CN1.9 (+5VCC)
J6.40 (GND) --> CN1.10 (GND)

Sample code in C

This is an example of code in C based on the original example provided by mikroElektronica:
/*
  7seg.c
  Sample of C code to use a mikroElektronika Serial 7-seg Display module
  with the Acme Systems FOX Board LX. 

  http://www.acmesystems.it/?id=71  

  Based on the C example code provided by Mikroelektronika.
*/


#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"
#include "sys/ioctl.h"
#include "fcntl.h"
#include "time.h"
#include "string.h"
#include "linux/gpio_syscalls.h"

#define CS_HI gpiosetbits(PORTG,PG1)
#define CS_LO gpioclearbits(PORTG,PG1)
#define SCK_HI gpiosetbits(PORTG,PG3)
#define SCK_LO gpioclearbits(PORTG,PG3)
#define DIN_HI gpiosetbits(PORTG,PG4)
#define DIN_LO gpioclearbits(PORTG,PG4)


void SPI_init(void) {
  CS_HI;    
  SCK_LO;    
  DIN_LO;    
}

void SPI_write(unsigned char value) {
  int i;
  for (i=7;i>=0;i--) {
    if (value&(1<<i)) {
      DIN_HI;
    } else {
      DIN_LO;
    }
    SCK_HI;    
    SCK_LO;    
  }
}

void max7219_init1() {
  CS_LO;
  SPI_write(0x09);             // BCD mode for digit decoding
  SPI_write(0x5F);
  CS_HI;

  CS_LO;
  SPI_write(0x0A);
  SPI_write(0x0F);             // Segment luminosity intensity
  CS_HI;

  CS_LO;
  SPI_write(0x0B);
  SPI_write(0x07);             // Display refresh
  CS_HI;

  CS_LO;
  SPI_write(0x0C);
  SPI_write(0x01);             // Turn on the display
  CS_HI;

  CS_LO;
  SPI_write(0x00);
  SPI_write(0xFF);             // No test
  CS_HI;
}

void display_number(unsigned int data) {

  CS_LO;
  SPI_write(4);                // send Thousands digit
  SPI_write(data/1000);
  CS_HI;

  CS_LO;
  SPI_write(3);                // send Hundreds digit
  SPI_write((data/100)%10);
  CS_HI;

  CS_LO;
  SPI_write(2);                // send Tens digit
  SPI_write((data/10)%10);
  CS_HI;

  CS_LO;
  SPI_write(1);                // send Ones digit
  SPI_write(data%10);
  CS_HI;
}


int main(int argc, char **argv) {
  int cnt;

  SPI_init();
  max7219_init1();             // initialize  max7219
  
  for (cnt=0;cnt<10000;cnt++) {
    display_number(cnt);
    usleep(1000);
  }


  return(0);
}



Hand made prototype at work

Credits

This article has written in cooperation with Tigal.com (http://www.tigal.com).

It is possible to buy the 7-seg display module directly from Tigal.com web site on:
http://www.tigal.com/prodotti_scheda.asp?pid=1227

Links