ece312/lab_3/lcdlibrary/manual_lcd.html

935 lines
60 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>AVR-GCC Libraries: LCD library &lt;lcd.h&gt;</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">AVR-GCC Libraries
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">LCD library &lt;lcd.h&gt;</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Basic routines for interfacing a HD44780U-based character LCD display. </p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="lcd_8h.html">lcd.h</a>&gt;</span> </div>
</div><!-- fragment --><p>LCD character displays can be found in many devices, like espresso machines, laser printers. The Hitachi HD44780 controller and its compatible controllers like Samsung KS0066U have become an industry standard for these types of displays.</p>
<p>This library allows easy interfacing with a HD44780 compatible display and can be operated in memory mapped mode (LCD_IO_MODE defined as 0 in the include file <a class="el" href="lcd_8h.html">lcd.h</a>.) or in 4-bit IO port mode (LCD_IO_MODE defined as 1). 8-bit IO port mode is not supported.</p>
<p>Memory mapped mode is compatible with old Kanda STK200 starter kit, but also supports generation of R/W signal through A8 address line.</p>
<dl class="section see"><dt>See also</dt><dd>The chapter <a href=" http://homepage.hispeed.ch/peterfleury/avr-lcd44780.html" target="_blank">Interfacing a HD44780 Based LCD to an AVR</a> on my home page, which shows example circuits how to connect an LCD to an AVR controller.</dd></dl>
<dl class="section author"><dt>Author</dt><dd>Peter Fleury <a href="#" onclick="location.href='mai'+'lto:'+'pfl'+'eu'+'ry@'+'gm'+'x.c'+'h'; return false;">pfleu<span style="display: none;">.nosp@m.</span>ry@g<span style="display: none;">.nosp@m.</span>mx.ch</a> <a href="http://tinyurl.com/peterfleury">http://tinyurl.com/peterfleury</a></dd></dl>
<dl class="section version"><dt>Version</dt><dd>2.0</dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(C) 2015 Peter Fleury, GNU General Public License Version 3 </dd></dl>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definition for LCD controller type</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp9cebaa2a52e46760a474a1905c7f53a9"></a>Use 0 for HD44780 controller, change to 1 for displays with KS0073 controller. </p>
</td></tr>
<tr class="memitem:ga63574b03f72a197aeee823aae95dc3b7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga63574b03f72a197aeee823aae95dc3b7">LCD_CONTROLLER_KS0073</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga63574b03f72a197aeee823aae95dc3b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definitions for Display Size</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpcaec0cb1262819d89ffa7f25526cc869"></a>Change these definitions to adapt setting to your display</p>
<p>These definitions can be defined in a separate include file <b>lcd_definitions.h</b> instead modifying this file by adding -D_LCD_DEFINITIONS_FILE to the CDEFS section in the Makefile. All definitions added to the file lcd_definitions.h will override the default definitions from <a class="el" href="lcd_8h.html">lcd.h</a> </p>
</td></tr>
<tr class="memitem:ga01212e90283511562039db786f65ba98"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga01212e90283511562039db786f65ba98">LCD_LINES</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ga01212e90283511562039db786f65ba98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga684bb4392e384b7ae7c660d81dacb930"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga684bb4392e384b7ae7c660d81dacb930">LCD_DISP_LENGTH</a>&#160;&#160;&#160;16</td></tr>
<tr class="separator:ga684bb4392e384b7ae7c660d81dacb930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae59a728d9dee9f12c817b29d38746ed9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gae59a728d9dee9f12c817b29d38746ed9">LCD_LINE_LENGTH</a>&#160;&#160;&#160;0x40</td></tr>
<tr class="separator:gae59a728d9dee9f12c817b29d38746ed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd056d70a1488ea2eb1aef87e248e234"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gabd056d70a1488ea2eb1aef87e248e234">LCD_START_LINE1</a>&#160;&#160;&#160;0x00</td></tr>
<tr class="separator:gabd056d70a1488ea2eb1aef87e248e234"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b317b21058ef031716ba040ef75430a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga7b317b21058ef031716ba040ef75430a">LCD_START_LINE2</a>&#160;&#160;&#160;0x40</td></tr>
<tr class="separator:ga7b317b21058ef031716ba040ef75430a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7cca16353048a062baeb3a52da55249"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gae7cca16353048a062baeb3a52da55249">LCD_START_LINE3</a>&#160;&#160;&#160;0x14</td></tr>
<tr class="separator:gae7cca16353048a062baeb3a52da55249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1b73e05bdb5cc12cdff5a1cf6c4f2a2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gab1b73e05bdb5cc12cdff5a1cf6c4f2a2">LCD_START_LINE4</a>&#160;&#160;&#160;0x54</td></tr>
<tr class="separator:gab1b73e05bdb5cc12cdff5a1cf6c4f2a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb35ff6cb242e48ba0545ea919ffc5d3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gadb35ff6cb242e48ba0545ea919ffc5d3">LCD_WRAP_LINES</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:gadb35ff6cb242e48ba0545ea919ffc5d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definitions for 4-bit IO mode</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp0d38ed8c5b4202f593f69f9003c1a16c"></a>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>
<p>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.</p>
<p>Adjust these definitions to your target.<br />
These definitions can be defined in a separate include file <b>lcd_definitions.h</b> instead modifying this file by adding <b>-D_LCD_DEFINITIONS_FILE</b> to the <b>CDEFS</b> section in the Makefile. All definitions added to the file lcd_definitions.h will override the default definitions from <a class="el" href="lcd_8h.html">lcd.h</a> </p>
</td></tr>
<tr class="memitem:ga659fcdf979f69bbd14f852f525f25e02"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga659fcdf979f69bbd14f852f525f25e02">LCD_IO_MODE</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga659fcdf979f69bbd14f852f525f25e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabcf42bd88b3c36193f301ca25b033875"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a>&#160;&#160;&#160;PORTA</td></tr>
<tr class="separator:gabcf42bd88b3c36193f301ca25b033875"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafc0acd4774bcd311595732f5367e266b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gafc0acd4774bcd311595732f5367e266b">LCD_DATA0_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:gafc0acd4774bcd311595732f5367e266b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga345af0248d5739bd8896d4f585618ca2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga345af0248d5739bd8896d4f585618ca2">LCD_DATA1_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:ga345af0248d5739bd8896d4f585618ca2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4d5c48a3f2b9426c14bbca3150834a20"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga4d5c48a3f2b9426c14bbca3150834a20">LCD_DATA2_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:ga4d5c48a3f2b9426c14bbca3150834a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaec71b6692f2af7c9de32dbe85fcb51c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gaec71b6692f2af7c9de32dbe85fcb51c2">LCD_DATA3_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:gaec71b6692f2af7c9de32dbe85fcb51c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe54d7d886b5c56bed0cf971febbb773"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gafe54d7d886b5c56bed0cf971febbb773">LCD_DATA0_PIN</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:gafe54d7d886b5c56bed0cf971febbb773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97fb520e7b83bb047ac5c9247de57049"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga97fb520e7b83bb047ac5c9247de57049">LCD_DATA1_PIN</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga97fb520e7b83bb047ac5c9247de57049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f3d53627337f6535cc8daa35876510a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga7f3d53627337f6535cc8daa35876510a">LCD_DATA2_PIN</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ga7f3d53627337f6535cc8daa35876510a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54032ce0050853e181f879b69fec4370"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga54032ce0050853e181f879b69fec4370">LCD_DATA3_PIN</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:ga54032ce0050853e181f879b69fec4370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac5be2a22727fd9ca349e1c9bcbfbcd47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gac5be2a22727fd9ca349e1c9bcbfbcd47">LCD_RS_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:gac5be2a22727fd9ca349e1c9bcbfbcd47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5c0a0a5750f3aaea06083e3a4a31f5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gae5c0a0a5750f3aaea06083e3a4a31f5d">LCD_RS_PIN</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:gae5c0a0a5750f3aaea06083e3a4a31f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8772bdf31db863b81805c837bdc2da2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gae8772bdf31db863b81805c837bdc2da2">LCD_RW_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:gae8772bdf31db863b81805c837bdc2da2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ac938dd5fc02a9a232df6605b5f6aa8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga3ac938dd5fc02a9a232df6605b5f6aa8">LCD_RW_PIN</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:ga3ac938dd5fc02a9a232df6605b5f6aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf97f97ff3832d1289bbcb471090ea297"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gaf97f97ff3832d1289bbcb471090ea297">LCD_E_PORT</a>&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td></tr>
<tr class="separator:gaf97f97ff3832d1289bbcb471090ea297"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae644d776392a8d47899d9910c2b8feb6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gae644d776392a8d47899d9910c2b8feb6">LCD_E_PIN</a>&#160;&#160;&#160;6</td></tr>
<tr class="separator:gae644d776392a8d47899d9910c2b8feb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definitions of delays</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp73324fc181df7d63636f86a5b76e74f2"></a>Used to calculate delay timers. Adapt the F_CPU define in the Makefile to the clock frequency in Hz of your target</p>
<p>These delay times can be adjusted, if some displays require different delays.<br />
These definitions can be defined in a separate include file <b>lcd_definitions.h</b> instead modifying this file by adding <b>-D_LCD_DEFINITIONS_FILE</b> to the <b>CDEFS</b> section in the Makefile. All definitions added to the file lcd_definitions.h will override the default definitions from <a class="el" href="lcd_8h.html">lcd.h</a> </p>
</td></tr>
<tr class="memitem:ga79ca3fe83448ab158a4c566bf292c260"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga79ca3fe83448ab158a4c566bf292c260">LCD_DELAY_BOOTUP</a>&#160;&#160;&#160;16000</td></tr>
<tr class="separator:ga79ca3fe83448ab158a4c566bf292c260"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab6ba3c8cdcf1a96b0d4c476eff8f8617"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gab6ba3c8cdcf1a96b0d4c476eff8f8617">LCD_DELAY_INIT</a>&#160;&#160;&#160;5000</td></tr>
<tr class="separator:gab6ba3c8cdcf1a96b0d4c476eff8f8617"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2ce1ac9b146b7baa7169e27f9cf3a99e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga2ce1ac9b146b7baa7169e27f9cf3a99e">LCD_DELAY_INIT_REP</a>&#160;&#160;&#160;64</td></tr>
<tr class="separator:ga2ce1ac9b146b7baa7169e27f9cf3a99e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf773dcbd0827cd15c788065c9197459"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gadf773dcbd0827cd15c788065c9197459">LCD_DELAY_INIT_4BIT</a>&#160;&#160;&#160;64</td></tr>
<tr class="separator:gadf773dcbd0827cd15c788065c9197459"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73b2370827e2d350cedd45e08a9eb0b2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga73b2370827e2d350cedd45e08a9eb0b2">LCD_DELAY_BUSY_FLAG</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:ga73b2370827e2d350cedd45e08a9eb0b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5b0632f09757ffe6f018c6ef88cc3296"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga5b0632f09757ffe6f018c6ef88cc3296">LCD_DELAY_ENABLE_PULSE</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ga5b0632f09757ffe6f018c6ef88cc3296"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Definitions for LCD command instructions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpe1b1604cb195ab970ebf8b6b8b3e322f"></a>The constants define the various LCD controller instructions which can be passed to the function <a class="el" href="group__pfleury__lcd.html#gaea9d14f02df06f948cb5a56776980826" title="Send LCD controller instruction command. ">lcd_command()</a>, see HD44780 data sheet for a complete description. </p>
</td></tr>
<tr class="memitem:ga459688213267d13ccfbeb2c9004988cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga459688213267d13ccfbeb2c9004988cb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_CLR</b>&#160;&#160;&#160;0 /* DB0: clear display */</td></tr>
<tr class="separator:ga459688213267d13ccfbeb2c9004988cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0e309ccad89222eb3457f2da9f2bb8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae0e309ccad89222eb3457f2da9f2bb8d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_HOME</b>&#160;&#160;&#160;1 /* DB1: return to home position */</td></tr>
<tr class="separator:gae0e309ccad89222eb3457f2da9f2bb8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5d757ddb6d94de8c82191b60b40e442"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae5d757ddb6d94de8c82191b60b40e442"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_MODE</b>&#160;&#160;&#160;2 /* DB2: set entry mode */</td></tr>
<tr class="separator:gae5d757ddb6d94de8c82191b60b40e442"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada766266a0be0d0040fbf86e23b58aa6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gada766266a0be0d0040fbf86e23b58aa6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC</b>&#160;&#160;&#160;1 /* DB1: 1=increment, 0=decrement */</td></tr>
<tr class="separator:gada766266a0be0d0040fbf86e23b58aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga14d0c7fda147e0dc8cdaa4a2629b3532"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga14d0c7fda147e0dc8cdaa4a2629b3532"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_SHIFT</b>&#160;&#160;&#160;0 /* DB2: 1=display shift on */</td></tr>
<tr class="separator:ga14d0c7fda147e0dc8cdaa4a2629b3532"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47a809dfec086fdeca93dedc4fb83b44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga47a809dfec086fdeca93dedc4fb83b44"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ON</b>&#160;&#160;&#160;3 /* DB3: turn lcd/cursor on */</td></tr>
<tr class="separator:ga47a809dfec086fdeca93dedc4fb83b44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae84f634b0a1661c4d5bbaafd9397732a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae84f634b0a1661c4d5bbaafd9397732a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_DISPLAY</b>&#160;&#160;&#160;2 /* DB2: turn display on */</td></tr>
<tr class="separator:gae84f634b0a1661c4d5bbaafd9397732a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47638b5ebbaec9600a0ebf9a55caf802"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga47638b5ebbaec9600a0ebf9a55caf802"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_CURSOR</b>&#160;&#160;&#160;1 /* DB1: turn cursor on */</td></tr>
<tr class="separator:ga47638b5ebbaec9600a0ebf9a55caf802"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d76592a978537acee615098ce4d80f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5d76592a978537acee615098ce4d80f5"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ON_BLINK</b>&#160;&#160;&#160;0 /* DB0: blinking cursor ? */</td></tr>
<tr class="separator:ga5d76592a978537acee615098ce4d80f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f4f758b80fcfa6c9e4db58e2515c78a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3f4f758b80fcfa6c9e4db58e2515c78a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE</b>&#160;&#160;&#160;4 /* DB4: move cursor/display */</td></tr>
<tr class="separator:ga3f4f758b80fcfa6c9e4db58e2515c78a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaddc2afa9a02bfa748950f2c1e6a204d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaaddc2afa9a02bfa748950f2c1e6a204d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP</b>&#160;&#160;&#160;3 /* DB3: move display (0-&gt; cursor) ? */</td></tr>
<tr class="separator:gaaddc2afa9a02bfa748950f2c1e6a204d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97cdb19acf109ad52ab4994d2ad02cee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga97cdb19acf109ad52ab4994d2ad02cee"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_RIGHT</b>&#160;&#160;&#160;2 /* DB2: move right (0-&gt; left) ? */</td></tr>
<tr class="separator:ga97cdb19acf109ad52ab4994d2ad02cee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50de1697f1da8ab075a6b4d7aeace64e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga50de1697f1da8ab075a6b4d7aeace64e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION</b>&#160;&#160;&#160;5 /* DB5: function set */</td></tr>
<tr class="separator:ga50de1697f1da8ab075a6b4d7aeace64e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91d15d8e3008f6cb141406a8b5d0d3c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga91d15d8e3008f6cb141406a8b5d0d3c0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT</b>&#160;&#160;&#160;4 /* DB4: set 8BIT mode (0-&gt;4BIT mode) */</td></tr>
<tr class="separator:ga91d15d8e3008f6cb141406a8b5d0d3c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c24806bed18d565917165caa3475463"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6c24806bed18d565917165caa3475463"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_2LINES</b>&#160;&#160;&#160;3 /* DB3: two lines (0-&gt;one line) */</td></tr>
<tr class="separator:ga6c24806bed18d565917165caa3475463"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48de81358277fe4f2810c2b82f90397e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga48de81358277fe4f2810c2b82f90397e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_10DOTS</b>&#160;&#160;&#160;2 /* DB2: 5x10 font (0-&gt;5x7 font) */</td></tr>
<tr class="separator:ga48de81358277fe4f2810c2b82f90397e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b38de74c362be1781fef1136aa9684c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3b38de74c362be1781fef1136aa9684c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_CGRAM</b>&#160;&#160;&#160;6 /* DB6: set CG RAM address */</td></tr>
<tr class="separator:ga3b38de74c362be1781fef1136aa9684c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae54acf3ccc45b7d6be334a03627740c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae54acf3ccc45b7d6be334a03627740c6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DDRAM</b>&#160;&#160;&#160;7 /* DB7: set DD RAM address */</td></tr>
<tr class="separator:gae54acf3ccc45b7d6be334a03627740c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac8dd1658e235f174d1cabae5c438943d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac8dd1658e235f174d1cabae5c438943d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_BUSY</b>&#160;&#160;&#160;7 /* DB7: LCD is busy */</td></tr>
<tr class="separator:gac8dd1658e235f174d1cabae5c438943d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad56f8e07634e85663f56888ae97089c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaad56f8e07634e85663f56888ae97089c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_DEC</b>&#160;&#160;&#160;0x04 /* display shift off, dec cursor move dir */</td></tr>
<tr class="separator:gaad56f8e07634e85663f56888ae97089c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c62932f252c6262cbef728add9696e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1c62932f252c6262cbef728add9696e4"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_DEC_SHIFT</b>&#160;&#160;&#160;0x05 /* display shift on, dec cursor move dir */</td></tr>
<tr class="separator:ga1c62932f252c6262cbef728add9696e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad27ddc4b8d03594662c8757f946dde28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad27ddc4b8d03594662c8757f946dde28"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC_</b>&#160;&#160;&#160;0x06 /* display shift off, inc cursor move dir */</td></tr>
<tr class="separator:gad27ddc4b8d03594662c8757f946dde28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafabd0215cc6ae5539dc638dbec44a506"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafabd0215cc6ae5539dc638dbec44a506"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_ENTRY_INC_SHIFT</b>&#160;&#160;&#160;0x07 /* display shift on, inc cursor move dir */</td></tr>
<tr class="separator:gafabd0215cc6ae5539dc638dbec44a506"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2966175115943883f51e9c90478540c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa2966175115943883f51e9c90478540c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_OFF</b>&#160;&#160;&#160;0x08 /* display off */</td></tr>
<tr class="separator:gaa2966175115943883f51e9c90478540c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5163a96b133868975c0738e180b30cb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5163a96b133868975c0738e180b30cb8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON</b>&#160;&#160;&#160;0x0C /* display on, cursor off */</td></tr>
<tr class="separator:ga5163a96b133868975c0738e180b30cb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga470cef85de53e37356b22c66a357a764"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga470cef85de53e37356b22c66a357a764"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_BLINK</b>&#160;&#160;&#160;0x0D /* display on, cursor off, blink char */</td></tr>
<tr class="separator:ga470cef85de53e37356b22c66a357a764"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf56b6d6bdb6fa48b26106dee5f74ae1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf56b6d6bdb6fa48b26106dee5f74ae1f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_CURSOR</b>&#160;&#160;&#160;0x0E /* display on, cursor on */</td></tr>
<tr class="separator:gaf56b6d6bdb6fa48b26106dee5f74ae1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1984ed0db15c6991d34c184fdca5dc6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac1984ed0db15c6991d34c184fdca5dc6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_DISP_ON_CURSOR_BLINK</b>&#160;&#160;&#160;0x0F /* display on, cursor on, blink char */</td></tr>
<tr class="separator:gac1984ed0db15c6991d34c184fdca5dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac2f0ddce1daaa1bf1a016270a89a264b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac2f0ddce1daaa1bf1a016270a89a264b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_CURSOR_LEFT</b>&#160;&#160;&#160;0x10 /* move cursor left (decrement) */</td></tr>
<tr class="separator:gac2f0ddce1daaa1bf1a016270a89a264b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0ad58e39e053e97d34527fcbe936899b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0ad58e39e053e97d34527fcbe936899b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_CURSOR_RIGHT</b>&#160;&#160;&#160;0x14 /* move cursor right (increment) */</td></tr>
<tr class="separator:ga0ad58e39e053e97d34527fcbe936899b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3c34ff1eee238bbe9c677215219fb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab3c34ff1eee238bbe9c677215219fb8e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP_LEFT</b>&#160;&#160;&#160;0x18 /* shift display left */</td></tr>
<tr class="separator:gab3c34ff1eee238bbe9c677215219fb8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9a90bb926f5ba59378af81fe8e246ffb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9a90bb926f5ba59378af81fe8e246ffb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MOVE_DISP_RIGHT</b>&#160;&#160;&#160;0x1C /* shift display right */</td></tr>
<tr class="separator:ga9a90bb926f5ba59378af81fe8e246ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff4e5baa36a0322eb97557dcb18cd96e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff4e5baa36a0322eb97557dcb18cd96e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_4BIT_1LINE</b>&#160;&#160;&#160;0x20 /* 4-bit interface, single line, 5x7 dots */</td></tr>
<tr class="separator:gaff4e5baa36a0322eb97557dcb18cd96e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab35032ab368a8bc90798e0c547fb24c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab35032ab368a8bc90798e0c547fb24c2"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_4BIT_2LINES</b>&#160;&#160;&#160;0x28 /* 4-bit interface, dual line, 5x7 dots */</td></tr>
<tr class="separator:gab35032ab368a8bc90798e0c547fb24c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8aeee098cb4c84ec420e00d054abcce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa8aeee098cb4c84ec420e00d054abcce"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT_1LINE</b>&#160;&#160;&#160;0x30 /* 8-bit interface, single line, 5x7 dots */</td></tr>
<tr class="separator:gaa8aeee098cb4c84ec420e00d054abcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga160a214f47869f8f98ad5add3a7568db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga160a214f47869f8f98ad5add3a7568db"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_FUNCTION_8BIT_2LINES</b>&#160;&#160;&#160;0x38 /* 8-bit interface, dual line, 5x7 dots */</td></tr>
<tr class="separator:ga160a214f47869f8f98ad5add3a7568db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1849e2087d3034a3fffa67444beed109"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1849e2087d3034a3fffa67444beed109"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LCD_MODE_DEFAULT</b>&#160;&#160;&#160;((1&lt;&lt;LCD_ENTRY_MODE) | (1&lt;&lt;LCD_ENTRY_INC) )</td></tr>
<tr class="separator:ga1849e2087d3034a3fffa67444beed109"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Functions</h2></td></tr>
<tr class="memitem:ga9af28b2779326b63ff4356e2b1828984"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga9af28b2779326b63ff4356e2b1828984">lcd_init</a> (uint8_t dispAttr)</td></tr>
<tr class="memdesc:ga9af28b2779326b63ff4356e2b1828984"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize display and select type of cursor. <a href="#ga9af28b2779326b63ff4356e2b1828984">More...</a><br /></td></tr>
<tr class="separator:ga9af28b2779326b63ff4356e2b1828984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf8da853dba4b9d5f2aea4e294444e14d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gaf8da853dba4b9d5f2aea4e294444e14d">lcd_clrscr</a> (void)</td></tr>
<tr class="memdesc:gaf8da853dba4b9d5f2aea4e294444e14d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear display and set cursor to home position. <a href="#gaf8da853dba4b9d5f2aea4e294444e14d">More...</a><br /></td></tr>
<tr class="separator:gaf8da853dba4b9d5f2aea4e294444e14d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3aabf730aa4e0393bb5c959583c00a8e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga3aabf730aa4e0393bb5c959583c00a8e">lcd_home</a> (void)</td></tr>
<tr class="memdesc:ga3aabf730aa4e0393bb5c959583c00a8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set cursor to home position. <a href="#ga3aabf730aa4e0393bb5c959583c00a8e">More...</a><br /></td></tr>
<tr class="separator:ga3aabf730aa4e0393bb5c959583c00a8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadbf47a5efdf02367ded1ebf8f9edb5fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gadbf47a5efdf02367ded1ebf8f9edb5fe">lcd_gotoxy</a> (uint8_t x, uint8_t y)</td></tr>
<tr class="memdesc:gadbf47a5efdf02367ded1ebf8f9edb5fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set cursor to specified position. <a href="#gadbf47a5efdf02367ded1ebf8f9edb5fe">More...</a><br /></td></tr>
<tr class="separator:gadbf47a5efdf02367ded1ebf8f9edb5fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa7e36b95c43d603f510273ad077cbbe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gafa7e36b95c43d603f510273ad077cbbe">lcd_putc</a> (char c)</td></tr>
<tr class="memdesc:gafa7e36b95c43d603f510273ad077cbbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display character at current cursor position. <a href="#gafa7e36b95c43d603f510273ad077cbbe">More...</a><br /></td></tr>
<tr class="separator:gafa7e36b95c43d603f510273ad077cbbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8ffdfcac7638368ff04364c14984266e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga8ffdfcac7638368ff04364c14984266e">lcd_puts</a> (const char *s)</td></tr>
<tr class="memdesc:ga8ffdfcac7638368ff04364c14984266e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display string without auto linefeed. <a href="#ga8ffdfcac7638368ff04364c14984266e">More...</a><br /></td></tr>
<tr class="separator:ga8ffdfcac7638368ff04364c14984266e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9022a24a56a9b15681f62eb6ba77e5de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga9022a24a56a9b15681f62eb6ba77e5de">lcd_puts_p</a> (const char *progmem_s)</td></tr>
<tr class="memdesc:ga9022a24a56a9b15681f62eb6ba77e5de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Display string from program memory without auto linefeed. <a href="#ga9022a24a56a9b15681f62eb6ba77e5de">More...</a><br /></td></tr>
<tr class="separator:ga9022a24a56a9b15681f62eb6ba77e5de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea9d14f02df06f948cb5a56776980826"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gaea9d14f02df06f948cb5a56776980826">lcd_command</a> (uint8_t cmd)</td></tr>
<tr class="memdesc:gaea9d14f02df06f948cb5a56776980826"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send LCD controller instruction command. <a href="#gaea9d14f02df06f948cb5a56776980826">More...</a><br /></td></tr>
<tr class="separator:gaea9d14f02df06f948cb5a56776980826"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad0729d2cba627825a089ca1fff12ba29"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#gad0729d2cba627825a089ca1fff12ba29">lcd_data</a> (uint8_t data)</td></tr>
<tr class="memdesc:gad0729d2cba627825a089ca1fff12ba29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send data byte to LCD controller. <a href="#gad0729d2cba627825a089ca1fff12ba29">More...</a><br /></td></tr>
<tr class="separator:gad0729d2cba627825a089ca1fff12ba29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4f1928f1515e21422d5a33af2949f2f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4f1928f1515e21422d5a33af2949f2f7"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pfleury__lcd.html#ga4f1928f1515e21422d5a33af2949f2f7">lcd_puts_P</a>(__s)&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#ga9022a24a56a9b15681f62eb6ba77e5de">lcd_puts_p</a>(PSTR(__s))</td></tr>
<tr class="memdesc:ga4f1928f1515e21422d5a33af2949f2f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">macros for automatically storing string constant in program memory <br /></td></tr>
<tr class="separator:ga4f1928f1515e21422d5a33af2949f2f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga63574b03f72a197aeee823aae95dc3b7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_CONTROLLER_KS0073&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Use 0 for HD44780 controller, 1 for KS0073 controller </p>
</div>
</div>
<a class="anchor" id="ga01212e90283511562039db786f65ba98"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_LINES&#160;&#160;&#160;2</td>
</tr>
</table>
</div><div class="memdoc">
<p>number of visible lines of the display </p>
</div>
</div>
<a class="anchor" id="ga684bb4392e384b7ae7c660d81dacb930"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DISP_LENGTH&#160;&#160;&#160;16</td>
</tr>
</table>
</div><div class="memdoc">
<p>visibles characters per line of the display </p>
</div>
</div>
<a class="anchor" id="gae59a728d9dee9f12c817b29d38746ed9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_LINE_LENGTH&#160;&#160;&#160;0x40</td>
</tr>
</table>
</div><div class="memdoc">
<p>internal line length of the display </p>
</div>
</div>
<a class="anchor" id="gabd056d70a1488ea2eb1aef87e248e234"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_START_LINE1&#160;&#160;&#160;0x00</td>
</tr>
</table>
</div><div class="memdoc">
<p>DDRAM address of first char of line 1 </p>
</div>
</div>
<a class="anchor" id="ga7b317b21058ef031716ba040ef75430a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_START_LINE2&#160;&#160;&#160;0x40</td>
</tr>
</table>
</div><div class="memdoc">
<p>DDRAM address of first char of line 2 </p>
</div>
</div>
<a class="anchor" id="gae7cca16353048a062baeb3a52da55249"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_START_LINE3&#160;&#160;&#160;0x14</td>
</tr>
</table>
</div><div class="memdoc">
<p>DDRAM address of first char of line 3 </p>
</div>
</div>
<a class="anchor" id="gab1b73e05bdb5cc12cdff5a1cf6c4f2a2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_START_LINE4&#160;&#160;&#160;0x54</td>
</tr>
</table>
</div><div class="memdoc">
<p>DDRAM address of first char of line 4 </p>
</div>
</div>
<a class="anchor" id="gadb35ff6cb242e48ba0545ea919ffc5d3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_WRAP_LINES&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>0: no wrap, 1: wrap at end of visibile line </p>
</div>
</div>
<a class="anchor" id="ga659fcdf979f69bbd14f852f525f25e02"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_IO_MODE&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>0: memory mapped mode, 1: IO port mode </p>
</div>
</div>
<a class="anchor" id="gabcf42bd88b3c36193f301ca25b033875"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_PORT&#160;&#160;&#160;PORTA</td>
</tr>
</table>
</div><div class="memdoc">
<p>port for the LCD lines </p>
</div>
</div>
<a class="anchor" id="gafc0acd4774bcd311595732f5367e266b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA0_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for 4bit data bit 0 </p>
</div>
</div>
<a class="anchor" id="ga345af0248d5739bd8896d4f585618ca2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA1_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for 4bit data bit 1 </p>
</div>
</div>
<a class="anchor" id="ga4d5c48a3f2b9426c14bbca3150834a20"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA2_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for 4bit data bit 2 </p>
</div>
</div>
<a class="anchor" id="gaec71b6692f2af7c9de32dbe85fcb51c2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA3_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for 4bit data bit 3 </p>
</div>
</div>
<a class="anchor" id="gafe54d7d886b5c56bed0cf971febbb773"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA0_PIN&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for 4bit data bit 0 </p>
</div>
</div>
<a class="anchor" id="ga97fb520e7b83bb047ac5c9247de57049"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA1_PIN&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for 4bit data bit 1 </p>
</div>
</div>
<a class="anchor" id="ga7f3d53627337f6535cc8daa35876510a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA2_PIN&#160;&#160;&#160;2</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for 4bit data bit 2 </p>
</div>
</div>
<a class="anchor" id="ga54032ce0050853e181f879b69fec4370"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DATA3_PIN&#160;&#160;&#160;3</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for 4bit data bit 3 </p>
</div>
</div>
<a class="anchor" id="gac5be2a22727fd9ca349e1c9bcbfbcd47"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_RS_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for RS line </p>
</div>
</div>
<a class="anchor" id="gae5c0a0a5750f3aaea06083e3a4a31f5d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_RS_PIN&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for RS line </p>
</div>
</div>
<a class="anchor" id="gae8772bdf31db863b81805c837bdc2da2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_RW_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for RW line </p>
</div>
</div>
<a class="anchor" id="ga3ac938dd5fc02a9a232df6605b5f6aa8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_RW_PIN&#160;&#160;&#160;5</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for RW line </p>
</div>
</div>
<a class="anchor" id="gaf97f97ff3832d1289bbcb471090ea297"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_E_PORT&#160;&#160;&#160;<a class="el" href="group__pfleury__lcd.html#gabcf42bd88b3c36193f301ca25b033875">LCD_PORT</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>port for Enable line </p>
</div>
</div>
<a class="anchor" id="gae644d776392a8d47899d9910c2b8feb6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_E_PIN&#160;&#160;&#160;6</td>
</tr>
</table>
</div><div class="memdoc">
<p>pin for Enable line </p>
</div>
</div>
<a class="anchor" id="ga79ca3fe83448ab158a4c566bf292c260"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_BOOTUP&#160;&#160;&#160;16000</td>
</tr>
</table>
</div><div class="memdoc">
<p>delay in micro seconds after power-on </p>
</div>
</div>
<a class="anchor" id="gab6ba3c8cdcf1a96b0d4c476eff8f8617"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_INIT&#160;&#160;&#160;5000</td>
</tr>
</table>
</div><div class="memdoc">
<p>delay in micro seconds after initialization command sent </p>
</div>
</div>
<a class="anchor" id="ga2ce1ac9b146b7baa7169e27f9cf3a99e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_INIT_REP&#160;&#160;&#160;64</td>
</tr>
</table>
</div><div class="memdoc">
<p>delay in micro seconds after initialization command repeated </p>
</div>
</div>
<a class="anchor" id="gadf773dcbd0827cd15c788065c9197459"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_INIT_4BIT&#160;&#160;&#160;64</td>
</tr>
</table>
</div><div class="memdoc">
<p>delay in micro seconds after setting 4-bit mode </p>
</div>
</div>
<a class="anchor" id="ga73b2370827e2d350cedd45e08a9eb0b2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_BUSY_FLAG&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
<p>time in micro seconds the address counter is updated after busy flag is cleared </p>
</div>
</div>
<a class="anchor" id="ga5b0632f09757ffe6f018c6ef88cc3296"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LCD_DELAY_ENABLE_PULSE&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>enable signal pulse width in micro seconds </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga9af28b2779326b63ff4356e2b1828984"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_init </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>dispAttr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize display and select type of cursor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dispAttr</td><td><b>LCD_DISP_OFF</b> display off<br />
<b>LCD_DISP_ON</b> display on, cursor off<br />
<b>LCD_DISP_ON_CURSOR</b> display on, cursor on<br />
<b>LCD_DISP_ON_CURSOR_BLINK</b> display on, cursor on flashing </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="gaf8da853dba4b9d5f2aea4e294444e14d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_clrscr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear display and set cursor to home position. </p>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="ga3aabf730aa4e0393bb5c959583c00a8e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_home </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set cursor to home position. </p>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="gadbf47a5efdf02367ded1ebf8f9edb5fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_gotoxy </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>y</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set cursor to specified position. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>horizontal position<br />
(0: left most position) </td></tr>
<tr><td class="paramname">y</td><td>vertical position<br />
(0: first line) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="gafa7e36b95c43d603f510273ad077cbbe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_putc </td>
<td>(</td>
<td class="paramtype">char&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Display character at current cursor position. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">c</td><td>character to be displayed </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="ga8ffdfcac7638368ff04364c14984266e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_puts </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Display string without auto linefeed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">s</td><td>string to be displayed </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="ga9022a24a56a9b15681f62eb6ba77e5de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_puts_p </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>progmem_s</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Display string from program memory without auto linefeed. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">progmem_s</td><td>string from program memory be be displayed </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pfleury__lcd.html#ga4f1928f1515e21422d5a33af2949f2f7" title="macros for automatically storing string constant in program memory ">lcd_puts_P</a> </dd></dl>
</div>
</div>
<a class="anchor" id="gaea9d14f02df06f948cb5a56776980826"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_command </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>cmd</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send LCD controller instruction command. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd</td><td>instruction to send to LCD controller, see HD44780 data sheet </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
<a class="anchor" id="gad0729d2cba627825a089ca1fff12ba29"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lcd_data </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>data</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send data byte to LCD controller. </p>
<p>Similar to <a class="el" href="group__pfleury__lcd.html#gafa7e36b95c43d603f510273ad077cbbe" title="Display character at current cursor position. ">lcd_putc()</a>, but without interpreting LF </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>byte to send to LCD controller, see HD44780 data sheet </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jan 31 2015 21:02:51 for AVR-GCC Libraries by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>