diff options
| -rw-r--r-- | MilfordInstruments.c | 98 | 
1 files changed, 71 insertions, 27 deletions
diff --git a/MilfordInstruments.c b/MilfordInstruments.c index ae2b7f1..2818e26 100644 --- a/MilfordInstruments.c +++ b/MilfordInstruments.c @@ -1,18 +1,18 @@ -/* $Id: MilfordInstruments.c,v 1.2 2003/10/05 17:58:50 reinelt Exp $ +/* $Id: MilfordInstruments.c,v 1.3 2003/10/08 13:39:53 andy-b Exp $   * - * driver for Milford Instruments serial display modules - * based on the MatrixOrbital driver by M. Reinelt  + * driver for Milford Instruments 'BPK' piggy-back serial interface board + * for standard Hitachi 44780 compatible lcd modules.   * - * Copyright 2003 Andy Baxter <andy@earthsong.free-online.co.uk> + * Written 2003 by Andy Baxter <andy@earthsong.free-online.co.uk>   * - * This file is part of LCD4Linux. + * based on the MatrixOrbital driver by M. Reinelt    * - * LCD4Linux is free software; you can redistribute it and/or modify + * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by   * the Free Software Foundation; either version 2, or (at your option)   * any later version.   * - * LCD4Linux is distributed in the hope that it will be useful, + * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   * GNU General Public License for more details. @@ -23,8 +23,8 @@   *   *   * $Log: MilfordInstruments.c,v $ - * Revision 1.2  2003/10/05 17:58:50  reinelt - * libtool junk; copyright messages cleaned up + * Revision 1.3  2003/10/08 13:39:53  andy-b + * Cleaned up code in MilfordInstruments.c, and added descriptions for other display sizes (untested)   *   * Revision 1.1  2003/09/29 06:58:36  reinelt   * new driver for Milford Instruments MI420 by Andy Baxter @@ -118,10 +118,10 @@ static void MI_write (char *string, int len)  static void MI_define_char (int ascii, char *buffer)  { -  char cmd[3]="\376x"; +  char cmd[2]="\376x";    if (ascii<8) { -    cmd[2]=(char)(64+ascii*8); -    MI_write (cmd, 3); +    cmd[1]=(char)(64+ascii*8); +    MI_write (cmd, 2);      MI_write (buffer, 8);    }  } @@ -210,21 +210,13 @@ static int MI_init (LCD *Self)  void MI_goto (int row, int col)  {    char cmd[2]="\376x"; -  char ddbase=0; -  switch (row) { -  case 0: -    ddbase=128; -    break; -  case 1: -    ddbase=192; -    break; -  case 2: -    ddbase=148; -    break; -  case 3: -    ddbase=212; -    break; -  } +  char ddbase=128; +  if (row & 1) { // i.e. if row is 1 or 3 +    ddbase += 64; +    }; +  if (row & 2) { // i.e. if row is 0 or 2. +    ddbase += 20; +    };    cmd[1]=(char)(ddbase+col);    MI_write(cmd,2);  } @@ -315,6 +307,57 @@ int MI_quit (void)  LCD MilfordInstruments[] = { +  { name: "MI216", +    rows:  2,  +    cols:  16, +    xres:  XRES, +    yres:  YRES, +    bars:  BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, +    icons: 0, +    gpos:  0, +    init:  MI_init, +    clear: MI_clear, +    put:   MI_put, +    bar:   MI_bar, +    icon:  MI_icon, +    gpo:   NULL, +    flush: MI_flush, +    quit:  MI_quit  +  }, +  { name: "MI220", +    rows:  2,  +    cols:  20, +    xres:  XRES, +    yres:  YRES, +    bars:  BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, +    icons: 0, +    gpos:  0, +    init:  MI_init, +    clear: MI_clear, +    put:   MI_put, +    bar:   MI_bar, +    icon:  MI_icon, +    gpo:   NULL, +    flush: MI_flush, +    quit:  MI_quit  +  }, +  { name: "MI240", +    rows:  2,  +    cols:  40, +    xres:  XRES, +    yres:  YRES, +    bars:  BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2, +    icons: 0, +    gpos:  0, +    init:  MI_init, +    clear: MI_clear, +    put:   MI_put, +    bar:   MI_bar, +    icon:  MI_icon, +    gpo:   NULL, +    flush: MI_flush, +    quit:  MI_quit  +  },    { name: "MI420",      rows:  4,       cols:  20, @@ -332,5 +375,6 @@ LCD MilfordInstruments[] = {      flush: MI_flush,      quit:  MI_quit     }, +    { NULL }  };  | 
