annotate service/busyboxArduino/LiquidCrystal_V1.2.1/LiquidCrystal/LiquidCrystal_SR2W.h @ 959:d05562532887

add LiquidCrystal_V1.2.1 lib Ignore-this: ddfe8b0c1d6e19f210684520859d5a57 darcs-hash:20150104073516-312f9-919b23acb8a7ff8ee237635640d3cf51ab6f89ad
author drewp <drewp@bigasterisk.com>
date Sat, 03 Jan 2015 23:35:16 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
959
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
1 // ---------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
2 // Created/Adapted by Bill Perry 2012-03-16
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
3 // Copyright 2012 - Under creative commons license 3.0:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
4 // Attribution-ShareAlike CC BY-SA
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
5 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
6 // This software is furnished "as is", without technical support, and with no
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
7 // warranty, express or implied, as to its usefulness for any purpose.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
8 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
9 // @file LiquidCrystal_SR2W.h
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
10 // Connects a hd44780 LCD using 2 pins from the Arduino, via an 8-bit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
11 // ShiftRegister (SR2W from now on).
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
12 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
13 // @brief
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
14 // This is the 2 wire shift register interface class for the LCD library
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
15 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
16 // The functionality provided by this class and its base class is a superset of
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
17 // the original functionality of the Arduino LiquidCrystal library and can
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
18 // be used as such.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
19 // See the LCD class for a full description of the API functions available.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
20 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
21 // It works with a 8-bit unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
22 // shift register (IE a very simple SR), and an hd44780 LCD in 4-bit mode.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
23 // Any such shift register should do (pref. 74LS family IC's for 2-wire).
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
24 // 74LS164 and 74HC595 have been exstensively tested.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
25 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
26 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
27 // 2 Pins required from the Arduino:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
28 // - Data/Enable
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
29 // - Clock
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
30 // The Data pin is also used to control the enable signal
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
31 // LCD RW-pin hardwired to LOW (only writing to LCD).
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
32 // Busy Flag (BF, data bit D7) is not read.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
33 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
34 // Original project homepage: http://code.google.com/p/arduinoshiftreglcd/
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
35 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
36 // Shift register bits
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
37 // Bit #0 - (cannot be used on 74HC595)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
38 // Bit #1 - optional backlight control
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
39 // Bit #2 - connects to RS (Register Select) on the LCD
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
40 // Bit #3 - connects to LCD data inputs D4
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
41 // Bit #4 - connects to LCD data inputs D5
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
42 // Bit #5 - connects to LCD data inputs D6
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
43 // Bit #6 - connects to LCD data inputs D7
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
44 // Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate")
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
45 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
46 // Wiring for a 74LS164
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
47 // ---------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
48 // 1k/4.7k
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
49 // +--------[ Resistor ]--------+---(LCD Enable)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
50 // | |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
51 // | 74LS164 (VCC) |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
52 // | +----u----+ | _V_ diode
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
53 // (data pin)---+---+--1-|A VCC|-14-+ |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
54 // | | | |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
55 // +--2-|B Q7|-13------+
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
56 // 3-|Q0 Q6|-12--(LCD D7)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
57 // (BL Circuit)--------4-|Q1 Q5|-11--(LCD D6)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
58 // (LCD RS)------------5-|Q2 Q4|-10--(LCD D5)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
59 // (LCD D4)------------6-|Q3 /MR|--9--(VCC)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
60 // +-7-|GND CP|--8--(clock pin)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
61 // | +---------+
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
62 // | 0.1uf
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
63 // (gnd)-----||----(vcc)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
64 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
65 // Wiring for a 74HC595
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
66 // --------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
67 // NOTE: the 74HC595 is a latching shift register. In order to get it to operate
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
68 // in a "non latching" mode, RCLK and SCLK are tied together. The side effect of this
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
69 // is that the latched output is one clock behind behind the internal shift register bits.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
70 // To compensate for this the wiring is offset by one bit position lower.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
71 // For example, while the backlight is hooked to Q0 it is still using bit 1 of
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
72 // of the shift register because the outputs are 1 clock behind the real internal shift
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
73 // register.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
74 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
75 // 74HC595 (VCC)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
76 // +----u----+ | +-----------------------(BL circuit)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
77 // (LCD RS)------------1-|Q1 VCC|-16-+ | +--------------------(data pin)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
78 // (LCD D4)------------2-|Q2 Q0|-15----+ | 1k/4.7k
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
79 // (LCD D5)------------3-|Q3 SER|-14-------+---[ Resistor ]--+--(LCD Enable)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
80 // (LCD D6)------------4-|Q4 /OE|-13--(gnd) |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
81 // (LCD D7)------------5-|Q5 RCLK|-12-------+ |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
82 // | | | |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
83 // +------6-|Q6 SCLK|-11-------+--(clock pin) |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
84 // | 7-|Q7 /MR|-10--(VCC) |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
85 // | +-8-|GND Q6'|--9 |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
86 // | | +---------+ diode _V_
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
87 // | | 0.1uf |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
88 // | (gnd)-----||----(vcc) |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
89 // +-----------------------------------------------+
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
90 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
91 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
92 // Backlight Control circuit
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
93 // -------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
94 // Because the shift resiter is not latching the outputs, the backlight circuitry
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
95 // will "see" the output bits as they are shifted into the shift register which
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
96 // can cause the backlight to flicker rather than remain constantly on/off.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
97 // The circuit below slows down the transitions to the transistor to remove
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
98 // the visible flicker. When the BL input is HIGH the LCD backlight will turn on.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
99 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
100 // (value depends on LCD, 100ohm is usually safe)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
101 // (LCD BL anode)---[ resistor ]---(vcc)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
102 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
103 // (LCD BL cathode)-------------------------------+
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
104 // |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
105 // D
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
106 // |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
107 // (BL input)----[ 4.7k Resistor ]----+-------G-|-< (2N7000 FET)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
108 // | |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
109 // (0.1uf) = S
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
110 // | |
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
111 // (gnd) (gnd)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
112 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
113 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
114 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
115 //
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
116 // History
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
117 // 2012.03.16 bperrybap - creation/adaption from SR header to create SR2W header.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
118 // Fixed typo in SR2W mask define names
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
119 // @author B. Perry - bperrybap@opensource.billsworld.billandterrie.com
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
120 // --------------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
121 #ifndef _LIQUIDCRYSTAL_SR2W_
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
122 #define _LIQUIDCRYSTAL_SR2W_
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
123
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
124 #include <inttypes.h>
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
125 #include "LCD.h"
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
126 #include "FastIO.h"
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
127
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
128
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
129 // two-wire SR output bit constants
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
130 // ---------------------------------------------------------------------------
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
131
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
132 #define SR2W_BL_MASK 0x02
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
133 #define SR2W_RS_MASK 0x04
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
134 #define SR2W_DATA_MASK 0x78 // data bits are hard coded to be SR bits 6,5,4,3
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
135 #define SR2W_EN_MASK 0x80 // cannot ever be changed
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
136
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
137 class LiquidCrystal_SR2W : public LCD
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
138 {
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
139 public:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
140 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
141 @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
142 @abstract LCD 2 wire SHIFT REGISTER constructor.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
143 @discussion Defines the pin assignments that connect to the shift register.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
144 The constructor does not initialize the LCD. Assuming 1 line 8 pixel high
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
145 font.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
146
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
147 @param srdata[in] Arduino pin for shift register data line.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
148 @param srclock[in] Arduino pin for shift register clock line.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
149 @param blpol[in] optional backlight polarity (default = POSITIVE)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
150 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
151 LiquidCrystal_SR2W (uint8_t srdata, uint8_t srclock, t_backlighPol blpol = POSITIVE);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
152
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
153 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
154 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
155 @abstract Send a particular value to the LCD.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
156 @discussion Sends a particular value to the LCD for writing to the LCD or
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
157 as an LCD command using the shift register.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
158
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
159 Users should never call this method.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
160
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
161 @param value[in] Value to send to the LCD.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
162 @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
163 the LCD.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
164 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
165 virtual void send(uint8_t value, uint8_t mode);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
166
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
167
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
168 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
169 @function
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
170 @abstract Switch-on/off the LCD backlight.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
171 @discussion Switch-on/off the LCD backlight.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
172 The setBacklightPin has to be called before setting the backlight for
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
173 this method to work. @see setBacklightPin.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
174
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
175 @param mode[in] backlight mode (0 off, non-zero on)
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
176 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
177 void setBacklight ( uint8_t mode );
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
178
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
179 private:
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
180
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
181 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
182 @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
183 @abstract Initializes the LCD pin allocation
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
184 @discussion Initializes the LCD pin allocation and configuration.
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
185 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
186 void init ( uint8_t srdata, uint8_t srclock, t_backlighPol blpol, uint8_t lines, uint8_t font );
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
187
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
188 /*!
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
189 * @method
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
190 * @abstract takes care of shifting and the enable pulse
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
191 */
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
192 void loadSR (uint8_t val);
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
193
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
194 fio_register _srDataRegister; // Serial Data pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
195 fio_bit _srDataMask;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
196 fio_register _srClockRegister; // Clock Pin
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
197 fio_bit _srClockMask;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
198
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
199 uint8_t _blPolarity;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
200 uint8_t _blMask;
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
201 };
d05562532887 add LiquidCrystal_V1.2.1 lib
drewp <drewp@bigasterisk.com>
parents:
diff changeset
202 #endif