GLPv3 added

This commit is contained in:
sebastian 2009-05-17 18:02:52 +02:00
parent 89b4964c53
commit fc289af055
18 changed files with 181 additions and 83 deletions

View File

@ -50,7 +50,7 @@
<a name="l00035"></a>00035 0x00,0x00,0x00,0x00};
<a name="l00036"></a>00036
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -41,7 +41,7 @@
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -29,7 +29,7 @@
<tr><td class="indexkey">include/<a class="el" href="lc7981_8h.html">lc7981.h</a> <a href="lc7981_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -126,7 +126,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
: <a class="el" href="button_8h.html#1ca6393a353d3dde5511786a4d7cc139">button.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -78,7 +78,7 @@
: <a class="el" href="lc7981_8h.html#eb2d212a26da4a5a4d3231b2773023e5">lc7981.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -63,7 +63,7 @@
: <a class="el" href="main_8c.html#e66f6b31b5ad750f1fe042a706a4e3d4">main.c</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -40,7 +40,7 @@
: <a class="el" href="button_8h.html#1ca6393a353d3dde5511786a4d7cc139">button.h</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -18,7 +18,7 @@
<h1>glcd Documentation</h1>
<p>
<h3 align="center">0.1beta </h3></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -187,7 +187,16 @@ lcd_init set the to default values.
<p>
This function will plot a bitmap with the upper left corner to the given coordinates.
<p>
<br>
If the bitmap doesn't fit on the display at this location, nothing is drawn at all.<br>
Unset pixels are treated as transparent <br>
This function is by far the most tricky piece of code in this project,<br>
don't worry if you don't understand it at first sight. <br>
And if you know a better way to do this, tell me.<br>
<p>
This function is dedicated to Greta, one of the most important persons in my life so far.<br>
Even though I can't remember her actual name.<br>
</div>
</div><p>
<a class="anchor" name="735111507ed83172f58d5af2953e31c6"></a><!-- doxytag: member="lc7981.c::lcd_plot_pixel" ref="735111507ed83172f58d5af2953e31c6" args="(uint8_t x, uint8_t y, uint8_t set)" -->
@ -372,7 +381,7 @@ Currently used mode, can be text or graphic.
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -18,64 +18,80 @@
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Created on: 01.05.2009</span>
<a name="l00005"></a>00005 <span class="comment"> * Author: sebastian</span>
<a name="l00006"></a>00006 <span class="comment"> */</span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="preprocessor">#ifndef LC7981_H_</span>
<a name="l00009"></a><a class="code" href="lc7981_8h.html#e6ff861bd55f4dc46f25f5f6abfca15f">00009</a> <span class="preprocessor"></span><span class="preprocessor">#define LC7981_H_ LC7981_H_</span>
<a name="l00010"></a>00010 <span class="preprocessor"></span>
<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;avr/io.h&gt;</span>
<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;util/delay.h&gt;</span>
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00014"></a>00014
<a name="l00015"></a><a class="code" href="lc7981_8h.html#8e945df7ca614325cafa08258e82a63c">00015</a> <span class="preprocessor">#define LCD_CTRL PORTC</span>
<a name="l00016"></a><a class="code" href="lc7981_8h.html#4b6c8400da9a1ca3d4d83f3ef1f9c34a">00016</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CRTL_DDR DDRC</span>
<a name="l00017"></a><a class="code" href="lc7981_8h.html#4781e073871c6f27f89b9463ad3a4ed1">00017</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RS PC4</span>
<a name="l00018"></a><a class="code" href="lc7981_8h.html#26089a10ddd59a0dc7283c19ccc02533">00018</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RW PC2</span>
<a name="l00019"></a><a class="code" href="lc7981_8h.html#1640ffbc0d8ec0f7edb04a2b93918072">00019</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_EN PC0</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022
<a name="l00023"></a><a class="code" href="lc7981_8h.html#25e9d818788f36ed74d7c4579f87f2a6">00023</a> <span class="preprocessor">#define LCD_DATA PORTD</span>
<a name="l00024"></a><a class="code" href="lc7981_8h.html#0c114e723aa4c162c415fb6d4d963dd7">00024</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DATA_DDR DDRD</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span>
<a name="l00026"></a>00026 <span class="comment">// Macros for (un)setting the control pins</span>
<a name="l00027"></a><a class="code" href="lc7981_8h.html#795b48274d3f80bc744a707b67fd93e9">00027</a> <span class="preprocessor">#define lcd_rs_high() (LCD_CTRL |= (1 &lt;&lt; LCD_RS))</span>
<a name="l00028"></a><a class="code" href="lc7981_8h.html#6edb13d59460246fb4cc32ada1c9f4a8">00028</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_rs_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_RS))</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span>
<a name="l00030"></a><a class="code" href="lc7981_8h.html#d0ce3cd9b481370ad4de36eff08440c8">00030</a> <span class="preprocessor">#define lcd_rw_high() (LCD_CTRL |= (1 &lt;&lt; LCD_RW))</span>
<a name="l00031"></a><a class="code" href="lc7981_8h.html#7f5ebe0ca71b1298a7d3423850cc82b1">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_rw_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_RW))</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span>
<a name="l00033"></a><a class="code" href="lc7981_8h.html#e14be306d3620577abc8613d40401b04">00033</a> <span class="preprocessor">#define lcd_en_high() (LCD_CTRL |= (1 &lt;&lt; LCD_EN))</span>
<a name="l00034"></a><a class="code" href="lc7981_8h.html#d8dcdb36a9410fd96b2c936b7c9355dd">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_en_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_EN))</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span>
<a name="l00036"></a>00036
<a name="l00037"></a><a class="code" href="lc7981_8h.html#90a69d37f5c80f3ded970acf2dacf4c0">00037</a> <span class="preprocessor">#define LCD_TEXT 0</span>
<a name="l00038"></a><a class="code" href="lc7981_8h.html#720ef60606ac38ca3a5ab96a9c2b8168">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_TEXT_LINES 10</span>
<a name="l00039"></a><a class="code" href="lc7981_8h.html#82f0a630f3c41b5233f2ceb07c7dd736">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_TEXT_COLUMNS 26</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span>
<a name="l00041"></a><a class="code" href="lc7981_8h.html#dfaedf8da8e73d39a98d709b519a3117">00041</a> <span class="preprocessor">#define LCD_GRAPHIC 1</span>
<a name="l00042"></a><a class="code" href="lc7981_8h.html#51e83be6f6929f2a29d5467cd937dfc6">00042</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_GRAPHIC_WIDTH 160</span>
<a name="l00043"></a><a class="code" href="lc7981_8h.html#70265c4f840ef78872243e91c923af2f">00043</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_GRAPHIC_HEIGHT 80</span>
<a name="l00044"></a><a class="code" href="lc7981_8h.html#eb2d212a26da4a5a4d3231b2773023e5">00044</a> <span class="preprocessor"></span><span class="preprocessor">#define PIXEL_ON 1</span>
<a name="l00045"></a><a class="code" href="lc7981_8h.html#cda2f1b1cf6310700d0d91643c40e068">00045</a> <span class="preprocessor"></span><span class="preprocessor">#define PIXEL_OFF 0</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#9b18aca098d68e55bd7dd4b83f4f36e9" title="lcd_init set the to default values.">lcd_init</a>(uint8_t mode);
<a name="l00048"></a>00048 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#35c08b1fa742e650f4873939707b893b" title="Clears the display by setting the whole memory to 0.">lcd_clear</a>();
<a name="l00049"></a>00049
<a name="l00050"></a>00050 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#30251238a49999658455fdb0233757fb">lcd_write_text</a>(<span class="keywordtype">char</span> *txt);
<a name="l00051"></a>00051 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#dbf47a5efdf02367ded1ebf8f9edb5fe" title="Set the display cursor to a specific location.">lcd_gotoxy</a>(uint8_t x, uint8_t y);
<a name="l00006"></a>00006 <span class="comment"> *</span>
<a name="l00007"></a>00007 <span class="comment"> * This file is part of Sebastians AVR Library for lc7981.</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Sebastians AVR Library is free software: you can redistribute it and/or modify</span>
<a name="l00010"></a>00010 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00011"></a>00011 <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span>
<a name="l00012"></a>00012 <span class="comment"> * (at your option) any later version.</span>
<a name="l00013"></a>00013 <span class="comment"> *</span>
<a name="l00014"></a>00014 <span class="comment"> * Sebastians AVR Library is distributed in the hope that it will be useful,</span>
<a name="l00015"></a>00015 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00016"></a>00016 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<a name="l00017"></a>00017 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00018"></a>00018 <span class="comment"> *</span>
<a name="l00019"></a>00019 <span class="comment"> * You should have received a copy of the GNU General Public License</span>
<a name="l00020"></a>00020 <span class="comment"> * along with Sebastians AVR Library. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00021"></a>00021 <span class="comment"> *</span>
<a name="l00022"></a>00022 <span class="comment"> */</span>
<a name="l00023"></a>00023
<a name="l00024"></a>00024 <span class="preprocessor">#ifndef LC7981_H_</span>
<a name="l00025"></a><a class="code" href="lc7981_8h.html#e6ff861bd55f4dc46f25f5f6abfca15f">00025</a> <span class="preprocessor"></span><span class="preprocessor">#define LC7981_H_ LC7981_H_</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;avr/io.h&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;util/delay.h&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00030"></a>00030
<a name="l00031"></a><a class="code" href="lc7981_8h.html#8e945df7ca614325cafa08258e82a63c">00031</a> <span class="preprocessor">#define LCD_CTRL PORTC</span>
<a name="l00032"></a><a class="code" href="lc7981_8h.html#4b6c8400da9a1ca3d4d83f3ef1f9c34a">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_CRTL_DDR DDRC</span>
<a name="l00033"></a><a class="code" href="lc7981_8h.html#4781e073871c6f27f89b9463ad3a4ed1">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RS PC4</span>
<a name="l00034"></a><a class="code" href="lc7981_8h.html#26089a10ddd59a0dc7283c19ccc02533">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_RW PC2</span>
<a name="l00035"></a><a class="code" href="lc7981_8h.html#1640ffbc0d8ec0f7edb04a2b93918072">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_EN PC0</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00037"></a>00037
<a name="l00038"></a>00038
<a name="l00039"></a><a class="code" href="lc7981_8h.html#25e9d818788f36ed74d7c4579f87f2a6">00039</a> <span class="preprocessor">#define LCD_DATA PORTD</span>
<a name="l00040"></a><a class="code" href="lc7981_8h.html#0c114e723aa4c162c415fb6d4d963dd7">00040</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_DATA_DDR DDRD</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span>
<a name="l00042"></a>00042 <span class="comment">// Macros for (un)setting the control pins</span>
<a name="l00043"></a><a class="code" href="lc7981_8h.html#795b48274d3f80bc744a707b67fd93e9">00043</a> <span class="preprocessor">#define lcd_rs_high() (LCD_CTRL |= (1 &lt;&lt; LCD_RS))</span>
<a name="l00044"></a><a class="code" href="lc7981_8h.html#6edb13d59460246fb4cc32ada1c9f4a8">00044</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_rs_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_RS))</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span>
<a name="l00046"></a><a class="code" href="lc7981_8h.html#d0ce3cd9b481370ad4de36eff08440c8">00046</a> <span class="preprocessor">#define lcd_rw_high() (LCD_CTRL |= (1 &lt;&lt; LCD_RW))</span>
<a name="l00047"></a><a class="code" href="lc7981_8h.html#7f5ebe0ca71b1298a7d3423850cc82b1">00047</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_rw_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_RW))</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>
<a name="l00049"></a><a class="code" href="lc7981_8h.html#e14be306d3620577abc8613d40401b04">00049</a> <span class="preprocessor">#define lcd_en_high() (LCD_CTRL |= (1 &lt;&lt; LCD_EN))</span>
<a name="l00050"></a><a class="code" href="lc7981_8h.html#d8dcdb36a9410fd96b2c936b7c9355dd">00050</a> <span class="preprocessor"></span><span class="preprocessor">#define lcd_en_low() (LCD_CTRL &amp;= ~(1 &lt;&lt; LCD_EN))</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span>
<a name="l00052"></a>00052
<a name="l00053"></a>00053 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#735111507ed83172f58d5af2953e31c6" title="set or unset a pixel at the specified location">lcd_plot_pixel</a>(uint8_t x, uint8_t y, uint8_t <span class="keyword">set</span>);
<a name="l00054"></a>00054 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#f3b584ee8235c6ed4ebefc50f8a95915" title="This function will plot a bitmap with the upper left corner to the given coordinates...">lcd_plot_bitmap</a>(uint8_t x, uint8_t y, <span class="keyword">const</span> uint8_t *bitmap, uint8_t w, uint8_t h);
<a name="l00055"></a>00055
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#b4f286d6a313df7a5f692e0b4a9509ad" title="Generates the strobe signal for writing data.">lcd_strobe</a>();
<a name="l00058"></a>00058 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#b69146a9179fc5b5deef3fc61cf0208c" title="Writes a command and a data byte to the lcd.">lcd_write_command</a>(uint8_t cmd, uint8_t data);
<a name="l00059"></a>00059 <span class="keyword">inline</span> uint8_t <a class="code" href="lc7981_8c.html#6334333537ad1d0bd51cba1e80f32e74" title="Reads a byte from the display memory.">lcd_read_byte</a>();
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="preprocessor">#endif </span><span class="comment">/* LC7981_H_ */</span>
<a name="l00053"></a><a class="code" href="lc7981_8h.html#90a69d37f5c80f3ded970acf2dacf4c0">00053</a> <span class="preprocessor">#define LCD_TEXT 0</span>
<a name="l00054"></a><a class="code" href="lc7981_8h.html#720ef60606ac38ca3a5ab96a9c2b8168">00054</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_TEXT_LINES 10</span>
<a name="l00055"></a><a class="code" href="lc7981_8h.html#82f0a630f3c41b5233f2ceb07c7dd736">00055</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_TEXT_COLUMNS 26</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span>
<a name="l00057"></a><a class="code" href="lc7981_8h.html#dfaedf8da8e73d39a98d709b519a3117">00057</a> <span class="preprocessor">#define LCD_GRAPHIC 1</span>
<a name="l00058"></a><a class="code" href="lc7981_8h.html#51e83be6f6929f2a29d5467cd937dfc6">00058</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_GRAPHIC_WIDTH 160</span>
<a name="l00059"></a><a class="code" href="lc7981_8h.html#70265c4f840ef78872243e91c923af2f">00059</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_GRAPHIC_HEIGHT 80</span>
<a name="l00060"></a><a class="code" href="lc7981_8h.html#eb2d212a26da4a5a4d3231b2773023e5">00060</a> <span class="preprocessor"></span><span class="preprocessor">#define PIXEL_ON 1</span>
<a name="l00061"></a><a class="code" href="lc7981_8h.html#cda2f1b1cf6310700d0d91643c40e068">00061</a> <span class="preprocessor"></span><span class="preprocessor">#define PIXEL_OFF 0</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span>
<a name="l00063"></a>00063 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#9b18aca098d68e55bd7dd4b83f4f36e9" title="lcd_init set the to default values.">lcd_init</a>(uint8_t mode);
<a name="l00064"></a>00064 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#35c08b1fa742e650f4873939707b893b" title="Clears the display by setting the whole memory to 0.">lcd_clear</a>();
<a name="l00065"></a>00065
<a name="l00066"></a>00066 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#30251238a49999658455fdb0233757fb">lcd_write_text</a>(<span class="keywordtype">char</span> *txt);
<a name="l00067"></a>00067 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#dbf47a5efdf02367ded1ebf8f9edb5fe" title="Set the display cursor to a specific location.">lcd_gotoxy</a>(uint8_t x, uint8_t y);
<a name="l00068"></a>00068
<a name="l00069"></a>00069 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#735111507ed83172f58d5af2953e31c6" title="set or unset a pixel at the specified location">lcd_plot_pixel</a>(uint8_t x, uint8_t y, uint8_t <span class="keyword">set</span>);
<a name="l00070"></a>00070 <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#f3b584ee8235c6ed4ebefc50f8a95915" title="This function will plot a bitmap with the upper left corner to the given coordinates...">lcd_plot_bitmap</a>(uint8_t x, uint8_t y, <span class="keyword">const</span> uint8_t *bitmap, uint8_t w, uint8_t h);
<a name="l00071"></a>00071
<a name="l00072"></a>00072
<a name="l00073"></a>00073 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#b4f286d6a313df7a5f692e0b4a9509ad" title="Generates the strobe signal for writing data.">lcd_strobe</a>();
<a name="l00074"></a>00074 <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="lc7981_8c.html#b69146a9179fc5b5deef3fc61cf0208c" title="Writes a command and a data byte to the lcd.">lcd_write_command</a>(uint8_t cmd, uint8_t data);
<a name="l00075"></a>00075 <span class="keyword">inline</span> uint8_t <a class="code" href="lc7981_8c.html#6334333537ad1d0bd51cba1e80f32e74" title="Reads a byte from the display memory.">lcd_read_byte</a>();
<a name="l00076"></a>00076
<a name="l00077"></a>00077 <span class="preprocessor">#endif </span><span class="comment">/* LC7981_H_ */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -552,13 +552,13 @@ lcd_init set the to default values.
<td class="memname">void lcd_plot_bitmap </td>
<td>(</td>
<td class="paramtype">uint8_t&nbsp;</td>
<td class="paramname"> <em>x</em>, </td>
<td class="paramname"> <em>x_off</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&nbsp;</td>
<td class="paramname"> <em>y</em>, </td>
<td class="paramname"> <em>y_off</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@ -590,7 +590,16 @@ lcd_init set the to default values.
<p>
This function will plot a bitmap with the upper left corner to the given coordinates.
<p>
<br>
If the bitmap doesn't fit on the display at this location, nothing is drawn at all.<br>
Unset pixels are treated as transparent <br>
This function is by far the most tricky piece of code in this project,<br>
don't worry if you don't understand it at first sight. <br>
And if you know a better way to do this, tell me.<br>
<p>
This function is dedicated to Greta, one of the most important persons in my life so far.<br>
Even though I can't remember her actual name.<br>
</div>
</div><p>
<a class="anchor" name="735111507ed83172f58d5af2953e31c6"></a><!-- doxytag: member="lc7981.h::lcd_plot_pixel" ref="735111507ed83172f58d5af2953e31c6" args="(uint8_t x, uint8_t y, uint8_t set)" -->
@ -740,7 +749,7 @@ Writes a command and a data byte to the lcd.
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -46,7 +46,7 @@
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 16 17:13:00 2009 for glcd by&nbsp;
<hr size="1"><address style="text-align: right;"><small>Generated on Sun May 17 17:59:55 2009 for glcd by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>

View File

@ -10,8 +10,8 @@
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Sat May 16 17:13:00 2009 for glcd by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Sat May 16 17:13:00 2009 for glcd by Doxygen }}
\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Sun May 17 17:59:55 2009 for glcd by Doxygen }]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Sun May 17 17:59:55 2009 for glcd by Doxygen }}
\cfoot{}
\newenvironment{Code}
{\footnotesize}

View File

@ -73,7 +73,17 @@ lcd\_\-init set the to default values.
This function will plot a bitmap with the upper left corner to the given coordinates.
\index{lc7981.c@{lc7981.c}!lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}}
\par
If the bitmap doesn't fit on the display at this location, nothing is drawn at all.\par
Unset pixels are treated as transparent \par
This function is by far the most tricky piece of code in this project,\par
don't worry if you don't understand it at first sight. \par
And if you know a better way to do this, tell me.\par
This function is dedicated to Greta, one of the most important persons in my life so far.\par
Even though I can't remember her actual name.\par
\index{lc7981.c@{lc7981.c}!lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}}
\index{lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}!lc7981.c@{lc7981.c}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void lcd\_\-plot\_\-pixel (uint8\_\-t {\em x}, \/ uint8\_\-t {\em y}, \/ uint8\_\-t {\em set})}\label{lc7981_8c_735111507ed83172f58d5af2953e31c6}

View File

@ -223,12 +223,22 @@ lcd\_\-init set the to default values.
\end{Desc}
\index{lc7981.h@{lc7981.h}!lcd\_\-plot\_\-bitmap@{lcd\_\-plot\_\-bitmap}}
\index{lcd\_\-plot\_\-bitmap@{lcd\_\-plot\_\-bitmap}!lc7981.h@{lc7981.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void lcd\_\-plot\_\-bitmap (uint8\_\-t {\em x}, \/ uint8\_\-t {\em y}, \/ const uint8\_\-t $\ast$ {\em bitmap}, \/ uint8\_\-t {\em w}, \/ uint8\_\-t {\em h})}\label{lc7981_8h_175d691feb304584c8c18e6456e07401}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void lcd\_\-plot\_\-bitmap (uint8\_\-t {\em x\_\-off}, \/ uint8\_\-t {\em y\_\-off}, \/ const uint8\_\-t $\ast$ {\em bitmap}, \/ uint8\_\-t {\em w}, \/ uint8\_\-t {\em h})}\label{lc7981_8h_175d691feb304584c8c18e6456e07401}
This function will plot a bitmap with the upper left corner to the given coordinates.
\index{lc7981.h@{lc7981.h}!lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}}
\par
If the bitmap doesn't fit on the display at this location, nothing is drawn at all.\par
Unset pixels are treated as transparent \par
This function is by far the most tricky piece of code in this project,\par
don't worry if you don't understand it at first sight. \par
And if you know a better way to do this, tell me.\par
This function is dedicated to Greta, one of the most important persons in my life so far.\par
Even though I can't remember her actual name.\par
\index{lc7981.h@{lc7981.h}!lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}}
\index{lcd\_\-plot\_\-pixel@{lcd\_\-plot\_\-pixel}!lc7981.h@{lc7981.h}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void lcd\_\-plot\_\-pixel (uint8\_\-t {\em x}, \/ uint8\_\-t {\em y}, \/ uint8\_\-t {\em set})}\label{lc7981_8h_735111507ed83172f58d5af2953e31c6}

View File

@ -21,7 +21,7 @@
\vspace*{1cm}
{\large Generated by Doxygen 1.5.5}\\
\vspace*{0.5cm}
{\small Sat May 16 17:13:00 2009}\\
{\small Sun May 17 17:59:55 2009}\\
\end{center}
\end{titlepage}
\clearemptydoublepage

View File

@ -3,8 +3,25 @@
*
* Created on: 01.05.2009
* Author: sebastian
*
* This file is part of Sebastians AVR Library for lc7981.
*
* Sebastians AVR Library is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sebastians AVR Library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Sebastians AVR Library. If not, see <http://www.gnu.org/licenses/>.
*
*/
#include "lc7981.h"
uint8_t lcd_mode, //!< Currently used mode, can be text or graphic.
@ -251,20 +268,31 @@ uint8_t xr;
}
}
/**
* This function will plot a bitmap with the upper left corner to the given coordinates.
* This function will plot a bitmap with the upper left corner to the given coordinates.\n
* If the bitmap doesn't fit on the display at this location, nothing is drawn at all.\n
* Unset pixels are treated as transparent \n
* This function is by far the most tricky piece of code in this project,\n
* don't worry if you don't understand it at first sight. \n
* And if you know a better way to do this, tell me.\n
*
* This function is dedicated to Greta, one of the most important persons in my life so far.\n
* Even though I can't remember her actual name.\n
*/
void lcd_plot_bitmap(uint8_t x_off, uint8_t y_off, const uint8_t *bitmap, uint8_t w, uint8_t h) {
uint8_t x,y,cur,curs,sr,dr;
uint16_t pos;
//check if the bitmap fits on the display
if((x_off <= LCD_GRAPHIC_WIDTH - 1) && (y_off <= LCD_GRAPHIC_HEIGHT - 1)
&& (x_off + w <= LCD_GRAPHIC_WIDTH - 1) && (y_off + h <= LCD_GRAPHIC_HEIGHT - 1)) {
//loop linewise through the bitmap
for(y = y_off; y < y_off + h; y++) {
cur = 0;
//loop pixelwise through each line
for(x = x_off - (x_off % 8); x_off + w > x; x++) {
dr = x % 8;
if(dr == 0) {
if(dr == 0) { //load the next byte from display memory
pos = y * (LCD_GRAPHIC_WIDTH / 8) + x / 8;
lcd_write_command(0x0A,(uint8_t) pos );
lcd_write_command(0x0B,(uint8_t) (pos >> 8));
@ -273,21 +301,21 @@ uint16_t pos;
if((x - x_off) >= 0) {
sr = (x - x_off) % 8;
if(sr == 0) {
if(sr == 0) { //load the next byte of the bitmap
curs = pgm_read_byte(bitmap++);
}
//grep the pixel from the bitmap and put into the display byte
cur = cur | ((( curs & (1 << sr)) >> sr) << dr);
}
if(dr == 7) {
if(dr == 7) { //write the current byte to display memory
pos = y * (LCD_GRAPHIC_WIDTH / 8) + x / 8;
lcd_write_command(0x0A,(uint8_t) pos );
lcd_write_command(0x0B,(uint8_t) (pos >> 8));
lcd_write_command(0x0C,cur);
}
}
if(dr != 7) {
if(dr != 7) { //write the last byte to display memory if there's one left
pos = y * (LCD_GRAPHIC_WIDTH / 8) + x / 8;
lcd_write_command(0x0A,(uint8_t) pos );
lcd_write_command(0x0B,(uint8_t) (pos >> 8));

View File

@ -3,6 +3,22 @@
*
* Created on: 01.05.2009
* Author: sebastian
*
* This file is part of Sebastians AVR Library for lc7981.
*
* Sebastians AVR Library is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sebastians AVR Library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Sebastians AVR Library. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef LC7981_H_