From 33000dfc5ae4aed280a77612ffb23e295b4a54e7 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 26 Oct 2009 03:22:06 +0000 Subject: add 7-segment display --- 7seg.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 7seg.c (limited to '7seg.c') diff --git a/7seg.c b/7seg.c new file mode 100644 index 0000000..63be3cf --- /dev/null +++ b/7seg.c @@ -0,0 +1,52 @@ +/* $Id$ */ +/* + * Copyright (c) 2005 Dimitri Sokolyuk + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +char allowed[] = "0123456789:.-"; + +char *seg[][3] = { + ['0'] = { " _ ", "| |", "|_|" }, + ['1'] = { " ", " |", " |" }, + ['2'] = { " _ ", " _|", "|_ " }, + ['3'] = { " _ ", " _|", " _|" }, + ['4'] = { " ", "|_|", " |" }, + ['5'] = { " _ ", "|_ ", " _|" }, + ['6'] = { " _ ", "|_ ", "|_|" }, + ['7'] = { " _ ", " |", " |" }, + ['8'] = { " _ ", "|_|", "|_|" }, + ['9'] = { " _ ", "|_|", " _|" }, + [':'] = { " ", " * ", " * " }, + ['.'] = { " ", " ", " * " }, + ['-'] = { " ", " _ ", " " }, +}; + +void +sevenseg(char t[3][80], size_t sz, char *s) +{ + char *p; + int i; + + for (i = 0; i < 3; i++) { + *t[i] = '\0'; + for (p = s; *p; p++) + if (strchr(allowed, *p) != NULL) + strlcat(t[i], seg[(int)*p][i], sz); + } +} -- cgit v1.2.3