Library for Sure Electronics HT1632 based LED matrix displays. Supports multiple displays connected together.

Dependents:   HT1632MsgScroller SMS_LEDMatrixPrinter

Revision:
6:80f554fd77a0
Parent:
5:33b2bfce06b7
Child:
8:61130f9b5b79
--- a/HT1632_LedMatrix.cpp	Mon Nov 12 23:13:04 2012 +0000
+++ b/HT1632_LedMatrix.cpp	Tue Nov 20 13:08:43 2012 +0000
@@ -1,7 +1,6 @@
-/***********************************************************************
- * HT1632_LedMatrix.cpp - Library for Holtek HT1632 LED driver chip,
- *     As implemented on the Sure Electronics DE-DP10X display board
- *       (8 x 32 dot matrix LED module.)
+/** Library for Holtek HT1632 LED driver chip,
+ * As implemented on the Sure Electronics DE-DP10X display board
+ * 8 x 32 dot matrix LED module.)
  *
  * Original code by:
  * Nov, 2008 by Bill Westfield ("WestfW")
@@ -13,7 +12,35 @@
  * Arduino Library Created and updated by Andrew Lindsay October/November 2009
  *
  * Ported to Mbed platform by Andrew Lindsay, November 2012
- ***********************************************************************/
+ *
+ * @author Andrew Lindsay
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2012 Andrew Lindsay (andrew [at] thiseldo [dot] co [dot] uk)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @section DESCRIPTION
+ *  Functions to drive displays
+ *
+ */
 
 #include "mbed.h"
 #include "HT1632_LedMatrix.h"
@@ -23,24 +50,18 @@
 #define LOW 0
 /*
  * Set these constants to the values of the pins connected to the SureElectronics Module
- * NOTE - these are different from the original demo code by westfw
- *
- * Use Pin Mappings 8-11 for CS1 to 4, 12 for Data and 13 for Clock
- * Use mixture of #define and variables.
- * Pin numbers are for setup and port identifiers are for direct port writes.
+ * For mbed, use WR=p7, DATA=p5, cs1=p17, cs2=p18, cs3=p19, cs4=p20
  */
 
-// For mbed, use WR=p7, DATA=p5, cs1=p17, cs2=p18, cs3=p19, cs4=p20
-
-DigitalOut ht1632_wrclk(p7); // For Test : Led1 is Clock
-DigitalOut ht1632_data(p5); //            Led2 is Data ....
+DigitalOut ht1632_wrclk(p7);
+DigitalOut ht1632_data(p5);
 DigitalOut ht1632_cs1(p17);
 DigitalOut ht1632_cs2(p18);
 DigitalOut ht1632_cs3(p19);
 DigitalOut ht1632_cs4(p20);
 
 // CS pins 17, 18, 19, 20 used.
-DigitalOut  ht1632_cs[4] = {p17, p18, p19, p20};    // Chip Select (1, 2, 3, or 4)
+DigitalOut  ht1632_cs[4] = {p17, p18, p19, p20};    // Chip Select (1, 2, 3, 4)
 
 // helper macros
 #define chip_number(x,y) (x >> 5) + (y >> 3)*numYDevices
@@ -117,14 +138,16 @@
     cursorY = 0;
 }
 
-void HT1632_LedMatrix::displayOff( void ) {
+void HT1632_LedMatrix::displayOff( void )
+{
     for (uint8_t chipno=0; chipno<4; chipno++) {
         chipfree(chipno);     // unselect it
         sendcmd(chipno, HT1632_CMD_LEDOFF);    // LEDs on
     }
 }
 
-void HT1632_LedMatrix::displayOn( void ) {
+void HT1632_LedMatrix::displayOn( void )
+{
     for (uint8_t chipno=0; chipno<4; chipno++) {
         chipfree(chipno);     // unselect it
         sendcmd(chipno, HT1632_CMD_LEDON);    // LEDs on
@@ -180,11 +203,6 @@
     while (count) {
         ht1632_wrclk = LOW;
         ht1632_data = bits & 1;
-//        if (bits & 1) {
-//            ht1632_data = HIGH;
-//        } else {
-//            ht1632_data = LOW;
-//        }
         ht1632_wrclk = HIGH;
         count--;
         bits >>= 1;
@@ -449,14 +467,14 @@
     for (int i=xMax-numberCols; i<xMax; i++) {
         shadowram[i]=0;
     }
-/*
-    for (int i=0; i<128-numberCols-1; i++) {
-        shadowram[i]=shadowram[i+numberCols];
-    }
-    for (int i=128-numberCols; i<128; i++) {
-        shadowram[i]=0;
-    }
-*/
+    /*
+        for (int i=0; i<128-numberCols-1; i++) {
+            shadowram[i]=shadowram[i+numberCols];
+        }
+        for (int i=128-numberCols; i<128; i++) {
+            shadowram[i]=0;
+        }
+    */
     cursorX -= numberCols;
     if (cursorX < 0 ) cursorX = 0;
 }