[mythtv-users] VFD finetuning

Andrew Lyon andrew.lyon at gmail.com
Thu Nov 9 13:13:23 UTC 2006


On 11/9/06, Andrew Lyon <andrew.lyon at gmail.com> wrote:
> On 11/9/06, Peter Carlsson <maillist.peter at home.se> wrote:
> > Hello!
> >
> > I have a SilverStone LC03V and would like to have the
> > VFD display to show some more information. How do I
> > configure it to display system information i.e. memory
> > usage, temperature, CPU usage etcetera?
> >
> > I am from Sweden and when MythTV displays information
> > about recordings etcetera it doesn't show swedish
> > characters correctly. How could I change the character
> > set to at least show 'a' and 'o' instead of swedish
> > characters?
> >
> > I am running Debian (testing).
> >
> > Best regards,
> > Peter Carlsson
> > _______________________________________________
> > mythtv-users mailing list
> > mythtv-users at mythtv.org
> > http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users
> >
>
>
> You will find that is not going to be easy, at least not if you have
> the same problem that I ran into..  I have a silverstone vfd that fits
> into a 5 1/4 drive bay, when it was used with LCDProc I found that
> some characters were not displayed correctly, e.g. the blocks used to
> display volume bars were displayed as symbols.
>
> I got the manual for the vfd display used in the silverstone vfd unit
> and quickly realised that it came with a different character set than
> LCDProc was designed for, however the LCDProc software can also send
> bitmapped characters, as the missing/incorrect characters were simple
> bars (and partial bars) it was easy to create bitmaps for them and
> patch the source code to use those instead of the built in characters.
>
> But if you are talking about "real" letters and symbols it will be
> harder, as you will have to draw them using 0's and 1's!
>
> The patches that I made were lost a long time ago when LCDProc was
> upgraded by portage and I've never bothered to recreate them, but it
> wouldnt take me too long to do so, so if you'd like me to post the
> details let me know.....
>
> Andy

I retract that statement!, I found the patch, its very simple but you
can get the rough idea of how to create and assign bitmap characters:

--- /usr/src/build/lcdproc-0.4.5/server/drivers/hd44780.c	2004-12-08
20:34:12.000000000 +0000
+++ /usr/src/build/lcdproc-0.4.5/server/drivers/hd44780.c.orig	2004-12-08
19:45:12.000000000 +0000
@@ -541,16 +541,7 @@
 		1, 1, 1, 1, 1,
 		1, 1, 1, 1, 1,
 	};
-	char h[] = {
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-	};
+
 	HD44780_set_char (1, a);
 	HD44780_set_char (2, b);
 	HD44780_set_char (3, c);
@@ -558,7 +549,6 @@
 	HD44780_set_char (5, e);
 	HD44780_set_char (6, f);
 	HD44780_set_char (7, g);
-	HD44780_set_char (9, h);
 }

 /////////////////////////////////////////////////////////////////
@@ -608,21 +598,12 @@
 		1, 1, 1, 1, 0,
 		1, 1, 1, 1, 0,
 	};
-	char e[] = {
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-		1, 1, 1, 1, 1,
-	};
+
 	HD44780_set_char (1, a);
 	HD44780_set_char (2, b);
 	HD44780_set_char (3, c);
 	HD44780_set_char (4, d);
-	HD44780_set_char (9, e);
+
 }

 /////////////////////////////////////////////////////////////////
@@ -631,12 +612,12 @@
 void
 HD44780_vbar (int x, int len)
 {
-	char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 9 };
+	char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 };

 	int y;
 	for (y = HD44780->hgt; y > 0 && len > 0; y--) {
 		if (len >= HD44780->cellhgt)
-			HD44780_chr (x, y, 9);
+			HD44780_chr (x, y, 255);
 		else
 			HD44780_chr (x, y, map[len]);

@@ -651,11 +632,11 @@
 void
 HD44780_hbar (int x, int y, int len)
 {
-	char map[6] = { 32, 1, 2, 3, 4, 9 };
+	char map[6] = { 32, 1, 2, 3, 4, 255 };

 	for (; x <= HD44780->wid && len > 0; x++) {
 		if (len >= HD44780->cellwid)
-			HD44780_chr (x, y, 9);
+			HD44780_chr (x, y, 255);
 		else
 			HD44780_chr (x, y, map[len]);

@@ -728,7 +709,7 @@
 	int row, col;
 	int letter;

-	if (n < 0 || n > 9)
+	if (n < 0 || n > 7)
 		return;
 	if (!dat)
 		return;


Andy


More information about the mythtv-users mailing list