Zeichen ausgeben

Hier gibt es die font.h

/*
 * Ein Zeichen ausgeben
 * Blinkenlights-Bausatz
 * www.eHaJo.de
 * 
 * (C) Hannes Jochriem, 2013
 * 
 */
 
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include "font.h"
 
int main()
{
	printf("Starte LEDMatrix-Programm\n");
	int fd;
	int i, j;
	struct termios options;
	char buffer;
	char temp;
 
	fd = open("/dev/ttyACM0", O_RDWR | O_NOCTTY | O_NDELAY); // seriellen port oeffnen
	if(fd == -1)
	{
		printf("konnte Port nicht oeffnen\n");
	}
	else
	{
		fcntl(fd, F_SETFL, 0);
		printf("port geoeffnet...\n");
	}
	// seriellen port konfigurieren:
	tcgetattr(fd, &options);
	cfsetispeed(&options, B115200);
	cfsetospeed(&options, B115200);
	options.c_cflag |= (CLOCAL | CREAD);
	options.c_cflag &= ~PARENB;
	options.c_cflag &= ~CSTOPB;
	options.c_cflag &= ~CSIZE;
	options.c_cflag |= CS8;
	options.c_cflag &= ~( ICANON | ECHO | ECHOE |ISIG );
	options.c_iflag &= ~(IXON | IXOFF | IXANY );
	options.c_oflag &= ~OPOST;
 
	tcsetattr(fd, TCSANOW, &options);  // die config an den port uebertragen
 
	// Alle LEDs ausschalten:
	for(i = 0; i<8; i++)
	{
		for(j = 0; j<8; j++)
		{
			buffer = (j<<1) | (i<<4);
			write(fd, &buffer, 1);
		}
	}
 
	printf("Bitte Zeichen eingeben: ");
	while(1)
	{ // haupt-endlosschleife
		scanf("%c", &temp);
		if (!(temp < 0x20) || (temp > 0x7F))
		{ // Zeichen darstellbar
			for(i = 0; i<8; i++)
			{
				for(j = 0; j<7; j++)
				{
					if(font[(temp-0x20)*7+j] & (1<<i)) // Bit fuer Bit ueberprufen ob 1 und somit LED an
						buffer = (((6-j) << 1) | ((7-i)<<4)) + 1;
					else // Falls Bit = 0: LED ausschalten
						buffer = (((6-j) << 1) | ((7-i)<<4));
					write(fd, &buffer, 1); // sende byte an ledmatrix
					}
			}
		}
		sleep(1); // 1s Pause, wenn man mehr Zeichen eingibt landen die im Puffer und werden nach und nach ausgegeben
	}
	close(fd); // port schliessen
	return 0;
}