<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=1403&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-08-12T14:02:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1403&amp;mode</id>
<entry>
<author><name><![CDATA[yanan]]></name></author>
<updated>2012-08-12T14:02:52+01:00</updated>
<published>2012-08-12T14:02:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1403&amp;p=12449#p12449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1403&amp;p=12449#p12449"/>
<title type="html"><![CDATA[Wyświetlacz LED i DS18B20 źle wyświetla temperature]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1403&amp;p=12449#p12449"><![CDATA[
Witam<br /><br />Podłączyłem wyświetlacz LED (wspólna katoda) poprzez układy 74HC595. Pierwszy steruje aktywnością wyświetlacza, drugi zaś segmentami konkretnego wyświetlacza. Przełączenie oraz wyświetlenie na konkretnej pozycji opiera się na przerwaniu od transmisji SPI (SPI_STC_vect). Problem pojawia się, gdy chcę wyświetlić aktualną temperaturę z DS18B20. Podczas próby wyświetlania temp. cyfry na wyświetlaczu pojawiają się chyba losowo i nie wiem jak sobie z tym poradzić. <br /><br />Powiedzmy, że chce wyświetlić liczbę 123. <br />Legenda: _ - zgaszony segment<br />To na wyświetlaczu pokazuje się np. _124_ potem  __2_  <br /><br /><br />P.S. Zamieszczam kod - proszę zwrócić uwagę na funkcję wyświetlenia liczby - możliwe jest napisanie tego jakoś wydajniej?<br />[syntax=c]struct ISR_Status {<br />uint8_t no: 4;<br />uint8_t byte: 1;<br />};<br /><br />static uint8_t DIGITS[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0X6D, 0x7D, 0x07, 0x7F, 0x6F}; // dla wspólnej katody<br />uint8_t LEDDIGITS[4];<br /><br />void ledInt(uint16_t liczba);[/code]<br /><br /><br />[code]void ledInt(uint16_t liczba){<br /><br />if (liczba &lt; 10){<br />LEDDIGITS[0]=PUSTY;<br />LEDDIGITS[1]=PUSTY;<br />LEDDIGITS[2]=PUSTY;<br />LEDDIGITS[3]=(liczba %10);<br />}<br /><br />else if (liczba &lt;= 99){<br />LEDDIGITS[0]=PUSTY;<br />LEDDIGITS[1]=PUSTY;<br />LEDDIGITS[2]=((liczba%100)/10);<br />LEDDIGITS[3]=(liczba %10);<br />}<br />else if (liczba &lt;= 999){<br />LEDDIGITS[0]=PUSTY;<br />LEDDIGITS[1]=(liczba%1000)/100 ;<br />LEDDIGITS[2]=((liczba%100)/10);<br />LEDDIGITS[3]=(liczba %10);<br />}<br />else {<br />LEDDIGITS[0]=liczba/1000 ;<br />LEDDIGITS[1]=(liczba%1000)/100 ;<br />LEDDIGITS[2]=(liczba%100)/10;<br />LEDDIGITS[3]=(liczba %10);<br />}<br />}<br />[/syntax]  <br /><br /><br /><br />1. Pierwszy problem rozwiązany.<br />2. Nie wiem jak zminimalizować funkcję wyświetlania zmiennych na wyświetlaczu LED<br /><br />P.S. Co do listingu to we wcześniejszym temacie też wprowadzę wymagane zmiany.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=492">yanan</a> — 12 sie 2012, o 14:02</p><hr />
]]></content>
</entry>
</feed>