<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>S.G. Vulcan &#187; Microcontrollers</title>
	<atom:link href="http://www.sgvulcan.com/category/electronics/microcontrollers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sgvulcan.com</link>
	<description>Silviu&#039;s tech blog. Resources and informations about linux, windows, symbian systems, networks, reviews, microcontrollers, and more.</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:39:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Another free e-book about Microcontrollers</title>
		<link>http://www.sgvulcan.com/another-free-e-book-about-microcontrollers/</link>
		<comments>http://www.sgvulcan.com/another-free-e-book-about-microcontrollers/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 18:09:39 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[mikroelectronica]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=604</guid>
		<description><![CDATA[Mikroelektronica, beign the nice guys they are released another free e-book about programming PIC microcontrollers this time it&#8217;s about programming in C. The title is, unsurprisingly: PIC Microcontrollers &#8211; Programming in C What are microcontrollers, anyway? Electronics built in one single chip capable of controlling a small submarine, a crane or an elevator… It’s up to you to decide what you want them to do and dump a program containing appropriate instructions into the chip. Author: Milan Verle You can read the book online (or print it for that matter) at http://www.mikroe.com/en/books/pic-books/mikroc/ . You can also order there the printed version of the book accompanied by a CD. Should you find the book useful you might want to consider buying it in order to support them. PIC Microcontrollers &#8211; Programming in CPIC]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-605" title="book_with_cd" src="http://www.sgvulcan.com/wp-content/uploads/2009/12/book_with_cd.gif" alt="book_with_cd" width="150" height="148" />Mikroelektronica, beign the nice guys they are released another free e-book about programming PIC microcontrollers this time it&#8217;s about programming in C. The title is, unsurprisingly:</p>
<p><strong>PIC Microcontrollers &#8211; Programming in C</strong></p>
<blockquote><p>What are microcontrollers, anyway? Electronics built in one single chip capable of controlling a small submarine, a crane or an elevator… It’s up to you to decide what you want them to do and dump a program containing appropriate instructions into the chip.</p></blockquote>
<p><em><strong>Author:</strong> Milan Verle </em></p>
<p>You can read the book online (or print it for that matter) at <a href="http://www.mikroe.com/en/books/pic-books/mikroc/" target="_blank">http://www.mikroe.com/en/books/pic-books/mikroc/</a> .</p>
<p>You can also order there the printed version of the book accompanied by a CD. Should you find the book useful you might want to consider buying it in order to support them.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<h1>PIC Microcontrollers &#8211; Programming in CPIC</h1>
</div>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/another-free-e-book-about-microcontrollers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bmp2h converter for ks0108 GLCD</title>
		<link>http://www.sgvulcan.com/bmp2h-converter-for-ks0108-glcd/</link>
		<comments>http://www.sgvulcan.com/bmp2h-converter-for-ks0108-glcd/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 15:41:43 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[ks0108]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=595</guid>
		<description><![CDATA[This is a converter I wrote with the graphics library for the PIC16F microcontrollers. Others work but this one works for sure. If you want to see the source code (I&#8217;m not particulary proud of it )  drop a comment and I&#8217;ll send it to you. If the bitmap is smaller than 128&#215;64 it will be left as is, if not it will be resized proportionally to 128&#215;64. You can set the name you want your variable to have and you can also set if you want the picture inverted or not. Depending on your lcd colors you might want to invert the result. You can download the converter here: glcd_convert.]]></description>
			<content:encoded><![CDATA[<p>This is a converter I wrote with the graphics library for the PIC16F microcontrollers. Others work but this one works for sure.</p>
<p>If you want to see the source code (I&#8217;m not particulary proud of it <img src='http://www.sgvulcan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )  drop a comment and I&#8217;ll send it to you.</p>
<p>If the bitmap is smaller than 128&#215;64 it will be left as is, if not it will be resized proportionally to 128&#215;64.</p>
<p><a href="http://www.sgvulcan.com/wp-content/uploads/2009/12/bmp2ks0108.jpg" rel="lightbox[595]"><img class="aligncenter size-full wp-image-596" title="bmp2ks0108" src="http://www.sgvulcan.com/wp-content/uploads/2009/12/bmp2ks0108.jpg" alt="bmp2ks0108" width="618" height="485" /></a></p>
<p>You can set the name you want your variable to have and you can also set if you want the picture inverted or not. Depending on your lcd colors you might want to invert the result.</p>
<p>You can download the converter here: <a href="http://www.sgvulcan.com/wp-content/uploads/2009/12/glcd_convert.zip">glcd_convert</a>.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/bmp2h-converter-for-ks0108-glcd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>KS0108 Graphics Library for PIC16F microcontrollers</title>
		<link>http://www.sgvulcan.com/ks0108-graphics-library-for-pic16f-microcontrollers/</link>
		<comments>http://www.sgvulcan.com/ks0108-graphics-library-for-pic16f-microcontrollers/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 15:23:50 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[easypic5]]></category>
		<category><![CDATA[ks0108]]></category>
		<category><![CDATA[mikroc]]></category>
		<category><![CDATA[pic]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=588</guid>
		<description><![CDATA[Not that I&#8217;m not happy with the default mikroC library for the KS0108 graphic displays, as I always I wanted something with the source available. Considering that I&#8217;m a beginner with microcontrolers having the source available to hack around is a very valuable learning tool. The project is based on the source found here: http://en.radzio.dxp.pl/ks0108/ The source is made pretty universal, still it took some work and modifications to have it working in mikroC. The archive is a ready working project for mikroC. I tested and developed it on the EasyPIC5 development board with a PIC16F887 microcontroller. You have to have the board  configured for the touchscreen panel and GLCD display &#8211; i suppose you know how to do that, if not you should consult the EasyPIC5 manual. The project has everything you need: a small demo program that uses text and bitmaps so you can see how the touchscreen, graphics, images and text work a font file a file to host your bitmap data graphic functions ks0108 functions microcontroller dependent functions. Download everything HERE.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-592" title="easypic5" src="http://www.sgvulcan.com/wp-content/uploads/2009/12/easypic5.jpg" alt="easypic5" width="133" height="111" />Not that I&#8217;m not happy with the default mikroC library for the KS0108 graphic displays, as I always I wanted something with the source available. Considering that I&#8217;m a beginner with microcontrolers having the source available to hack around is a very valuable learning tool.</p>
<p>The project is based on the source found here:</p>
<p><a href="http://en.radzio.dxp.pl/ks0108/" target="_blank">http://en.radzio.dxp.pl/ks0108/</a></p>
<p>The source is made pretty universal, still it took some work and modifications to have it working in mikroC. The archive is a ready working project for mikroC.</p>
<p>I tested and developed it on the EasyPIC5 development board with a PIC16F887 microcontroller. You have to have the board  configured for the touchscreen panel and GLCD display &#8211; i suppose you know how to do that, if not you should consult the EasyPIC5 manual.</p>
<p>The project has everything you need:</p>
<ul>
<li>a small demo program that uses text and bitmaps so you can see how the touchscreen, graphics, images and text work</li>
<li>a font file</li>
<li>a file to host your bitmap data</li>
<li>graphic functions</li>
<li>ks0108 functions</li>
<li>microcontroller dependent functions.</li>
</ul>
<p><a href="http://www.sgvulcan.com/wp-content/uploads/2009/12/ks0108_glcd.zip">Download everything HERE</a>.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/ks0108-graphics-library-for-pic16f-microcontrollers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A little fun with the 12F675 and mikroC</title>
		<link>http://www.sgvulcan.com/a-little-fun-with-the-12f675-and-mikroc/</link>
		<comments>http://www.sgvulcan.com/a-little-fun-with-the-12f675-and-mikroc/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 18:19:19 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=484</guid>
		<description><![CDATA[I have a small example that should get you going with the PIC 12F675 microcontroller and mikroC PRO. I am using the EasyPIC5 development board but I am sure you can adapt it to many development systems. It&#8217;s just a small introduction you can use as a tutorial on getting started with a comon, cheap and simple microcontroller. View Code C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 bit oldstate; // Old state flag &#160; void main&#40;&#41; &#123; ANSEL = 0; // Configure AN pins as digital CMCON = 7; // Turn off the comparators TRISIO = 0; // configure pins of GPIO as output TRISIO3_bit = 1; GPIO = 0xFF; do &#123; if &#40;Button&#40;&#38;amp;GPIO, 3, 1, 1&#41;&#41; &#123; // Detect logical one oldstate = 1; // Update flag &#125; if &#40;oldstate &#38;amp;&#38;amp; Button&#40;&#38;amp;GPIO, 3, 1, 0&#41;&#41; &#123; // Detect one-to-zero transition GPIO = ~GPIO; // Invert GPIO oldstate = 0; // Update flag &#125; // beginning of a repeat loop &#125; while&#40;1&#41;; // endless loop &#125; Copy and paste the code above in MikroC PRO. You can use the free version as the PIC12F675 only has 1K flash [...]]]></description>
			<content:encoded><![CDATA[<p>I have a small example that should get you going with the PIC 12F675 microcontroller and mikroC PRO. I am using the EasyPIC5 development board but I am sure you can adapt it to many development systems. It&#8217;s just a small introduction you can use as a tutorial on getting started with a comon, cheap and simple microcontroller.</p>
<p><span id="more-484"></span></p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p484code2'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4842"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p484code2"><pre class="c" style="font-family:monospace;">bit oldstate<span style="color: #339933;">;</span>              <span style="color: #666666; font-style: italic;">// Old state flag</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  ANSEL  <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>              <span style="color: #666666; font-style: italic;">// Configure AN pins as digital</span>
  CMCON  <span style="color: #339933;">=</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">;</span>              <span style="color: #666666; font-style: italic;">// Turn off the comparators</span>
  TRISIO <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>              <span style="color: #666666; font-style: italic;">// configure pins of GPIO as output</span>
  TRISIO3_bit <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
  GPIO <span style="color: #339933;">=</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>Button<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>GPIO<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>  <span style="color: #666666; font-style: italic;">// Detect logical one</span>
      oldstate <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;">// Update flag</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>oldstate <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> Button<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>GPIO<span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// Detect one-to-zero transition</span>
      GPIO <span style="color: #339933;">=</span> ~GPIO<span style="color: #339933;">;</span>               <span style="color: #666666; font-style: italic;">// Invert GPIO</span>
      oldstate <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>               <span style="color: #666666; font-style: italic;">// Update flag</span>
    <span style="color: #009900;">&#125;</span>                     <span style="color: #666666; font-style: italic;">// beginning of a repeat loop</span>
  <span style="color: #009900;">&#125;</span>  <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>           <span style="color: #666666; font-style: italic;">// endless loop</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Copy and paste the code above in MikroC PRO. You can use the free version as the PIC12F675 only has 1K flash memory. This small example changes the state of the LEDs on every press on the GPIO3 button (RA3 on the EasyPIC5). Don&#8217;t forget to set MCLR and oscillator as <strong>internal</strong> &#8211; so you get three extra pins! GPIO3 is input only so we will use it for a button. Should you want to test this on a breadboard or something similar this should be the schematic:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-486" title="schema_12f675_leds" src="http://www.sgvulcan.com/wp-content/uploads/2009/09/schema_12f675_leds.png" alt="schema_12f675_leds" width="526" height="361" /></p>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/a-little-fun-with-the-12f675-and-mikroc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I have a linux Jukebox ! [2011 update]</title>
		<link>http://www.sgvulcan.com/i-have-a-linux-jukebox/</link>
		<comments>http://www.sgvulcan.com/i-have-a-linux-jukebox/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 19:30:04 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[blaupunkt]]></category>
		<category><![CDATA[esekeyd]]></category>
		<category><![CDATA[jukebox]]></category>
		<category><![CDATA[lcd-stuff]]></category>
		<category><![CDATA[lcdproc]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mpc]]></category>
		<category><![CDATA[mpd]]></category>
		<category><![CDATA[numpad]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=462</guid>
		<description><![CDATA[Finally, after years of putting it away, after a few design changes and a fried motherboard I have a linux jukebox. Well, not a jukebox but more an internet radio. Check at the bottom for the latest updates. When I first had the ideea I noticed an old ~ &#8217;50s Blaupunkt Radio my father had in his basement. I investigated if the radio was worth restoring but the inside was rusted, the capacitors were long gone and most of the tubes were missing. It was more a case of rebuilding rather than restoring. I checked around the internet and saw that many models like this one existed, so it was not rare. And so, the radio was gutted and the insides went away. I cleaned and repaired the case as best as I could. The first ideea was to have a big harddrive inside, an amp and external speakers hooked to it. It worked like this for a while until the motherboard I used fried and so did the amp. The project was eventualy put aside. Anyways recently, I aquired an old Pentium III Compaq. By the case I could swear it was a small motherboard. It was NOT, and [...]]]></description>
			<content:encoded><![CDATA[<p>Finally, after years of putting it away, after a few design changes and a fried motherboard I have a linux jukebox. Well, not a jukebox but more an internet radio.</p>
<p><strong>Check at the bottom for the latest updates.</strong></p>
<div id="attachment_463" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/08/IMG_9095_i.jpg" rel="lightbox[462]"><img class="size-medium wp-image-463" title="Linux Webradio" src="http://www.sgvulcan.com/wp-content/uploads/2009/08/IMG_9095_i-300x200.jpg" alt="Linux Webradio" width="300" height="200" /></a><p class="wp-caption-text">Linux internet radio inside a vintage Blaupunkt radio case</p></div>
<p>When I first had the ideea I noticed an old ~ &#8217;50s Blaupunkt Radio my father had in his basement. I investigated if the radio was worth restoring but the inside was rusted, the capacitors were long gone and most of the tubes were missing. It was more a case of rebuilding rather than restoring. I checked around the internet and saw that many models like this one existed, so it was not rare. And so, the radio was gutted and the insides went away. I cleaned and repaired the case as best as I could.</p>
<p>The first ideea was to have a big harddrive inside, an amp and external speakers hooked to it. It worked like this for a while until the motherboard I used fried and so did the amp. The project was eventualy put aside.</p>
<p>Anyways recently, I aquired an old Pentium III Compaq. By the case I could swear it was a small motherboard. It was NOT, and also the custom compaq psu had very short wires, but I managed to fit it inside. Since I have a media center pc hooked to the tv and the surround with all the music on it I decided to change the original ideea and make it what it originally was: a radio.</p>
<p>So, I gutted an old set of very good sounding Altec Lansing computer speakers and installed the small amp and speakers inside. I also mounted the motherboard and psu inside. One small fan on a side does the job of cooling everything down. I use one of the buttons on the front for the amp and another one for the computer.</p>
<p>I gave up the harddrive from the original design for a compact flash &lt;-&gt; ide adapter and the system now boots from a 4 Gb compact flash card. I think I could have squeezed everything on a smaller card but I decided to do all the compiling in place and since cards are cheap I went for a big one. The adapter has space for a second card and, if I want I can fit a second, bigger card, to hold some music.</p>
<p>I have a usb numpad for control and the <a href="http://www.sgvulcan.com/4x20-lcd-screen-with-usb-interface/">usb lcd display</a> featured some time ago on this site for display.</p>
<p>Software:</p>
<ul>
<li><a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki" target="_blank">mpd</a> for playback</li>
<li><a href="http://mpd.wikia.com/wiki/Client:Mpc" target="_blank">mpc</a> for mpd control</li>
<li><a href="http://lcdproc.omnipotent.net/" target="_blank">Lcdproc</a> and <a href="http://lcd-stuff.berlios.de/">lcd-stuff</a> for usb lcd display</li>
<li><a href="http://www.burghardt.pl/tag/keyboard/" target="_blank">esekeyd</a> for numpad control</li>
<li>a bunch of bash scripts to glue everything in place</li>
</ul>
<p>I hit a few problems:</p>
<ul>
<li>Event Music Player Client daemon does not work, at least with my keypad. So I had to use an external daemon &#8211; esekeyd with mpc to control mpd.</li>
<li>lcd-stuff does not display the Name tag (that would be the radio station name, just the artist and track name. Fortunately it has a configuration tag to use as a title for the screen &#8211; on every playlist change a bashscript modifies that configuration setting to reflect the radio station&#8217;s name and reloads lcd-stuff &#8211; it&#8217;s ugly but it works.</li>
<li>I didn&#8217;t find a way to save .pls and .m3u files and have them recognized by the mpd database. So a script is called at boot time (and also can be started from one of the keys on the keypad) to generate a playlist of the radio stations. Control is easy after that, it&#8217;s a matter of play/stop, next / prev</li>
<li>I wanted to have a way to shut down the system safely from the keypad. OTOH I didn&#8217;t want shutting down every time I hit the wrong key. But esekeyd doesn&#8217;t support combinations. So I had <strong>*</strong> create a file, <strong>/</strong> create a second one but only if the first file (created by *) existed and on backspace press verify if the two files exist and if yes poweroff.</li>
</ul>
<p>I&#8217;ll post soon more photos, the insides and the configuration files and bash scripts used.</p>
<p><strong>2011 Update</strong></p>
<p>It never functioned reliably and so I decided on rebuilding it once more <img src='http://www.sgvulcan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>The Compaq Deskpro EN was reassembled and donated to charity.</li>
<li>I bought the cheapest intel motherboard with an atom processor.</li>
<li>With the motherboard I also bought a small, slim PSU which happened to have the loudest annoying fan I ever heard. Fortunately the motherboard and disk use small amounts of power so no heat is produced. I hooked the fan to 5v and now it&#8217;s quiet.</li>
<li>I got a good deal on a pair of Microlab powered speakers (were the last in stock, open box) so I hooked those up to the radio. It&#8217;s still possible to use the insternal speakers but why would you want to <img src='http://www.sgvulcan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Used a 500Gb sata disk that I also had around.</li>
<li>Took the oportunity to update slackware, mpd and everything else to the latest versions.</li>
<li>Took out the LCD until I can find time to build it in a nice case</li>
<li>The usb numpad is still there but I&#8217;m having trouble finding a daemon that actually works between two reboots</li>
<li>I use Client175 for web control and also Sonata on n800 and DroidMPD on my wife&#8217;s tablet to control it. Having 500Gb it&#8217;s got it&#8217;s music back (not only internet radio).</li>
<li>Since playlist support seems to be better now I have each radio stored in a playlist that DroidMPD or Client175 can simply load.</li>
<li>The best thing is that there are no custom hackish scripts left that could break all the time. It&#8217;s just stock mpd, playlists and the clients. Oh, I also have the command line clients installed for when I ssh into it using my n900.</li>
<li>The only problematic thing left is the shitty usb wi-fi adapter I use (don&#8217;t know, might be the drivers) it&#8217;s slow and sometimes connection drops. I added <strong>ping -c1 GATEWAY_IP </strong>in cron every 2 minutes and this seems to help.</li>
</ul>
<p>Somebody in the comments asked for the configurations and scripts  The original ones, from the compact flash should still be in backups somewhere but I don&#8217;t see how they could help, as they point to old or discontinued versions.  (lcd-stuff comes to mind). The configuration I use now is as stock as one can get with mpd. Let me know if you have questions about it and also <strong><em>please</em></strong> recommend me a daemon that can listen for keystrokes from the usb keypad and it&#8217;s stable.</p>
<p>Have fun.</p>
<h1 class="ha"><span id=":4g" class="hP"> I have a linux Jukebox !</span></h1>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/i-have-a-linux-jukebox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>My favourite microcontroler</title>
		<link>http://www.sgvulcan.com/my-favourite-microcontroler/</link>
		<comments>http://www.sgvulcan.com/my-favourite-microcontroler/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 12:56:54 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=427</guid>
		<description><![CDATA[My favourite microcontroler for now is PIC16F887. I will soon try to build some projects using the 18F series, but for now my Nixi clock and planned LED cube I will use th e16F887. No, I didn&#8217;t gave up, I plan to start work on the nixie projects ASAP. Program Memory Type Flash Program Memory (KB) 14 CPU Speed (MIPS) 5 RAM Bytes 368 Data EEPROM (bytes) 256 Digital Communication Peripherals 1-A/E/USART, 1-MSSP(SPI/I2C) Capture/Compare/PWM Peripherals 1 CCP, 1 ECCP Timers 2 x 8-bit, 1 x 16-bit ADC 14 ch, 10-bit Comparators 2 Temperature Range (C) -40 to 125 Operating Voltage Range (V) 2 to 5.5 Pin Count 40 Here&#8217;s a link to the datasheet. Program Memory Type Flash Program Memory (KB) 14 CPU Speed (MIPS) 5 RAM Bytes 368 Data EEPROM (bytes) 256 Digital Communication Peripherals 1-A/E/USART, 1-MSSP(SPI/I2C) Capture/Compare/PWM Peripherals 1 CCP, 1 ECCP Timers 2 x 8-bit, 1 x 16-bit ADC 14 ch, 10-bit Comparators 2 Temperature Range (C) -40 to 125 Operating Voltage Range (V) 2 to 5.5 Pin Count 40]]></description>
			<content:encoded><![CDATA[<p>My favourite microcontroler for now is PIC16F887. I will soon try to build some projects using the 18F series, but for now my Nixi clock and planned LED cube I will use th e16F887. No, I didn&#8217;t gave up, I plan to start work on the nixie projects ASAP.</p>
<table id="tblParams" style="border-collapse: collapse;" border="0" cellspacing="0" cellpadding="1">
<tbody>
<tr class="GridItem" align="Center">
<td align="Left">Program Memory Type</td>
<td align="Left">Flash</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Program Memory (KB)</td>
<td align="Left">14</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">CPU Speed (MIPS)</td>
<td align="Left">5</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">RAM Bytes</td>
<td align="Left">368</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Data EEPROM (bytes)</td>
<td align="Left">256</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Digital Communication Peripherals</td>
<td align="Left">1-A/E/USART, 1-MSSP(SPI/I2C)</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Capture/Compare/PWM Peripherals</td>
<td align="Left">1 CCP, 1 ECCP</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Timers</td>
<td align="Left">2 x 8-bit, 1 x 16-bit</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">ADC</td>
<td align="Left">14 ch, 10-bit</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Comparators</td>
<td align="Left">2</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Temperature Range (C)</td>
<td align="Left">-40 to 125</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Operating Voltage Range (V)</td>
<td align="Left">2 to 5.5</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Pin Count</td>
<td align="Left">40</td>
</tr>
</tbody>
</table>
<p><a href="http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf" target="_blank">Here&#8217;s a link to the datasheet</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<table id="tblParams" style="border-collapse: collapse;" border="0" cellspacing="0" cellpadding="1">
<tbody>
<tr class="GridItem" align="Center">
<td align="Left">Program Memory Type</td>
<td align="Left">Flash</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Program Memory (KB)</td>
<td align="Left">14</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">CPU Speed (MIPS)</td>
<td align="Left">5</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">RAM Bytes</td>
<td align="Left">368</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Data EEPROM (bytes)</td>
<td align="Left">256</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Digital Communication Peripherals</td>
<td align="Left">1-A/E/USART, 1-MSSP(SPI/I2C)</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Capture/Compare/PWM Peripherals</td>
<td align="Left">1 CCP, 1 ECCP</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Timers</td>
<td align="Left">2 x 8-bit, 1 x 16-bit</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">ADC</td>
<td align="Left">14 ch, 10-bit</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Comparators</td>
<td align="Left">2</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Temperature Range (C)</td>
<td align="Left">-40 to 125</td>
</tr>
<tr class="GridAltItem" align="Center">
<td align="Left">Operating Voltage Range (V)</td>
<td align="Left">2 to 5.5</td>
</tr>
<tr class="GridItem" align="Center">
<td align="Left">Pin Count</td>
<td align="Left">40</td>
</tr>
</tbody>
</table>
</div>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/my-favourite-microcontroler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open source ADC read function</title>
		<link>http://www.sgvulcan.com/open-source-adc-read-function/</link>
		<comments>http://www.sgvulcan.com/open-source-adc-read-function/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 16:30:43 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[16f887]]></category>
		<category><![CDATA[easypic5]]></category>
		<category><![CDATA[mikroc]]></category>
		<category><![CDATA[pic]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=391</guid>
		<description><![CDATA[Yes, I know, mikroC has it&#8217;s own ADC library, but as always I am a sucker for open source. So I decided to write my own adc read function, so I can better understand the PIC ADC converter operation. And, in the good spirit of open source I decided to share my code. The following code is the ADC on LCD example supplied by MikroElectronika with their EasyPic5 board, and it&#8217;s written in MikroC Pro. Of interest are the ADC related initializations and the adc_read2 function. (adc_read is mikroC&#8217;s own function). Code is tested on the EasyPic5 board, but should work on other boards and / or compilers with minimal modifications. Anyways, if you were searching for an example written in C on how to read the ADC inside a pic microcontroler here it is: View Code C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I know, mikroC has it&#8217;s own ADC library, but as always I am a sucker for open source. So I decided to write my own adc read function, so I can better understand the PIC ADC converter operation. And, in the good spirit of open source I decided to share my code. The following code is the ADC on LCD example supplied by MikroElectronika with their EasyPic5 board, and it&#8217;s written in MikroC Pro. Of interest are the ADC related initializations and the <strong>adc_read2</strong> function. (adc_read is mikroC&#8217;s own function).</p>
<p>Code is tested on the EasyPic5 board, but should work on other boards and / or compilers with minimal modifications. Anyways, if you were searching for an example written in C on how to read the ADC inside a pic microcontroler here it is:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p391code4'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3914"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</pre></td><td class="code" id="p391code4"><pre class="c" style="font-family:monospace;">&nbsp;
<span style="color: #808080; font-style: italic;">/*
&nbsp;
  * Based on MikroElectronika ADC on LCD example
&nbsp;
  * Uses self written ADC_Read function
&nbsp;
*/</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> ch<span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> adc_rd<span style="color: #339933;">;</span>
<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>text<span style="color: #339933;">;</span>
<span style="color: #993333;">long</span> tlong<span style="color: #339933;">;</span>
&nbsp;
sbit LCD_RS at RB4_bit<span style="color: #339933;">;</span>
sbit LCD_EN at RB5_bit<span style="color: #339933;">;</span>
sbit LCD_D4 at RB0_bit<span style="color: #339933;">;</span>
sbit LCD_D5 at RB1_bit<span style="color: #339933;">;</span>
sbit LCD_D6 at RB2_bit<span style="color: #339933;">;</span>
sbit LCD_D7 at RB3_bit<span style="color: #339933;">;</span>
&nbsp;
sbit LCD_RS_Direction at TRISB4_bit<span style="color: #339933;">;</span>
sbit LCD_EN_Direction at TRISB5_bit<span style="color: #339933;">;</span>
sbit LCD_D4_Direction at TRISB0_bit<span style="color: #339933;">;</span>
sbit LCD_D5_Direction at TRISB1_bit<span style="color: #339933;">;</span>
sbit LCD_D6_Direction at TRISB2_bit<span style="color: #339933;">;</span>
sbit LCD_D7_Direction at TRISB3_bit<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">unsigned</span> adc_read2<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> channel<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
&nbsp;
   <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>channel<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        ADCON0.<span style="color: #202020;">CHS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS2</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS3</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        ADCON0.<span style="color: #202020;">CHS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS2</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS3</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        ADCON0.<span style="color: #202020;">CHS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS2</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS3</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        ADCON0.<span style="color: #202020;">CHS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS2</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS3</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        ADCON0.<span style="color: #202020;">CHS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS2</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
        ADCON0.<span style="color: #202020;">CHS3</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
   <span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
   ADCON0.<span style="color: #202020;">GO_DONE</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// start conversion</span>
   <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>ADCON0.<span style="color: #202020;">GO_DONE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// wait for conversion</span>
   <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span>ADRESH <span style="color: #339933;">&lt;&lt;</span> <span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> ADRESL<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// return value</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  INTCON <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;">// disable all interrupts</span>
  ANSEL  <span style="color: #339933;">=</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// Configure AN2 pin as analog input</span>
  TRISA  <span style="color: #339933;">=</span> <span style="color: #208080;">0x04</span><span style="color: #339933;">;</span>
  ANSELH <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;">// Configure other AN pins as digital I/O</span>
&nbsp;
  ADCON1.<span style="color: #202020;">VCFG0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// set internal</span>
  ADCON1.<span style="color: #202020;">VCFG1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  ADCON0.<span style="color: #202020;">ADCS0</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// use Vdd as reference</span>
  ADCON0.<span style="color: #202020;">ADCS1</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// use Vcc as reference</span>
  ADCON1.<span style="color: #202020;">ADFM</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// result is right Justified</span>
  ADCON0.<span style="color: #202020;">ADON</span> <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// enable A/D converter</span>
&nbsp;
&nbsp;
&nbsp;
  Lcd_Init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  LCD_Cmd<span style="color: #009900;">&#40;</span>_LCD_CURSOR_OFF<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     <span style="color: #666666; font-style: italic;">// send command to LCD (cursor off)</span>
  LCD_Cmd<span style="color: #009900;">&#40;</span>_LCD_CLEAR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                      <span style="color: #666666; font-style: italic;">// send command  to LCD (clear LCD)</span>
&nbsp;
  text <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;mikroElektronika&quot;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// assign text to string</span>
  LCD_Out<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// print string a on LCD, 1st row, 1st column</span>
  text <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;LCD example&quot;</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// assign text to string</span>
  LCD_Out<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// print string a on LCD, 2nd row, 1st column</span>
&nbsp;
  ADCON1     <span style="color: #339933;">=</span> <span style="color: #208080;">0x82</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// configure VDD as Vref, and analog channels</span>
  TRISA      <span style="color: #339933;">=</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// designate PORTA as input</span>
  Delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text  <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;voltage:&quot;</span><span style="color: #339933;">;</span>           <span style="color: #666666; font-style: italic;">// assign text to string</span>
  <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// let's use our open source function</span>
    adc_rd  <span style="color: #339933;">=</span> ADC_read2<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     <span style="color: #666666; font-style: italic;">// get ADC value from 2nd channel</span>
    LCD_Out<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          <span style="color: #666666; font-style: italic;">// print string a on LCD, 2nd row, 1st column</span>
&nbsp;
    tlong <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">long</span><span style="color: #009900;">&#41;</span>adc_rd <span style="color: #339933;">*</span> <span style="color: #0000dd;">5000</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">// covert adc reading to milivolts</span>
    tlong <span style="color: #339933;">=</span> tlong <span style="color: #339933;">/</span> <span style="color: #0000dd;">1023</span><span style="color: #339933;">;</span>          <span style="color: #666666; font-style: italic;">// 0..1023 -&gt; 0-5000mV</span>
&nbsp;
    ch     <span style="color: #339933;">=</span> tlong <span style="color: #339933;">/</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>        <span style="color: #666666; font-style: italic;">// extract volts digit</span>
    LCD_Chr<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">9</span><span style="color: #339933;">,</span><span style="color: #0000dd;">48</span><span style="color: #339933;">+</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>           <span style="color: #666666; font-style: italic;">// write ASCII digit at 2nd row, 9th column</span>
    LCD_Chr_CP<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    ch    <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>tlong <span style="color: #339933;">/</span> <span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">// extract 0.1 volts digit</span>
    LCD_Chr_CP<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">48</span><span style="color: #339933;">+</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>            <span style="color: #666666; font-style: italic;">// write ASCII digit at cursor point</span>
&nbsp;
    ch    <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>tlong <span style="color: #339933;">/</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;">// extract 0.01 volts digit</span>
    LCD_Chr_CP<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">48</span><span style="color: #339933;">+</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>           <span style="color: #666666; font-style: italic;">// write ASCII digit at cursor point</span>
&nbsp;
    ch    <span style="color: #339933;">=</span> tlong <span style="color: #339933;">%</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;">// extract 0.001 volts digit</span>
    LCD_Chr_CP<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">48</span><span style="color: #339933;">+</span>ch<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        <span style="color: #666666; font-style: italic;">// write ASCII digit at cursor point</span>
    LCD_Chr_CP<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'V'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    Delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Please note that I only checked for the first 4 channels in the adc_read2 function. It&#8217;s easy to check for the other ADC channels using this table:</p>
<table border="1" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>CHS3</strong></td>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>CHS2</strong></td>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>CHS1</strong></td>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>CHS0</strong></td>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>Channel</strong></td>
<td style="background: #f5f2ec none repeat scroll 0% 0%; width: 100px;" align="center"><strong>Pin</strong></td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">RA0/AN0</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">RA1/AN1</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">2</td>
<td style="width: 100px;" align="center">RA2/AN2</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">3</td>
<td style="width: 100px;" align="center">RA3/AN3</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">4</td>
<td style="width: 100px;" align="center">RA5/AN4</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">5</td>
<td style="width: 100px;" align="center">RE0/AN5</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">6</td>
<td style="width: 100px;" align="center">RE1/AN6</td>
</tr>
<tr>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">7</td>
<td style="width: 100px;" align="center">RE2/AN7</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">8</td>
<td style="width: 100px;" align="center">RB2/AN8</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">9</td>
<td style="width: 100px;" align="center">RB3/AN9</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">10</td>
<td style="width: 100px;" align="center">RB1/AN10</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">11</td>
<td style="width: 100px;" align="center">RB4/AN11</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">12</td>
<td style="width: 100px;" align="center">RB0/AN12</td>
</tr>
<tr>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">0</td>
<td style="width: 100px;" align="center">1</td>
<td style="width: 100px;" align="center">13</td>
<td style="width: 100px;" align="center">RB5/AN13</td>
</tr>
</tbody>
</table>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/open-source-adc-read-function/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A free book about PIC Microcontrollers</title>
		<link>http://www.sgvulcan.com/a-free-book-about-pic-microcontrollers/</link>
		<comments>http://www.sgvulcan.com/a-free-book-about-pic-microcontrollers/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 11:22:59 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[16f887]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[pic]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=355</guid>
		<description><![CDATA[As you might have noticed from my posts I am always in for a free lunch. So, this would be free lunch for your brain. Even if you don&#8217;t use or plan to use Mikroelektronika products you might want to know that they have a free book about PIC microcontrolers on their website: here. It&#8217;s not tied up to any of their development systems but it does focus on the PIC16F887, and even if the English used is not the best possible it still gets the job done. It&#8217;s a good read, especially for beginners. It has clear color diagrams, examples, schematics and much more. It&#8217;s been really helpful for me. Again, if you missed the link you can read the full book for free here.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-356" title="book_with_cd" src="http://www.sgvulcan.com/wp-content/uploads/2009/07/book_with_cd.jpg" alt="book_with_cd" width="150" height="157" />As you might have noticed from my posts I am always in for a free lunch.</p>
<p>So, this would be free lunch for your brain. Even if you don&#8217;t use or plan to use Mikroelektronika products you might want to know that they have a free book about PIC microcontrolers on their website: <a href="http://www.mikroe.com/en/books/picmcubook/" target="_blank">here</a>.</p>
<p>It&#8217;s not tied up to any of their development systems but it does focus on the PIC16F887, and even if the English used is not the best possible it still gets the job done.</p>
<p>It&#8217;s a good read, especially for beginners. It has clear color diagrams, examples, schematics and much more. It&#8217;s been really helpful for me.</p>
<p>Again, if you missed the link you can read the full book for free <a href="http://www.mikroe.com/en/books/picmcubook/" target="_blank">here</a>.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/a-free-book-about-pic-microcontrollers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Temperature graph on GLCD with EasyPic5</title>
		<link>http://www.sgvulcan.com/temperature-graph-on-glcd-with-easypic5/</link>
		<comments>http://www.sgvulcan.com/temperature-graph-on-glcd-with-easypic5/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 17:17:46 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[16f887]]></category>
		<category><![CDATA[ds1820]]></category>
		<category><![CDATA[easypic5]]></category>
		<category><![CDATA[glcd]]></category>
		<category><![CDATA[ks0108]]></category>
		<category><![CDATA[mikroc]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[temperature]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=278</guid>
		<description><![CDATA[This is a small project I did for school. I am using the easypic 5 board from mikroelectronica to display a linegraph of the temperature read every second by the DS1820 sensor and displays it on the KS0108 based GLCD. I am using the OneWire and GLCD libraries that come with the mikroC compiler. I am using a PIC16F887 mounted on the board. You might need to adjust the code if you use a different microcontroler / development board. Also I have the DS1820 mounted in it&#8217;s place with the jumper conecting it to RE2. View Code C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 [...]]]></description>
			<content:encoded><![CDATA[<p>This is a small project I did for school. I am using the easypic 5 board from mikroelectronica to display a linegraph of the temperature read every second by the DS1820 sensor and displays it on the KS0108 based GLCD. I am using the OneWire and GLCD libraries that come with the mikroC compiler.</p>
<div id="attachment_279" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/06/16062009023_cnv.jpg" rel="lightbox[278]"><img class="size-medium wp-image-279" title="16062009023_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/06/16062009023_cnv-300x225.jpg" alt="16062009023_cnv" width="300" height="225" /></a><p class="wp-caption-text">Temperature line graph showing on the GLCD mounted on the EasyPic 5 development board</p></div>
<p style="text-align: left;">I am using a PIC16F887 mounted on the board. You might need to adjust the code if you use a different microcontroler / development board. Also I have the DS1820 mounted in it&#8217;s place with the jumper conecting it to RE2.</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p278code6'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2786"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
</pre></td><td class="code" id="p278code6"><pre class="c" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;">// Conexiuni GLCD</span>
&nbsp;
<span style="color: #993333;">char</span> GLCD_DataPort at PORTD<span style="color: #339933;">;</span>
&nbsp;
sbit GLCD_CS1 at RB0_bit<span style="color: #339933;">;</span>
sbit GLCD_CS2 at RB1_bit<span style="color: #339933;">;</span>
sbit GLCD_RS  at RB2_bit<span style="color: #339933;">;</span>
sbit GLCD_RW  at RB3_bit<span style="color: #339933;">;</span>
sbit GLCD_EN  at RB4_bit<span style="color: #339933;">;</span>
sbit GLCD_RST at RB5_bit<span style="color: #339933;">;</span>
&nbsp;
sbit GLCD_CS1_Direction at TRISB0_bit<span style="color: #339933;">;</span>
sbit GLCD_CS2_Direction at TRISB1_bit<span style="color: #339933;">;</span>
sbit GLCD_RS_Direction  at TRISB2_bit<span style="color: #339933;">;</span>
sbit GLCD_RW_Direction  at TRISB3_bit<span style="color: #339933;">;</span>
sbit GLCD_EN_Direction  at TRISB4_bit<span style="color: #339933;">;</span>
sbit GLCD_RST_Direction at TRISB5_bit<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//  Seteaza TEMP_RESOLUTION la rez. coresp. senzorului DS18x20:</span>
<span style="color: #666666; font-style: italic;">//  18S20: 9  (default; poate fi 9,10,11 sau 12)</span>
<span style="color: #666666; font-style: italic;">//  18B20: 12</span>
&nbsp;
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">short</span> TEMP_RESOLUTION <span style="color: #339933;">=</span> <span style="color: #0000dd;">9</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">char</span> <span style="color: #339933;">*</span>text <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;000.0000&quot;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">unsigned</span> temp<span style="color: #339933;">;</span>
<span style="color: #993333;">char</span> posx<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// pozitia liniei de temperatura</span>
&nbsp;
<span style="color: #993333;">void</span> SetTempTextGfx<span style="color: #009900;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> temp2write<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">short</span> RES_SHIFT <span style="color: #339933;">=</span> TEMP_RESOLUTION <span style="color: #339933;">-</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">char</span> negative<span style="color: #339933;">,</span>temp_whole<span style="color: #339933;">;</span>
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">int</span> temp_fraction<span style="color: #339933;">;</span>
&nbsp;
  negative <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// verificam daca temperatura este negativa</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>temp2write <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #208080;">0x8000</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'-'</span><span style="color: #339933;">;</span>
     temp2write <span style="color: #339933;">=</span> ~temp2write <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
     negative <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
  <span style="color: #666666; font-style: italic;">// extrage temp_whole</span>
  temp_whole <span style="color: #339933;">=</span> temp2write <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span> RES_SHIFT <span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// la capatul ecranului se reia de la inceput</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>posx <span style="color: #339933;">==</span> <span style="color: #0000dd;">128</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   Glcd_box<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">128</span><span style="color: #339933;">,</span><span style="color: #0000dd;">41</span><span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   Glcd_box<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #339933;">,</span><span style="color: #0000dd;">43</span><span style="color: #339933;">,</span><span style="color: #0000dd;">128</span><span style="color: #339933;">,</span><span style="color: #0000dd;">64</span><span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   posx <span style="color: #339933;">=</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #666666; font-style: italic;">// stergem liniile vechi</span>
  Glcd_V_line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">41</span><span style="color: #339933;">,</span>posx<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Glcd_V_line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">43</span><span style="color: #339933;">,</span><span style="color: #0000dd;">64</span><span style="color: #339933;">,</span>posx<span style="color: #339933;">,</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// desenam linia noua</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>negative <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
     Glcd_V_line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">41</span><span style="color: #339933;">-</span>temp_whole<span style="color: #339933;">,</span><span style="color: #0000dd;">41</span><span style="color: #339933;">,</span>posx<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">else</span>
     Glcd_V_line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">43</span><span style="color: #339933;">,</span><span style="color: #0000dd;">43</span><span style="color: #339933;">+</span>temp_whole<span style="color: #339933;">,</span>posx<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  posx<span style="color: #339933;">=</span>posx<span style="color: #339933;">+</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">// converteste temp_whole in text</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>temp_whole<span style="color: #339933;">/</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span>
     text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> temp_whole<span style="color: #339933;">/</span><span style="color: #0000dd;">100</span>  <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">else</span>
     text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">;</span>
&nbsp;
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>temp_whole<span style="color: #339933;">/</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color:#800080;">10</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>             <span style="color: #666666; font-style: italic;">// Extrage cifra zecilor</span>
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>  temp_whole<span style="color: #339933;">%</span><span style="color:#800080;">10</span>     <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>             <span style="color: #666666; font-style: italic;">// Extrage cifra unitatilor</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// extrage temp_fraction si o converteste la unsigned int</span>
  temp_fraction  <span style="color: #339933;">=</span> temp2write <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #339933;">-</span>RES_SHIFT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  temp_fraction <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;=</span> <span style="color: #208080;">0x000F</span><span style="color: #339933;">;</span>
  temp_fraction <span style="color: #339933;">*=</span> <span style="color: #0000dd;">625</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// converteste temp_fraction in caractere</span>
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>  temp_fraction<span style="color: #339933;">/</span><span style="color: #0000dd;">1000</span>    <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// Extrage cifra miilor</span>
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>temp_fraction<span style="color: #339933;">/</span><span style="color: #0000dd;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color:#800080;">10</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// Extrage cifra sutelor</span>
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">6</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>temp_fraction<span style="color: #339933;">/</span><span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color:#800080;">10</span>  <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// Extrage cifrazecilor</span>
  text<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span>  temp_fraction<span style="color: #339933;">%</span><span style="color:#800080;">10</span>      <span style="color: #339933;">+</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// Extrage cifra unitatilor</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">short</span> i<span style="color: #339933;">;</span>
&nbsp;
  ANSEL  <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>           <span style="color: #666666; font-style: italic;">// Configureaza pinii AN ca I/O digitali</span>
  ANSELH <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  C1ON_bit <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>         <span style="color: #666666; font-style: italic;">// Dez. comp.</span>
  C2ON_bit <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
  Glcd_Init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          <span style="color: #666666; font-style: italic;">// Initializeaza GLCD</span>
  Glcd_Fill<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      <span style="color: #666666; font-style: italic;">// Sterge GLCD</span>
&nbsp;
  posx <span style="color: #339933;">=</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span>
&nbsp;
    Glcd_V_Line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">64</span><span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Glcd_H_Line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">128</span><span style="color: #339933;">,</span><span style="color: #0000dd;">42</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #0000dd;">64</span><span style="color: #339933;">;</span>i<span style="color: #339933;">=</span>i<span style="color: #339933;">+</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> Glcd_H_Line<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span>i<span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// citirea temperaturii</span>
    Ow_Reset<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                         <span style="color: #666666; font-style: italic;">// Semnal reset Onewire</span>
    Ow_Write<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                   <span style="color: #666666; font-style: italic;">// Comanda SKIP_ROM</span>
    Ow_Write<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x44</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                   <span style="color: #666666; font-style: italic;">// Comanda CONVERT_T</span>
    Delay_us<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">120</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    Ow_Reset<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Ow_Write<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xCC</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                   <span style="color: #666666; font-style: italic;">// Comanda SKIP_ROM</span>
    Ow_Write<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xBE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                   <span style="color: #666666; font-style: italic;">// Comanda READ_SCRATCHPAD</span>
&nbsp;
    temp <span style="color: #339933;">=</span>  Ow_Read<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    temp <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Ow_Read<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>PORTE<span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #0000dd;">8</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> temp<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Formateaza si afiseaza pe ecran</span>
&nbsp;
    SetTempTextGfx<span style="color: #009900;">&#40;</span>temp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Glcd_Write_Text<span style="color: #009900;">&#40;</span>text<span style="color: #339933;">,</span><span style="color: #0000dd;">80</span><span style="color: #339933;">,</span><span style="color: #0000dd;">7</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Delay_ms<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/temperature-graph-on-glcd-with-easypic5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4&#215;20 LCD screen with USB interface.</title>
		<link>http://www.sgvulcan.com/4x20-lcd-screen-with-usb-interface/</link>
		<comments>http://www.sgvulcan.com/4x20-lcd-screen-with-usb-interface/#comments</comments>
		<pubDate>Sun, 31 May 2009 13:50:54 +0000</pubDate>
		<dc:creator>silviu</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[18f2550]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[pic]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.sgvulcan.com/?p=146</guid>
		<description><![CDATA[Attaching an LCD screen to a pc is a pretty easy job. I am working on a jukebox that I wanted to a screen attached to. Although a HD44780 based LCD can be attached to the parallel port with almost no additional parts I wanted a more flexible solution, and I thought about microcontrollers with usb support. I found a thread here, where all the work is pretty much done. Thank you ch424. All credits for the design and firmware should go to him. I am simply documenting here my build. You can find on the thread mentioned everything you need &#8211; firmware, drivers, schematics, programmer configuration. By the way I used the Easy Pic 5 from Mikroelektronika to program my PIC and do some initial testing. The settings for Picflash were similar with the ones ch424 shows for his Winpic.  If you are having trouble programming with Picflash from mikroe drop a comment and I&#8217;ll try to help you. The project The design is based around a PIC18F2550 from Microchip. You will also need an LCD screen, one that is up to 20&#215;4 and HD44780 or KS0066U compliant. The design can also accommodate some GPOs, a rotary encoder and [...]]]></description>
			<content:encoded><![CDATA[<p>Attaching an LCD screen to a pc is a pretty easy job. I am working on a jukebox that I wanted to a screen attached to. Although a HD44780 based LCD can be attached to the parallel port with almost no additional parts I wanted a more flexible solution, and I thought about microcontrollers with usb support. I found a thread <a href="http://forums.bit-tech.net/showthread.php?t=115461" target="_blank">here</a>, where all the work is pretty much done. Thank you ch424. All credits for the design and firmware should go to him. I am simply documenting here my build. You can find on the thread mentioned everything you need &#8211; firmware, drivers, schematics, programmer configuration. By the way I used the Easy Pic 5 from Mikroelektronika to program my PIC and do some initial testing. The settings for Picflash were similar with the ones ch424 shows for his Winpic.  If you are having trouble programming with Picflash from mikroe drop a comment and I&#8217;ll try to help you.</p>
<h2>The project</h2>
<p>The design is based around a <strong>PIC18F2550 </strong>from Microchip. You will also need an LCD screen, one that is up to 20&#215;4 and HD44780 or KS0066U compliant. The design can also accommodate some GPOs, a rotary encoder and a buzzer. I plan to add the rotary encoder soon.</p>
<div id="attachment_150" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7769_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-150" title="img_7769_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7769_cnv-300x200.jpg" alt="Just the screen" width="300" height="200" /></a><p class="wp-caption-text">Just the screen</p></div>
<p>The screen all up and running.</p>
<div id="attachment_153" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7767_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-153" title="img_7767_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7767_cnv-300x200.jpg" alt="Soldering the connector for the LCD screen" width="300" height="200" /></a><p class="wp-caption-text">Soldering the connector for the LCD screen</p></div>
<p>I soldered a female connector to the LCD board so I can connect the screen both to my Easy Pic 5 development board and the USB backpack.</p>
<div id="attachment_156" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7775_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-156" title="img_7775_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7775_cnv-300x200.jpg" alt="All done and working" width="300" height="200" /></a><p class="wp-caption-text">All done and working</p></div>
<div id="attachment_152" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7777_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-152" title="img_7777_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7777_cnv-300x200.jpg" alt="img_7777_cnv" width="300" height="200" /></a><p class="wp-caption-text">All done and working</p></div>
<p>For now I tested the screen with <a href="http://lcdsmartie.sourceforge.net/">Lcdsmartie </a>but later on I plan to use it with lcdproc on linux.</p>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7779_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-149" title="img_7779_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7779_cnv-300x200.jpg" alt="The custom made board" width="300" height="200" /></a><p class="wp-caption-text">The custom made board</p></div>
<div id="attachment_154" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7785_cnv.jpg" rel="lightbox[146]"><img class="size-medium wp-image-154" title="img_7785_cnv" src="http://www.sgvulcan.com/wp-content/uploads/2009/05/img_7785_cnv-300x200.jpg" alt="The board, closer" width="300" height="200" /></a><p class="wp-caption-text">The board, closer</p></div>
<p>Should the thread or the board disappear just drop a comment and I can mirror the .hex file, the schematic and the pcb layout.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin: 5px;padding: 0px;"><p> </p>
<div align="center">
<script type="text/javascript"><!--
google_ad_client = "pub-7825242150714747";
/* Dupa articol 468x60, created 8/19/09 */
google_ad_slot = "8916341192";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://www.sgvulcan.com/4x20-lcd-screen-with-usb-interface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

