sources from initial AVR turn-on for TeleTerra
[fw/altos] / avr / tmp / group__pfleury__lcd.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3 <title>AVR-GCC libraries: LCD library</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 <link href="tabs.css" rel="stylesheet" type="text/css">
6 </head><body>
7 <!-- Generated by Doxygen 1.4.5 -->
8 <h1>LCD library</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
9 Basic routines for interfacing a HD44780U-based text LCD display. 
10 <p>
11 <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;lcd.h&gt;</span> 
12 </pre></div><p>
13 Originally based on Volker Oth's LCD library, changed <a class="el" href="group__pfleury__lcd.html#gedadae82796028f0eb4877c2633a2093">lcd_init()</a>, added additional constants for <a class="el" href="group__pfleury__lcd.html#gc6aa7e0d522b4c013ebeae1ccd23d510">lcd_command()</a>, added 4-bit I/O mode, improved and optimized code.<p>
14 Library can be operated in memory mapped mode (LCD_IO_MODE=0) or in 4-bit IO port mode (LCD_IO_MODE=1). 8-bit IO port mode not supported.<p>
15 Memory mapped mode compatible with Kanda STK200, but supports also generation of R/W signal through A8 address line.<p>
16 <dl compact><dt><b>Author:</b></dt><dd>Peter Fleury <a href="mailto:pfleury@gmx.ch">pfleury@gmx.ch</a> <a href="http://jump.to/fleury">http://jump.to/fleury</a></dd></dl>
17 <dl compact><dt><b>See also:</b></dt><dd>The chapter <a href="http://homepage.sunrise.ch/mysunrise/peterfleury/avr-lcd44780.html" target="_blank">Interfacing a HD44780 Based LCD to an AVR</a> on my home page. </dd></dl>
18
19 <p>
20 <table border="0" cellpadding="0" cellspacing="0">
21 <tr><td></td></tr>
22 <tr><td colspan="2"><br><h2>Definitions for MCU Clock Frequency</h2></td></tr>
23 <tr><td colspan="2">Adapt the MCU clock frequency in Hz to your target. <br><br></td></tr>
24 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gec4e68f6eb4f2cd1a3d52a391e97a48e">XTAL</a>&nbsp;&nbsp;&nbsp;4000000</td></tr>
25
26 <tr><td colspan="2"><br><h2>Definition for LCD controller type</h2></td></tr>
27 <tr><td colspan="2">Use 0 for HD44780 controller, change to 1 for displays with KS0073 controller. <br><br></td></tr>
28 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga06e40df758f5c4ef912269bada3e02e">LCD_CONTROLLER_KS0073</a>&nbsp;&nbsp;&nbsp;0</td></tr>
29
30 <tr><td colspan="2"><br><h2>Definitions for Display Size</h2></td></tr>
31 <tr><td colspan="2">Change these definitions to adapt setting to your display <br><br></td></tr>
32 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gdd844875f979e4be3fe10f6157fb1000">LCD_LINES</a>&nbsp;&nbsp;&nbsp;2</td></tr>
33
34 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gf43f4243eab72a4f63404ef79c4628b4">LCD_DISP_LENGTH</a>&nbsp;&nbsp;&nbsp;16</td></tr>
35
36 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g9c510a31cc0da22f1ed6796c182e5ae9">LCD_LINE_LENGTH</a>&nbsp;&nbsp;&nbsp;0x40</td></tr>
37
38 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g0f8269b98efeb53a53e31ad5b2671e60">LCD_START_LINE1</a>&nbsp;&nbsp;&nbsp;0x00</td></tr>
39
40 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g41302f6ca93d24281422eb6b21d29ead">LCD_START_LINE2</a>&nbsp;&nbsp;&nbsp;0x40</td></tr>
41
42 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g71379f62a63fec1d3548572efb619b25">LCD_START_LINE3</a>&nbsp;&nbsp;&nbsp;0x14</td></tr>
43
44 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g73e09d62eefad16f08b66ee39e9c2a92">LCD_START_LINE4</a>&nbsp;&nbsp;&nbsp;0x54</td></tr>
45
46 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g9edda67caf57a323972fa8442863dd5f">LCD_WRAP_LINES</a>&nbsp;&nbsp;&nbsp;0</td></tr>
47
48 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g03ce9159a9bc9263b65926df0e542769">LCD_IO_MODE</a>&nbsp;&nbsp;&nbsp;1</td></tr>
49
50 <tr><td colspan="2"><br><h2>Definitions for 4-bit IO mode</h2></td></tr>
51 <tr><td colspan="2">Change LCD_PORT if you want to use a different port for the LCD pins.<p>
52 The four LCD data lines and the three control lines RS, RW, E can be on the same port or on different ports. Change LCD_RS_PORT, LCD_RW_PORT, LCD_E_PORT if you want the control lines on different ports.<p>
53 Normally the four data lines should be mapped to bit 0..3 on one port, but it is possible to connect these data lines in different order or even on different ports by adapting the LCD_DATAx_PORT and LCD_DATAx_PIN definitions. <br><br></td></tr>
54 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ge794cd77f52c76793895fb9f0ddde790">LCD_PORT</a>&nbsp;&nbsp;&nbsp;PORTA</td></tr>
55
56 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gea0b0c8e6f06c7978b062f9b64c65b17">LCD_DATA0_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
57
58 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g4804194d2e51913e96a18540ecc37438">LCD_DATA1_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
59
60 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g457dfaa137d806b907824c5addff463b">LCD_DATA2_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
61
62 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gb83bd18a43ac793d7f83251664b76102">LCD_DATA3_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
63
64 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g1bd9e368dd03e4e4022e2fe4349b4a89">LCD_DATA0_PIN</a>&nbsp;&nbsp;&nbsp;0</td></tr>
65
66 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gc22ea9521de145ada64c9ac4a24a0d57">LCD_DATA1_PIN</a>&nbsp;&nbsp;&nbsp;1</td></tr>
67
68 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gef2c79ad5069e1dbcf99129953fef99f">LCD_DATA2_PIN</a>&nbsp;&nbsp;&nbsp;2</td></tr>
69
70 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g2b7c15d3b71de014dffbed911999e93e">LCD_DATA3_PIN</a>&nbsp;&nbsp;&nbsp;3</td></tr>
71
72 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gfa2314e7d8033e0aca5769380a3e50d0">LCD_RS_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
73
74 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g59c1b674dce414b68c455f1ac2b4b6fc">LCD_RS_PIN</a>&nbsp;&nbsp;&nbsp;4</td></tr>
75
76 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gd73977cd6182ec6efadc7798792a65f5">LCD_RW_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
77
78 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g8ab664d4eccaeb33a3cad2ae59c04f8c">LCD_RW_PIN</a>&nbsp;&nbsp;&nbsp;5</td></tr>
79
80 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g0e04d67ce381ed95c8589838110c1654">LCD_E_PORT</a>&nbsp;&nbsp;&nbsp;LCD_PORT</td></tr>
81
82 <tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gb3c58eb57ae653b281826d6e694d9be6">LCD_E_PIN</a>&nbsp;&nbsp;&nbsp;6</td></tr>
83
84 <tr><td colspan="2"><br><h2>Definitions for LCD command instructions</h2></td></tr>
85 <tr><td colspan="2">The constants define the various LCD controller instructions which can be passed to the function <a class="el" href="group__pfleury__lcd.html#gc6aa7e0d522b4c013ebeae1ccd23d510">lcd_command()</a>, see HD44780 data sheet for a complete description. <br><br></td></tr>
86 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb6c0647d4002249e52055ce4a5e1b6e2"></a><!-- doxytag: member="pfleury_lcd::LCD_CLR" ref="gb6c0647d4002249e52055ce4a5e1b6e2" args="" -->
87 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_CLR</b>&nbsp;&nbsp;&nbsp;0</td></tr>
88
89 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6ad700e4d3900d4feb8238bfc479834c"></a><!-- doxytag: member="pfleury_lcd::LCD_HOME" ref="g6ad700e4d3900d4feb8238bfc479834c" args="" -->
90 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_HOME</b>&nbsp;&nbsp;&nbsp;1</td></tr>
91
92 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g93ccf8edc829179b43b6eeacc66b1bb4"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_MODE" ref="g93ccf8edc829179b43b6eeacc66b1bb4" args="" -->
93 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_MODE</b>&nbsp;&nbsp;&nbsp;2</td></tr>
94
95 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9e4e5cb2b07761ade7cd43505209663a"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_INC" ref="g9e4e5cb2b07761ade7cd43505209663a" args="" -->
96 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC</b>&nbsp;&nbsp;&nbsp;1</td></tr>
97
98 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8b0e6ed593e7541f4166c1a906b95582"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_SHIFT" ref="g8b0e6ed593e7541f4166c1a906b95582" args="" -->
99 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_SHIFT</b>&nbsp;&nbsp;&nbsp;0</td></tr>
100
101 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gdfb5192d28256bba56eab1ca052b744f"></a><!-- doxytag: member="pfleury_lcd::LCD_ON" ref="gdfb5192d28256bba56eab1ca052b744f" args="" -->
102 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ON</b>&nbsp;&nbsp;&nbsp;3</td></tr>
103
104 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g31e7b1de3a2d43284c580be46120d796"></a><!-- doxytag: member="pfleury_lcd::LCD_ON_DISPLAY" ref="g31e7b1de3a2d43284c580be46120d796" args="" -->
105 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_DISPLAY</b>&nbsp;&nbsp;&nbsp;2</td></tr>
106
107 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5e026efe1f4b830b1b300a3c2c84d8f5"></a><!-- doxytag: member="pfleury_lcd::LCD_ON_CURSOR" ref="g5e026efe1f4b830b1b300a3c2c84d8f5" args="" -->
108 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_CURSOR</b>&nbsp;&nbsp;&nbsp;1</td></tr>
109
110 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gdb8db7b10a3d88b3ed3a751ec12f1eca"></a><!-- doxytag: member="pfleury_lcd::LCD_ON_BLINK" ref="gdb8db7b10a3d88b3ed3a751ec12f1eca" args="" -->
111 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_BLINK</b>&nbsp;&nbsp;&nbsp;0</td></tr>
112
113 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf252c05493bd664537aaa51bf87814ec"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE" ref="gf252c05493bd664537aaa51bf87814ec" args="" -->
114 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE</b>&nbsp;&nbsp;&nbsp;4</td></tr>
115
116 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g20ea24786f22d84ba9c55554656906c5"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_DISP" ref="g20ea24786f22d84ba9c55554656906c5" args="" -->
117 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP</b>&nbsp;&nbsp;&nbsp;3</td></tr>
118
119 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ab47ab95dd06eaccf3e9e86af71c3ac"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_RIGHT" ref="g1ab47ab95dd06eaccf3e9e86af71c3ac" args="" -->
120 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_RIGHT</b>&nbsp;&nbsp;&nbsp;2</td></tr>
121
122 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0dccc76f0fdb0ca0e92a27957be7508a"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION" ref="g0dccc76f0fdb0ca0e92a27957be7508a" args="" -->
123 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION</b>&nbsp;&nbsp;&nbsp;5</td></tr>
124
125 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g53db2a601db03c8f1744ef409de195e3"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_8BIT" ref="g53db2a601db03c8f1744ef409de195e3" args="" -->
126 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT</b>&nbsp;&nbsp;&nbsp;4</td></tr>
127
128 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9df9d601b91e8dd1c8e32cc0502fa18d"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_2LINES" ref="g9df9d601b91e8dd1c8e32cc0502fa18d" args="" -->
129 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_2LINES</b>&nbsp;&nbsp;&nbsp;3</td></tr>
130
131 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g24097bc7d02a539b90143681a1d8f75b"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_10DOTS" ref="g24097bc7d02a539b90143681a1d8f75b" args="" -->
132 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_10DOTS</b>&nbsp;&nbsp;&nbsp;2</td></tr>
133
134 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge5fa6d906e12c59745a752025562f10f"></a><!-- doxytag: member="pfleury_lcd::LCD_CGRAM" ref="ge5fa6d906e12c59745a752025562f10f" args="" -->
135 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_CGRAM</b>&nbsp;&nbsp;&nbsp;6</td></tr>
136
137 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8151d4f3782bf89da0c02763a5338b17"></a><!-- doxytag: member="pfleury_lcd::LCD_DDRAM" ref="g8151d4f3782bf89da0c02763a5338b17" args="" -->
138 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DDRAM</b>&nbsp;&nbsp;&nbsp;7</td></tr>
139
140 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g49711195a2017d6c172207b062c7b73e"></a><!-- doxytag: member="pfleury_lcd::LCD_BUSY" ref="g49711195a2017d6c172207b062c7b73e" args="" -->
141 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_BUSY</b>&nbsp;&nbsp;&nbsp;7</td></tr>
142
143 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0218e18af67bef527a29f1cdacf6ed23"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_DEC" ref="g0218e18af67bef527a29f1cdacf6ed23" args="" -->
144 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_DEC</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
145
146 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g11b45d9f793a2140fd0ee4fce7a0ee22"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_DEC_SHIFT" ref="g11b45d9f793a2140fd0ee4fce7a0ee22" args="" -->
147 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_DEC_SHIFT</b>&nbsp;&nbsp;&nbsp;0x05</td></tr>
148
149 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge3aa1687fedc3b8bc430b4cd62c2b65f"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_INC_" ref="ge3aa1687fedc3b8bc430b4cd62c2b65f" args="" -->
150 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC_</b>&nbsp;&nbsp;&nbsp;0x06</td></tr>
151
152 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7bea23e46d4d98baa5a6a6025f42b6a4"></a><!-- doxytag: member="pfleury_lcd::LCD_ENTRY_INC_SHIFT" ref="g7bea23e46d4d98baa5a6a6025f42b6a4" args="" -->
153 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC_SHIFT</b>&nbsp;&nbsp;&nbsp;0x07</td></tr>
154
155 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g70be76fe01084c867429994240faa1f6"></a><!-- doxytag: member="pfleury_lcd::LCD_DISP_OFF" ref="g70be76fe01084c867429994240faa1f6" args="" -->
156 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_OFF</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
157
158 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf0363f2f2b78a61362f26ffa36082185"></a><!-- doxytag: member="pfleury_lcd::LCD_DISP_ON" ref="gf0363f2f2b78a61362f26ffa36082185" args="" -->
159 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON</b>&nbsp;&nbsp;&nbsp;0x0C</td></tr>
160
161 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g6b85df16a93c2d89f1710b143a868396"></a><!-- doxytag: member="pfleury_lcd::LCD_DISP_ON_BLINK" ref="g6b85df16a93c2d89f1710b143a868396" args="" -->
162 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_BLINK</b>&nbsp;&nbsp;&nbsp;0x0D</td></tr>
163
164 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge6fa09e0ec80308708e64a47b6e280d2"></a><!-- doxytag: member="pfleury_lcd::LCD_DISP_ON_CURSOR" ref="ge6fa09e0ec80308708e64a47b6e280d2" args="" -->
165 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_CURSOR</b>&nbsp;&nbsp;&nbsp;0x0E</td></tr>
166
167 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3780da6ba5a65681b1387aa848cffa55"></a><!-- doxytag: member="pfleury_lcd::LCD_DISP_ON_CURSOR_BLINK" ref="g3780da6ba5a65681b1387aa848cffa55" args="" -->
168 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_CURSOR_BLINK</b>&nbsp;&nbsp;&nbsp;0x0F</td></tr>
169
170 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfe51acc36fd10fa81e99decbba5bb43e"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_CURSOR_LEFT" ref="gfe51acc36fd10fa81e99decbba5bb43e" args="" -->
171 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_CURSOR_LEFT</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
172
173 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf06593b9d62c0a089da3be7ece318924"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_CURSOR_RIGHT" ref="gf06593b9d62c0a089da3be7ece318924" args="" -->
174 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_CURSOR_RIGHT</b>&nbsp;&nbsp;&nbsp;0x14</td></tr>
175
176 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g31f91b811a964c619651d3411a8d3d06"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_DISP_LEFT" ref="g31f91b811a964c619651d3411a8d3d06" args="" -->
177 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP_LEFT</b>&nbsp;&nbsp;&nbsp;0x18</td></tr>
178
179 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g938816ca2abf6e8dc905ac68f14519f3"></a><!-- doxytag: member="pfleury_lcd::LCD_MOVE_DISP_RIGHT" ref="g938816ca2abf6e8dc905ac68f14519f3" args="" -->
180 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP_RIGHT</b>&nbsp;&nbsp;&nbsp;0x1C</td></tr>
181
182 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc125eb9d5126f90422ea742d8734e4f8"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_4BIT_1LINE" ref="gc125eb9d5126f90422ea742d8734e4f8" args="" -->
183 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_4BIT_1LINE</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
184
185 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2d2e1f64c83dba34822c089cd819634d"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_4BIT_2LINES" ref="g2d2e1f64c83dba34822c089cd819634d" args="" -->
186 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_4BIT_2LINES</b>&nbsp;&nbsp;&nbsp;0x28</td></tr>
187
188 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8a2a4b7457b1677bbc12d4f182f5ee62"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_8BIT_1LINE" ref="g8a2a4b7457b1677bbc12d4f182f5ee62" args="" -->
189 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT_1LINE</b>&nbsp;&nbsp;&nbsp;0x30</td></tr>
190
191 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g13ba9324b1abe30dcbadf52ee33e1e12"></a><!-- doxytag: member="pfleury_lcd::LCD_FUNCTION_8BIT_2LINES" ref="g13ba9324b1abe30dcbadf52ee33e1e12" args="" -->
192 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT_2LINES</b>&nbsp;&nbsp;&nbsp;0x38</td></tr>
193
194 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2bc1f4b4aa9d922621728695154608e8"></a><!-- doxytag: member="pfleury_lcd::LCD_MODE_DEFAULT" ref="g2bc1f4b4aa9d922621728695154608e8" args="" -->
195 #define&nbsp;</td><td class="memItemRight" valign="bottom"><b>LCD_MODE_DEFAULT</b>&nbsp;&nbsp;&nbsp;((1&lt;&lt;LCD_ENTRY_MODE) | (1&lt;&lt;LCD_ENTRY_INC) )</td></tr>
196
197 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
198 <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd33c0d74b983e3f2c36f3278a462be15"></a><!-- doxytag: member="pfleury_lcd::lcd_puts_P" ref="gd33c0d74b983e3f2c36f3278a462be15" args="(__s)" -->
199 #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gd33c0d74b983e3f2c36f3278a462be15">lcd_puts_P</a>(__s)&nbsp;&nbsp;&nbsp;lcd_puts_p(PSTR(__s))</td></tr>
200
201 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">macros for automatically storing string constant in program memory <br></td></tr>
202 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gedadae82796028f0eb4877c2633a2093">lcd_init</a> (uint8_t dispAttr)</td></tr>
203
204 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize display and select type of cursor.  <a href="#gedadae82796028f0eb4877c2633a2093"></a><br></td></tr>
205 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g8ce9a86fc5c8256c69bd46bf3400db82">lcd_clrscr</a> (void)</td></tr>
206
207 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear display and set cursor to home position.  <a href="#g8ce9a86fc5c8256c69bd46bf3400db82"></a><br></td></tr>
208 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ge8c9b2ccaad9f50e5470c0884d34b60e">lcd_home</a> (void)</td></tr>
209
210 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set cursor to home position.  <a href="#ge8c9b2ccaad9f50e5470c0884d34b60e"></a><br></td></tr>
211 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g73662ce31ffdf2949971f47d61fbf67f">lcd_gotoxy</a> (uint8_t x, uint8_t y)</td></tr>
212
213 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set cursor to specified position.  <a href="#g73662ce31ffdf2949971f47d61fbf67f"></a><br></td></tr>
214 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g38d1e9ef5cebc368b96f5a3173b1a8a6">lcd_putc</a> (char c)</td></tr>
215
216 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display character at current cursor position.  <a href="#g38d1e9ef5cebc368b96f5a3173b1a8a6"></a><br></td></tr>
217 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g72e72f6b31f53d9ceb9246286223599a">lcd_puts</a> (const char *s)</td></tr>
218
219 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display string without auto linefeed.  <a href="#g72e72f6b31f53d9ceb9246286223599a"></a><br></td></tr>
220 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gd7760569f1a160fca1a29af711cab47b">lcd_puts_p</a> (const char *progmem_s)</td></tr>
221
222 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Display string from program memory without auto linefeed.  <a href="#gd7760569f1a160fca1a29af711cab47b"></a><br></td></tr>
223 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gc6aa7e0d522b4c013ebeae1ccd23d510">lcd_command</a> (uint8_t cmd)</td></tr>
224
225 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send LCD controller instruction command.  <a href="#gc6aa7e0d522b4c013ebeae1ccd23d510"></a><br></td></tr>
226 <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#g5558061811c21afc4fe3992a45e43844">lcd_data</a> (uint8_t data)</td></tr>
227
228 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send data byte to LCD controller.  <a href="#g5558061811c21afc4fe3992a45e43844"></a><br></td></tr>
229 </table>
230 <hr><h2>Define Documentation</h2>
231 <a class="anchor" name="gec4e68f6eb4f2cd1a3d52a391e97a48e"></a><!-- doxytag: member="lcd.h::XTAL" ref="gec4e68f6eb4f2cd1a3d52a391e97a48e" args="" --><p>
232 <table class="mdTable" cellpadding="2" cellspacing="0">
233   <tr>
234     <td class="mdRow">
235       <table cellpadding="0" cellspacing="0" border="0">
236         <tr>
237           <td class="md" nowrap valign="top">#define XTAL&nbsp;&nbsp;&nbsp;4000000          </td>
238         </tr>
239       </table>
240     </td>
241   </tr>
242 </table>
243 <table cellspacing="5" cellpadding="0" border="0">
244   <tr>
245     <td>
246       &nbsp;
247     </td>
248     <td>
249
250 <p>
251 clock frequency in Hz, used to calculate delay timer     </td>
252   </tr>
253 </table>
254 <a class="anchor" name="ga06e40df758f5c4ef912269bada3e02e"></a><!-- doxytag: member="lcd.h::LCD_CONTROLLER_KS0073" ref="ga06e40df758f5c4ef912269bada3e02e" args="" --><p>
255 <table class="mdTable" cellpadding="2" cellspacing="0">
256   <tr>
257     <td class="mdRow">
258       <table cellpadding="0" cellspacing="0" border="0">
259         <tr>
260           <td class="md" nowrap valign="top">#define LCD_CONTROLLER_KS0073&nbsp;&nbsp;&nbsp;0          </td>
261         </tr>
262       </table>
263     </td>
264   </tr>
265 </table>
266 <table cellspacing="5" cellpadding="0" border="0">
267   <tr>
268     <td>
269       &nbsp;
270     </td>
271     <td>
272
273 <p>
274 Use 0 for HD44780 controller, 1 for KS0073 controller     </td>
275   </tr>
276 </table>
277 <a class="anchor" name="gdd844875f979e4be3fe10f6157fb1000"></a><!-- doxytag: member="lcd.h::LCD_LINES" ref="gdd844875f979e4be3fe10f6157fb1000" args="" --><p>
278 <table class="mdTable" cellpadding="2" cellspacing="0">
279   <tr>
280     <td class="mdRow">
281       <table cellpadding="0" cellspacing="0" border="0">
282         <tr>
283           <td class="md" nowrap valign="top">#define LCD_LINES&nbsp;&nbsp;&nbsp;2          </td>
284         </tr>
285       </table>
286     </td>
287   </tr>
288 </table>
289 <table cellspacing="5" cellpadding="0" border="0">
290   <tr>
291     <td>
292       &nbsp;
293     </td>
294     <td>
295
296 <p>
297 number of visible lines of the display     </td>
298   </tr>
299 </table>
300 <a class="anchor" name="gf43f4243eab72a4f63404ef79c4628b4"></a><!-- doxytag: member="lcd.h::LCD_DISP_LENGTH" ref="gf43f4243eab72a4f63404ef79c4628b4" args="" --><p>
301 <table class="mdTable" cellpadding="2" cellspacing="0">
302   <tr>
303     <td class="mdRow">
304       <table cellpadding="0" cellspacing="0" border="0">
305         <tr>
306           <td class="md" nowrap valign="top">#define LCD_DISP_LENGTH&nbsp;&nbsp;&nbsp;16          </td>
307         </tr>
308       </table>
309     </td>
310   </tr>
311 </table>
312 <table cellspacing="5" cellpadding="0" border="0">
313   <tr>
314     <td>
315       &nbsp;
316     </td>
317     <td>
318
319 <p>
320 visibles characters per line of the display     </td>
321   </tr>
322 </table>
323 <a class="anchor" name="g9c510a31cc0da22f1ed6796c182e5ae9"></a><!-- doxytag: member="lcd.h::LCD_LINE_LENGTH" ref="g9c510a31cc0da22f1ed6796c182e5ae9" args="" --><p>
324 <table class="mdTable" cellpadding="2" cellspacing="0">
325   <tr>
326     <td class="mdRow">
327       <table cellpadding="0" cellspacing="0" border="0">
328         <tr>
329           <td class="md" nowrap valign="top">#define LCD_LINE_LENGTH&nbsp;&nbsp;&nbsp;0x40          </td>
330         </tr>
331       </table>
332     </td>
333   </tr>
334 </table>
335 <table cellspacing="5" cellpadding="0" border="0">
336   <tr>
337     <td>
338       &nbsp;
339     </td>
340     <td>
341
342 <p>
343 internal line length of the display     </td>
344   </tr>
345 </table>
346 <a class="anchor" name="g0f8269b98efeb53a53e31ad5b2671e60"></a><!-- doxytag: member="lcd.h::LCD_START_LINE1" ref="g0f8269b98efeb53a53e31ad5b2671e60" args="" --><p>
347 <table class="mdTable" cellpadding="2" cellspacing="0">
348   <tr>
349     <td class="mdRow">
350       <table cellpadding="0" cellspacing="0" border="0">
351         <tr>
352           <td class="md" nowrap valign="top">#define LCD_START_LINE1&nbsp;&nbsp;&nbsp;0x00          </td>
353         </tr>
354       </table>
355     </td>
356   </tr>
357 </table>
358 <table cellspacing="5" cellpadding="0" border="0">
359   <tr>
360     <td>
361       &nbsp;
362     </td>
363     <td>
364
365 <p>
366 DDRAM address of first char of line 1     </td>
367   </tr>
368 </table>
369 <a class="anchor" name="g41302f6ca93d24281422eb6b21d29ead"></a><!-- doxytag: member="lcd.h::LCD_START_LINE2" ref="g41302f6ca93d24281422eb6b21d29ead" args="" --><p>
370 <table class="mdTable" cellpadding="2" cellspacing="0">
371   <tr>
372     <td class="mdRow">
373       <table cellpadding="0" cellspacing="0" border="0">
374         <tr>
375           <td class="md" nowrap valign="top">#define LCD_START_LINE2&nbsp;&nbsp;&nbsp;0x40          </td>
376         </tr>
377       </table>
378     </td>
379   </tr>
380 </table>
381 <table cellspacing="5" cellpadding="0" border="0">
382   <tr>
383     <td>
384       &nbsp;
385     </td>
386     <td>
387
388 <p>
389 DDRAM address of first char of line 2     </td>
390   </tr>
391 </table>
392 <a class="anchor" name="g71379f62a63fec1d3548572efb619b25"></a><!-- doxytag: member="lcd.h::LCD_START_LINE3" ref="g71379f62a63fec1d3548572efb619b25" args="" --><p>
393 <table class="mdTable" cellpadding="2" cellspacing="0">
394   <tr>
395     <td class="mdRow">
396       <table cellpadding="0" cellspacing="0" border="0">
397         <tr>
398           <td class="md" nowrap valign="top">#define LCD_START_LINE3&nbsp;&nbsp;&nbsp;0x14          </td>
399         </tr>
400       </table>
401     </td>
402   </tr>
403 </table>
404 <table cellspacing="5" cellpadding="0" border="0">
405   <tr>
406     <td>
407       &nbsp;
408     </td>
409     <td>
410
411 <p>
412 DDRAM address of first char of line 3     </td>
413   </tr>
414 </table>
415 <a class="anchor" name="g73e09d62eefad16f08b66ee39e9c2a92"></a><!-- doxytag: member="lcd.h::LCD_START_LINE4" ref="g73e09d62eefad16f08b66ee39e9c2a92" args="" --><p>
416 <table class="mdTable" cellpadding="2" cellspacing="0">
417   <tr>
418     <td class="mdRow">
419       <table cellpadding="0" cellspacing="0" border="0">
420         <tr>
421           <td class="md" nowrap valign="top">#define LCD_START_LINE4&nbsp;&nbsp;&nbsp;0x54          </td>
422         </tr>
423       </table>
424     </td>
425   </tr>
426 </table>
427 <table cellspacing="5" cellpadding="0" border="0">
428   <tr>
429     <td>
430       &nbsp;
431     </td>
432     <td>
433
434 <p>
435 DDRAM address of first char of line 4     </td>
436   </tr>
437 </table>
438 <a class="anchor" name="g9edda67caf57a323972fa8442863dd5f"></a><!-- doxytag: member="lcd.h::LCD_WRAP_LINES" ref="g9edda67caf57a323972fa8442863dd5f" args="" --><p>
439 <table class="mdTable" cellpadding="2" cellspacing="0">
440   <tr>
441     <td class="mdRow">
442       <table cellpadding="0" cellspacing="0" border="0">
443         <tr>
444           <td class="md" nowrap valign="top">#define LCD_WRAP_LINES&nbsp;&nbsp;&nbsp;0          </td>
445         </tr>
446       </table>
447     </td>
448   </tr>
449 </table>
450 <table cellspacing="5" cellpadding="0" border="0">
451   <tr>
452     <td>
453       &nbsp;
454     </td>
455     <td>
456
457 <p>
458 0: no wrap, 1: wrap at end of visibile line     </td>
459   </tr>
460 </table>
461 <a class="anchor" name="g03ce9159a9bc9263b65926df0e542769"></a><!-- doxytag: member="lcd.h::LCD_IO_MODE" ref="g03ce9159a9bc9263b65926df0e542769" args="" --><p>
462 <table class="mdTable" cellpadding="2" cellspacing="0">
463   <tr>
464     <td class="mdRow">
465       <table cellpadding="0" cellspacing="0" border="0">
466         <tr>
467           <td class="md" nowrap valign="top">#define LCD_IO_MODE&nbsp;&nbsp;&nbsp;1          </td>
468         </tr>
469       </table>
470     </td>
471   </tr>
472 </table>
473 <table cellspacing="5" cellpadding="0" border="0">
474   <tr>
475     <td>
476       &nbsp;
477     </td>
478     <td>
479
480 <p>
481 0: memory mapped mode, 1: IO port mode     </td>
482   </tr>
483 </table>
484 <a class="anchor" name="ge794cd77f52c76793895fb9f0ddde790"></a><!-- doxytag: member="lcd.h::LCD_PORT" ref="ge794cd77f52c76793895fb9f0ddde790" args="" --><p>
485 <table class="mdTable" cellpadding="2" cellspacing="0">
486   <tr>
487     <td class="mdRow">
488       <table cellpadding="0" cellspacing="0" border="0">
489         <tr>
490           <td class="md" nowrap valign="top">#define LCD_PORT&nbsp;&nbsp;&nbsp;PORTA          </td>
491         </tr>
492       </table>
493     </td>
494   </tr>
495 </table>
496 <table cellspacing="5" cellpadding="0" border="0">
497   <tr>
498     <td>
499       &nbsp;
500     </td>
501     <td>
502
503 <p>
504 port for the LCD lines     </td>
505   </tr>
506 </table>
507 <a class="anchor" name="gea0b0c8e6f06c7978b062f9b64c65b17"></a><!-- doxytag: member="lcd.h::LCD_DATA0_PORT" ref="gea0b0c8e6f06c7978b062f9b64c65b17" args="" --><p>
508 <table class="mdTable" cellpadding="2" cellspacing="0">
509   <tr>
510     <td class="mdRow">
511       <table cellpadding="0" cellspacing="0" border="0">
512         <tr>
513           <td class="md" nowrap valign="top">#define LCD_DATA0_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
514         </tr>
515       </table>
516     </td>
517   </tr>
518 </table>
519 <table cellspacing="5" cellpadding="0" border="0">
520   <tr>
521     <td>
522       &nbsp;
523     </td>
524     <td>
525
526 <p>
527 port for 4bit data bit 0     </td>
528   </tr>
529 </table>
530 <a class="anchor" name="g4804194d2e51913e96a18540ecc37438"></a><!-- doxytag: member="lcd.h::LCD_DATA1_PORT" ref="g4804194d2e51913e96a18540ecc37438" args="" --><p>
531 <table class="mdTable" cellpadding="2" cellspacing="0">
532   <tr>
533     <td class="mdRow">
534       <table cellpadding="0" cellspacing="0" border="0">
535         <tr>
536           <td class="md" nowrap valign="top">#define LCD_DATA1_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
537         </tr>
538       </table>
539     </td>
540   </tr>
541 </table>
542 <table cellspacing="5" cellpadding="0" border="0">
543   <tr>
544     <td>
545       &nbsp;
546     </td>
547     <td>
548
549 <p>
550 port for 4bit data bit 1     </td>
551   </tr>
552 </table>
553 <a class="anchor" name="g457dfaa137d806b907824c5addff463b"></a><!-- doxytag: member="lcd.h::LCD_DATA2_PORT" ref="g457dfaa137d806b907824c5addff463b" args="" --><p>
554 <table class="mdTable" cellpadding="2" cellspacing="0">
555   <tr>
556     <td class="mdRow">
557       <table cellpadding="0" cellspacing="0" border="0">
558         <tr>
559           <td class="md" nowrap valign="top">#define LCD_DATA2_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
560         </tr>
561       </table>
562     </td>
563   </tr>
564 </table>
565 <table cellspacing="5" cellpadding="0" border="0">
566   <tr>
567     <td>
568       &nbsp;
569     </td>
570     <td>
571
572 <p>
573 port for 4bit data bit 2     </td>
574   </tr>
575 </table>
576 <a class="anchor" name="gb83bd18a43ac793d7f83251664b76102"></a><!-- doxytag: member="lcd.h::LCD_DATA3_PORT" ref="gb83bd18a43ac793d7f83251664b76102" args="" --><p>
577 <table class="mdTable" cellpadding="2" cellspacing="0">
578   <tr>
579     <td class="mdRow">
580       <table cellpadding="0" cellspacing="0" border="0">
581         <tr>
582           <td class="md" nowrap valign="top">#define LCD_DATA3_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
583         </tr>
584       </table>
585     </td>
586   </tr>
587 </table>
588 <table cellspacing="5" cellpadding="0" border="0">
589   <tr>
590     <td>
591       &nbsp;
592     </td>
593     <td>
594
595 <p>
596 port for 4bit data bit 3     </td>
597   </tr>
598 </table>
599 <a class="anchor" name="g1bd9e368dd03e4e4022e2fe4349b4a89"></a><!-- doxytag: member="lcd.h::LCD_DATA0_PIN" ref="g1bd9e368dd03e4e4022e2fe4349b4a89" args="" --><p>
600 <table class="mdTable" cellpadding="2" cellspacing="0">
601   <tr>
602     <td class="mdRow">
603       <table cellpadding="0" cellspacing="0" border="0">
604         <tr>
605           <td class="md" nowrap valign="top">#define LCD_DATA0_PIN&nbsp;&nbsp;&nbsp;0          </td>
606         </tr>
607       </table>
608     </td>
609   </tr>
610 </table>
611 <table cellspacing="5" cellpadding="0" border="0">
612   <tr>
613     <td>
614       &nbsp;
615     </td>
616     <td>
617
618 <p>
619 pin for 4bit data bit 0     </td>
620   </tr>
621 </table>
622 <a class="anchor" name="gc22ea9521de145ada64c9ac4a24a0d57"></a><!-- doxytag: member="lcd.h::LCD_DATA1_PIN" ref="gc22ea9521de145ada64c9ac4a24a0d57" args="" --><p>
623 <table class="mdTable" cellpadding="2" cellspacing="0">
624   <tr>
625     <td class="mdRow">
626       <table cellpadding="0" cellspacing="0" border="0">
627         <tr>
628           <td class="md" nowrap valign="top">#define LCD_DATA1_PIN&nbsp;&nbsp;&nbsp;1          </td>
629         </tr>
630       </table>
631     </td>
632   </tr>
633 </table>
634 <table cellspacing="5" cellpadding="0" border="0">
635   <tr>
636     <td>
637       &nbsp;
638     </td>
639     <td>
640
641 <p>
642 pin for 4bit data bit 1     </td>
643   </tr>
644 </table>
645 <a class="anchor" name="gef2c79ad5069e1dbcf99129953fef99f"></a><!-- doxytag: member="lcd.h::LCD_DATA2_PIN" ref="gef2c79ad5069e1dbcf99129953fef99f" args="" --><p>
646 <table class="mdTable" cellpadding="2" cellspacing="0">
647   <tr>
648     <td class="mdRow">
649       <table cellpadding="0" cellspacing="0" border="0">
650         <tr>
651           <td class="md" nowrap valign="top">#define LCD_DATA2_PIN&nbsp;&nbsp;&nbsp;2          </td>
652         </tr>
653       </table>
654     </td>
655   </tr>
656 </table>
657 <table cellspacing="5" cellpadding="0" border="0">
658   <tr>
659     <td>
660       &nbsp;
661     </td>
662     <td>
663
664 <p>
665 pin for 4bit data bit 2     </td>
666   </tr>
667 </table>
668 <a class="anchor" name="g2b7c15d3b71de014dffbed911999e93e"></a><!-- doxytag: member="lcd.h::LCD_DATA3_PIN" ref="g2b7c15d3b71de014dffbed911999e93e" args="" --><p>
669 <table class="mdTable" cellpadding="2" cellspacing="0">
670   <tr>
671     <td class="mdRow">
672       <table cellpadding="0" cellspacing="0" border="0">
673         <tr>
674           <td class="md" nowrap valign="top">#define LCD_DATA3_PIN&nbsp;&nbsp;&nbsp;3          </td>
675         </tr>
676       </table>
677     </td>
678   </tr>
679 </table>
680 <table cellspacing="5" cellpadding="0" border="0">
681   <tr>
682     <td>
683       &nbsp;
684     </td>
685     <td>
686
687 <p>
688 pin for 4bit data bit 3     </td>
689   </tr>
690 </table>
691 <a class="anchor" name="gfa2314e7d8033e0aca5769380a3e50d0"></a><!-- doxytag: member="lcd.h::LCD_RS_PORT" ref="gfa2314e7d8033e0aca5769380a3e50d0" args="" --><p>
692 <table class="mdTable" cellpadding="2" cellspacing="0">
693   <tr>
694     <td class="mdRow">
695       <table cellpadding="0" cellspacing="0" border="0">
696         <tr>
697           <td class="md" nowrap valign="top">#define LCD_RS_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
698         </tr>
699       </table>
700     </td>
701   </tr>
702 </table>
703 <table cellspacing="5" cellpadding="0" border="0">
704   <tr>
705     <td>
706       &nbsp;
707     </td>
708     <td>
709
710 <p>
711 port for RS line     </td>
712   </tr>
713 </table>
714 <a class="anchor" name="g59c1b674dce414b68c455f1ac2b4b6fc"></a><!-- doxytag: member="lcd.h::LCD_RS_PIN" ref="g59c1b674dce414b68c455f1ac2b4b6fc" args="" --><p>
715 <table class="mdTable" cellpadding="2" cellspacing="0">
716   <tr>
717     <td class="mdRow">
718       <table cellpadding="0" cellspacing="0" border="0">
719         <tr>
720           <td class="md" nowrap valign="top">#define LCD_RS_PIN&nbsp;&nbsp;&nbsp;4          </td>
721         </tr>
722       </table>
723     </td>
724   </tr>
725 </table>
726 <table cellspacing="5" cellpadding="0" border="0">
727   <tr>
728     <td>
729       &nbsp;
730     </td>
731     <td>
732
733 <p>
734 pin for RS line     </td>
735   </tr>
736 </table>
737 <a class="anchor" name="gd73977cd6182ec6efadc7798792a65f5"></a><!-- doxytag: member="lcd.h::LCD_RW_PORT" ref="gd73977cd6182ec6efadc7798792a65f5" args="" --><p>
738 <table class="mdTable" cellpadding="2" cellspacing="0">
739   <tr>
740     <td class="mdRow">
741       <table cellpadding="0" cellspacing="0" border="0">
742         <tr>
743           <td class="md" nowrap valign="top">#define LCD_RW_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
744         </tr>
745       </table>
746     </td>
747   </tr>
748 </table>
749 <table cellspacing="5" cellpadding="0" border="0">
750   <tr>
751     <td>
752       &nbsp;
753     </td>
754     <td>
755
756 <p>
757 port for RW line     </td>
758   </tr>
759 </table>
760 <a class="anchor" name="g8ab664d4eccaeb33a3cad2ae59c04f8c"></a><!-- doxytag: member="lcd.h::LCD_RW_PIN" ref="g8ab664d4eccaeb33a3cad2ae59c04f8c" args="" --><p>
761 <table class="mdTable" cellpadding="2" cellspacing="0">
762   <tr>
763     <td class="mdRow">
764       <table cellpadding="0" cellspacing="0" border="0">
765         <tr>
766           <td class="md" nowrap valign="top">#define LCD_RW_PIN&nbsp;&nbsp;&nbsp;5          </td>
767         </tr>
768       </table>
769     </td>
770   </tr>
771 </table>
772 <table cellspacing="5" cellpadding="0" border="0">
773   <tr>
774     <td>
775       &nbsp;
776     </td>
777     <td>
778
779 <p>
780 pin for RW line     </td>
781   </tr>
782 </table>
783 <a class="anchor" name="g0e04d67ce381ed95c8589838110c1654"></a><!-- doxytag: member="lcd.h::LCD_E_PORT" ref="g0e04d67ce381ed95c8589838110c1654" args="" --><p>
784 <table class="mdTable" cellpadding="2" cellspacing="0">
785   <tr>
786     <td class="mdRow">
787       <table cellpadding="0" cellspacing="0" border="0">
788         <tr>
789           <td class="md" nowrap valign="top">#define LCD_E_PORT&nbsp;&nbsp;&nbsp;LCD_PORT          </td>
790         </tr>
791       </table>
792     </td>
793   </tr>
794 </table>
795 <table cellspacing="5" cellpadding="0" border="0">
796   <tr>
797     <td>
798       &nbsp;
799     </td>
800     <td>
801
802 <p>
803 port for Enable line     </td>
804   </tr>
805 </table>
806 <a class="anchor" name="gb3c58eb57ae653b281826d6e694d9be6"></a><!-- doxytag: member="lcd.h::LCD_E_PIN" ref="gb3c58eb57ae653b281826d6e694d9be6" args="" --><p>
807 <table class="mdTable" cellpadding="2" cellspacing="0">
808   <tr>
809     <td class="mdRow">
810       <table cellpadding="0" cellspacing="0" border="0">
811         <tr>
812           <td class="md" nowrap valign="top">#define LCD_E_PIN&nbsp;&nbsp;&nbsp;6          </td>
813         </tr>
814       </table>
815     </td>
816   </tr>
817 </table>
818 <table cellspacing="5" cellpadding="0" border="0">
819   <tr>
820     <td>
821       &nbsp;
822     </td>
823     <td>
824
825 <p>
826 pin for Enable line     </td>
827   </tr>
828 </table>
829 <hr><h2>Function Documentation</h2>
830 <a class="anchor" name="gedadae82796028f0eb4877c2633a2093"></a><!-- doxytag: member="lcd.h::lcd_init" ref="gedadae82796028f0eb4877c2633a2093" args="(uint8_t dispAttr)" --><p>
831 <table class="mdTable" cellpadding="2" cellspacing="0">
832   <tr>
833     <td class="mdRow">
834       <table cellpadding="0" cellspacing="0" border="0">
835         <tr>
836           <td class="md" nowrap valign="top">void lcd_init           </td>
837           <td class="md" valign="top">(&nbsp;</td>
838           <td class="md" nowrap valign="top">uint8_t&nbsp;</td>
839           <td class="mdname1" valign="top" nowrap> <em>dispAttr</em>          </td>
840           <td class="md" valign="top">&nbsp;)&nbsp;</td>
841           <td class="md" nowrap></td>
842         </tr>
843       </table>
844     </td>
845   </tr>
846 </table>
847 <table cellspacing="5" cellpadding="0" border="0">
848   <tr>
849     <td>
850       &nbsp;
851     </td>
852     <td>
853
854 <p>
855 Initialize display and select type of cursor. 
856 <p>
857 <dl compact><dt><b>Parameters:</b></dt><dd>
858   <table border="0" cellspacing="2" cellpadding="0">
859     <tr><td valign="top"></td><td valign="top"><em>dispAttr</em>&nbsp;</td><td><b>LCD_DISP_OFF</b> display off<br>
860  <b>LCD_DISP_ON</b> display on, cursor off<br>
861  <b>LCD_DISP_ON_CURSOR</b> display on, cursor on<br>
862  <b>LCD_DISP_ON_CURSOR_BLINK</b> display on, cursor on flashing </td></tr>
863   </table>
864 </dl>
865 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
866     </td>
867   </tr>
868 </table>
869 <a class="anchor" name="g8ce9a86fc5c8256c69bd46bf3400db82"></a><!-- doxytag: member="lcd.h::lcd_clrscr" ref="g8ce9a86fc5c8256c69bd46bf3400db82" args="(void)" --><p>
870 <table class="mdTable" cellpadding="2" cellspacing="0">
871   <tr>
872     <td class="mdRow">
873       <table cellpadding="0" cellspacing="0" border="0">
874         <tr>
875           <td class="md" nowrap valign="top">void lcd_clrscr           </td>
876           <td class="md" valign="top">(&nbsp;</td>
877           <td class="md" nowrap valign="top">void&nbsp;</td>
878           <td class="mdname1" valign="top" nowrap>          </td>
879           <td class="md" valign="top">&nbsp;)&nbsp;</td>
880           <td class="md" nowrap></td>
881         </tr>
882       </table>
883     </td>
884   </tr>
885 </table>
886 <table cellspacing="5" cellpadding="0" border="0">
887   <tr>
888     <td>
889       &nbsp;
890     </td>
891     <td>
892
893 <p>
894 Clear display and set cursor to home position. 
895 <p>
896 <dl compact><dt><b>Parameters:</b></dt><dd>
897   <table border="0" cellspacing="2" cellpadding="0">
898     <tr><td valign="top"></td><td valign="top"><em>void</em>&nbsp;</td><td></td></tr>
899   </table>
900 </dl>
901 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
902     </td>
903   </tr>
904 </table>
905 <a class="anchor" name="ge8c9b2ccaad9f50e5470c0884d34b60e"></a><!-- doxytag: member="lcd.h::lcd_home" ref="ge8c9b2ccaad9f50e5470c0884d34b60e" args="(void)" --><p>
906 <table class="mdTable" cellpadding="2" cellspacing="0">
907   <tr>
908     <td class="mdRow">
909       <table cellpadding="0" cellspacing="0" border="0">
910         <tr>
911           <td class="md" nowrap valign="top">void lcd_home           </td>
912           <td class="md" valign="top">(&nbsp;</td>
913           <td class="md" nowrap valign="top">void&nbsp;</td>
914           <td class="mdname1" valign="top" nowrap>          </td>
915           <td class="md" valign="top">&nbsp;)&nbsp;</td>
916           <td class="md" nowrap></td>
917         </tr>
918       </table>
919     </td>
920   </tr>
921 </table>
922 <table cellspacing="5" cellpadding="0" border="0">
923   <tr>
924     <td>
925       &nbsp;
926     </td>
927     <td>
928
929 <p>
930 Set cursor to home position. 
931 <p>
932 <dl compact><dt><b>Parameters:</b></dt><dd>
933   <table border="0" cellspacing="2" cellpadding="0">
934     <tr><td valign="top"></td><td valign="top"><em>void</em>&nbsp;</td><td></td></tr>
935   </table>
936 </dl>
937 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
938     </td>
939   </tr>
940 </table>
941 <a class="anchor" name="g73662ce31ffdf2949971f47d61fbf67f"></a><!-- doxytag: member="lcd.h::lcd_gotoxy" ref="g73662ce31ffdf2949971f47d61fbf67f" args="(uint8_t x, uint8_t y)" --><p>
942 <table class="mdTable" cellpadding="2" cellspacing="0">
943   <tr>
944     <td class="mdRow">
945       <table cellpadding="0" cellspacing="0" border="0">
946         <tr>
947           <td class="md" nowrap valign="top">void lcd_gotoxy           </td>
948           <td class="md" valign="top">(&nbsp;</td>
949           <td class="md" nowrap valign="top">uint8_t&nbsp;</td>
950           <td class="mdname" nowrap> <em>x</em>, </td>
951         </tr>
952         <tr>
953           <td class="md" nowrap align="right"></td>
954           <td class="md"></td>
955           <td class="md" nowrap>uint8_t&nbsp;</td>
956           <td class="mdname" nowrap> <em>y</em></td>
957         </tr>
958         <tr>
959           <td class="md"></td>
960           <td class="md">)&nbsp;</td>
961           <td class="md" colspan="2"></td>
962         </tr>
963       </table>
964     </td>
965   </tr>
966 </table>
967 <table cellspacing="5" cellpadding="0" border="0">
968   <tr>
969     <td>
970       &nbsp;
971     </td>
972     <td>
973
974 <p>
975 Set cursor to specified position. 
976 <p>
977 <dl compact><dt><b>Parameters:</b></dt><dd>
978   <table border="0" cellspacing="2" cellpadding="0">
979     <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>horizontal position<br>
980  (0: left most position) </td></tr>
981     <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>vertical position<br>
982  (0: first line) </td></tr>
983   </table>
984 </dl>
985 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
986     </td>
987   </tr>
988 </table>
989 <a class="anchor" name="g38d1e9ef5cebc368b96f5a3173b1a8a6"></a><!-- doxytag: member="lcd.h::lcd_putc" ref="g38d1e9ef5cebc368b96f5a3173b1a8a6" args="(char c)" --><p>
990 <table class="mdTable" cellpadding="2" cellspacing="0">
991   <tr>
992     <td class="mdRow">
993       <table cellpadding="0" cellspacing="0" border="0">
994         <tr>
995           <td class="md" nowrap valign="top">void lcd_putc           </td>
996           <td class="md" valign="top">(&nbsp;</td>
997           <td class="md" nowrap valign="top">char&nbsp;</td>
998           <td class="mdname1" valign="top" nowrap> <em>c</em>          </td>
999           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1000           <td class="md" nowrap></td>
1001         </tr>
1002       </table>
1003     </td>
1004   </tr>
1005 </table>
1006 <table cellspacing="5" cellpadding="0" border="0">
1007   <tr>
1008     <td>
1009       &nbsp;
1010     </td>
1011     <td>
1012
1013 <p>
1014 Display character at current cursor position. 
1015 <p>
1016 <dl compact><dt><b>Parameters:</b></dt><dd>
1017   <table border="0" cellspacing="2" cellpadding="0">
1018     <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>character to be displayed </td></tr>
1019   </table>
1020 </dl>
1021 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
1022     </td>
1023   </tr>
1024 </table>
1025 <a class="anchor" name="g72e72f6b31f53d9ceb9246286223599a"></a><!-- doxytag: member="lcd.h::lcd_puts" ref="g72e72f6b31f53d9ceb9246286223599a" args="(const char *s)" --><p>
1026 <table class="mdTable" cellpadding="2" cellspacing="0">
1027   <tr>
1028     <td class="mdRow">
1029       <table cellpadding="0" cellspacing="0" border="0">
1030         <tr>
1031           <td class="md" nowrap valign="top">void lcd_puts           </td>
1032           <td class="md" valign="top">(&nbsp;</td>
1033           <td class="md" nowrap valign="top">const char *&nbsp;</td>
1034           <td class="mdname1" valign="top" nowrap> <em>s</em>          </td>
1035           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1036           <td class="md" nowrap></td>
1037         </tr>
1038       </table>
1039     </td>
1040   </tr>
1041 </table>
1042 <table cellspacing="5" cellpadding="0" border="0">
1043   <tr>
1044     <td>
1045       &nbsp;
1046     </td>
1047     <td>
1048
1049 <p>
1050 Display string without auto linefeed. 
1051 <p>
1052 <dl compact><dt><b>Parameters:</b></dt><dd>
1053   <table border="0" cellspacing="2" cellpadding="0">
1054     <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>string to be displayed </td></tr>
1055   </table>
1056 </dl>
1057 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
1058     </td>
1059   </tr>
1060 </table>
1061 <a class="anchor" name="gd7760569f1a160fca1a29af711cab47b"></a><!-- doxytag: member="lcd.h::lcd_puts_p" ref="gd7760569f1a160fca1a29af711cab47b" args="(const char *progmem_s)" --><p>
1062 <table class="mdTable" cellpadding="2" cellspacing="0">
1063   <tr>
1064     <td class="mdRow">
1065       <table cellpadding="0" cellspacing="0" border="0">
1066         <tr>
1067           <td class="md" nowrap valign="top">void lcd_puts_p           </td>
1068           <td class="md" valign="top">(&nbsp;</td>
1069           <td class="md" nowrap valign="top">const char *&nbsp;</td>
1070           <td class="mdname1" valign="top" nowrap> <em>progmem_s</em>          </td>
1071           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1072           <td class="md" nowrap></td>
1073         </tr>
1074       </table>
1075     </td>
1076   </tr>
1077 </table>
1078 <table cellspacing="5" cellpadding="0" border="0">
1079   <tr>
1080     <td>
1081       &nbsp;
1082     </td>
1083     <td>
1084
1085 <p>
1086 Display string from program memory without auto linefeed. 
1087 <p>
1088 <dl compact><dt><b>Parameters:</b></dt><dd>
1089   <table border="0" cellspacing="2" cellpadding="0">
1090     <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>string from program memory be be displayed </td></tr>
1091   </table>
1092 </dl>
1093 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
1094 <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__pfleury__lcd.html#gd33c0d74b983e3f2c36f3278a462be15">lcd_puts_P</a> </dd></dl>
1095     </td>
1096   </tr>
1097 </table>
1098 <a class="anchor" name="gc6aa7e0d522b4c013ebeae1ccd23d510"></a><!-- doxytag: member="lcd.h::lcd_command" ref="gc6aa7e0d522b4c013ebeae1ccd23d510" args="(uint8_t cmd)" --><p>
1099 <table class="mdTable" cellpadding="2" cellspacing="0">
1100   <tr>
1101     <td class="mdRow">
1102       <table cellpadding="0" cellspacing="0" border="0">
1103         <tr>
1104           <td class="md" nowrap valign="top">void lcd_command           </td>
1105           <td class="md" valign="top">(&nbsp;</td>
1106           <td class="md" nowrap valign="top">uint8_t&nbsp;</td>
1107           <td class="mdname1" valign="top" nowrap> <em>cmd</em>          </td>
1108           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1109           <td class="md" nowrap></td>
1110         </tr>
1111       </table>
1112     </td>
1113   </tr>
1114 </table>
1115 <table cellspacing="5" cellpadding="0" border="0">
1116   <tr>
1117     <td>
1118       &nbsp;
1119     </td>
1120     <td>
1121
1122 <p>
1123 Send LCD controller instruction command. 
1124 <p>
1125 <dl compact><dt><b>Parameters:</b></dt><dd>
1126   <table border="0" cellspacing="2" cellpadding="0">
1127     <tr><td valign="top"></td><td valign="top"><em>cmd</em>&nbsp;</td><td>instruction to send to LCD controller, see HD44780 data sheet </td></tr>
1128   </table>
1129 </dl>
1130 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
1131     </td>
1132   </tr>
1133 </table>
1134 <a class="anchor" name="g5558061811c21afc4fe3992a45e43844"></a><!-- doxytag: member="lcd.h::lcd_data" ref="g5558061811c21afc4fe3992a45e43844" args="(uint8_t data)" --><p>
1135 <table class="mdTable" cellpadding="2" cellspacing="0">
1136   <tr>
1137     <td class="mdRow">
1138       <table cellpadding="0" cellspacing="0" border="0">
1139         <tr>
1140           <td class="md" nowrap valign="top">void lcd_data           </td>
1141           <td class="md" valign="top">(&nbsp;</td>
1142           <td class="md" nowrap valign="top">uint8_t&nbsp;</td>
1143           <td class="mdname1" valign="top" nowrap> <em>data</em>          </td>
1144           <td class="md" valign="top">&nbsp;)&nbsp;</td>
1145           <td class="md" nowrap></td>
1146         </tr>
1147       </table>
1148     </td>
1149   </tr>
1150 </table>
1151 <table cellspacing="5" cellpadding="0" border="0">
1152   <tr>
1153     <td>
1154       &nbsp;
1155     </td>
1156     <td>
1157
1158 <p>
1159 Send data byte to LCD controller. 
1160 <p>
1161 Similar to <a class="el" href="group__pfleury__lcd.html#g38d1e9ef5cebc368b96f5a3173b1a8a6">lcd_putc()</a>, but without interpreting LF <dl compact><dt><b>Parameters:</b></dt><dd>
1162   <table border="0" cellspacing="2" cellpadding="0">
1163     <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>byte to send to LCD controller, see HD44780 data sheet </td></tr>
1164   </table>
1165 </dl>
1166 <dl compact><dt><b>Returns:</b></dt><dd>none </dd></dl>
1167     </td>
1168   </tr>
1169 </table>
1170 <hr size="1"><address style="align: right;"><small>Generated on Mon Jan 30 20:50:15 2006 for AVR-GCC libraries by&nbsp;
1171 <a href="http://www.doxygen.org/index.html">
1172 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.5 </small></address>
1173 </body>
1174 </html>