summaryrefslogtreecommitdiff
path: root/src/drivers/ao_seven_segment.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-28 23:08:03 -0700
committerKeith Packard <keithp@keithp.com>2013-05-07 20:07:52 -0700
commit38d4110e59a44687d8a4743b8cd04cbf2761c9d8 (patch)
tree7fcfd5a4f7f0fa2d2ce6f8df909cfba466e87cd7 /src/drivers/ao_seven_segment.c
parentf09b2fc7fcfb1b3dcb1a46a8b9856092dd59866b (diff)
altos: Allow LCD segments to not be multiplexed across digits
This allows each LCD segment to be individually configured as to which COM and which SEG drives it, permitting maximum flexibility in wiring. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_seven_segment.c')
-rw-r--r--src/drivers/ao_seven_segment.c264
1 files changed, 134 insertions, 130 deletions
diff --git a/src/drivers/ao_seven_segment.c b/src/drivers/ao_seven_segment.c
index b3b5f878..961fbb84 100644
--- a/src/drivers/ao_seven_segment.c
+++ b/src/drivers/ao_seven_segment.c
@@ -34,134 +34,138 @@
*
*/
+#ifndef SEVEN_SEGMENT_DEBUG
+#define SEVEN_SEGMENT_DEBUG 0
+#endif
+
static const uint8_t ao_segments[] = {
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (0 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 0 */
-
- (0 << AO_SEGMENT_0) |
- (0 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (0 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (0 << AO_SEGMENT_6), /* 1 */
-
- (1 << AO_SEGMENT_0) |
- (0 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (0 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 2 */
-
- (1 << AO_SEGMENT_0) |
- (0 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 3 */
-
- (0 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (0 << AO_SEGMENT_6), /* 4 */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 5 */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 6 */
-
- (1 << AO_SEGMENT_0) |
- (0 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (0 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (0 << AO_SEGMENT_6), /* 7 */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 8 */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (0 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* 9 */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (0 << AO_SEGMENT_6), /* A */
-
- (0 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* b */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (0 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (0 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* c */
-
- (0 << AO_SEGMENT_0) |
- (0 << AO_SEGMENT_1) |
- (1 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (1 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* d */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (0 << AO_SEGMENT_5) |
- (1 << AO_SEGMENT_6), /* E */
-
- (1 << AO_SEGMENT_0) |
- (1 << AO_SEGMENT_1) |
- (0 << AO_SEGMENT_2) |
- (1 << AO_SEGMENT_3) |
- (1 << AO_SEGMENT_4) |
- (0 << AO_SEGMENT_5) |
- (0 << AO_SEGMENT_6), /* F */
+ (1 << 0) |
+ (1 << 1) |
+ (1 << 2) |
+ (0 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 0 */
+
+ (0 << 0) |
+ (0 << 1) |
+ (1 << 2) |
+ (0 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (0 << 6), /* 1 */
+
+ (1 << 0) |
+ (0 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (0 << 5) |
+ (1 << 6), /* 2 */
+
+ (1 << 0) |
+ (0 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 3 */
+
+ (0 << 0) |
+ (1 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (0 << 6), /* 4 */
+
+ (1 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (1 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 5 */
+
+ (1 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 6 */
+
+ (1 << 0) |
+ (0 << 1) |
+ (1 << 2) |
+ (0 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (0 << 6), /* 7 */
+
+ (1 << 0) |
+ (1 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 8 */
+
+ (1 << 0) |
+ (1 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (0 << 4) |
+ (1 << 5) |
+ (1 << 6), /* 9 */
+
+ (1 << 0) |
+ (1 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (0 << 6), /* A */
+
+ (0 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (1 << 6), /* b */
+
+ (1 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (0 << 3) |
+ (1 << 4) |
+ (0 << 5) |
+ (1 << 6), /* c */
+
+ (0 << 0) |
+ (0 << 1) |
+ (1 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (1 << 5) |
+ (1 << 6), /* d */
+
+ (1 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (0 << 5) |
+ (1 << 6), /* E */
+
+ (1 << 0) |
+ (1 << 1) |
+ (0 << 2) |
+ (1 << 3) |
+ (1 << 4) |
+ (0 << 5) |
+ (0 << 6), /* F */
};
void
@@ -177,7 +181,7 @@ ao_seven_segment_set(uint8_t digit, uint8_t value)
/* Check for decimal point */
if (value & 0x10)
- segments |= (1 << AO_SEGMENT_7);
+ segments |= (1 << 7);
}
for (s = 0; s <= 7; s++)
@@ -192,7 +196,7 @@ ao_seven_segment_clear(void)
}
-#if 0
+#if SEVEN_SEGMENT_DEBUG
static void
ao_seven_segment_show(void)
{
@@ -214,7 +218,7 @@ static const struct ao_cmds ao_seven_segment_cmds[] = {
void
ao_seven_segment_init(void)
{
-#if 0
+#if SEVEN_SEGMENT_DEBUG
ao_cmd_register(ao_seven_segment_cmds);
#endif
}