| Autor | Zpráva |
|---|
engr.waqas
Založen: 21. červenec 2009 Příspěvky: 7 Poloha: Karáčí
| 04. srpna 2009 8:39 Obr propojení s LCD problém? | | |
|
| I vzali dat do PIC řadiče z LM35 temp sensor.Now chci zobrazit čtení temp senzor na LCD. Mám převést, že hodnotu ASCII před odesláním na LCD, nebo je již v ASCII. Pokud jsem to převést na ASCII potom, jak se to dělá v C v MPLAB. |
|
| Zpět na začátek | |
 |
Google AdSense

| 04. srpna 2009 8:39 Reklamy | | |
|
|
|
|
| Zpět na začátek | |
 |
arthur0
Založen: 28. listopadu 2003 Příspěvky: 41 Pomohl: 2 Místo: Stockholm, Švédsko
| 04. srpna 2009 9:59 Re: Fotografie propojení s LCD problém? | | |
|
| Nazdar, Nejen že budete muset převést vaše "data" do ASCII, ale také budete muset převést že "data" na stupně, protože data budete mluvit se jen číselná reprezentace (za předpokladu, že jste použití PIC to ADC) z napětí na výstupu z vašich teplotní čidlo. Vzhledem k tomu, že jste neřekl nic o to, co právě děláte, budu předpokládat, že se vám skutečně vzorek tohoto napětí pravidelně a kvantifikaci vzorků (číselně vyjádřit jim) pomocí ADC. To vám dává informaci o tom, jak velké toto napětí je ve srovnání s ADC referenčního napětí (to, co jste si vybrali, že to je). Vzorovaný s absolutní hodnotu tohoto napětí, pak přes-to s odkazem na list, který vám číselná hodnota reprezentující teplotu ve stupních Celsia. (Myslím, že se list zmiňuje 10mV / ø C, takže, pokud vaše napětí, řekněme 230mV, teplota je 230/10 = 23 ø C.) To je nyní jen číslo, ne textový nebo ASCII nebo cokoliv. Chcete-li převést je na text, můžete buď využít | Kód: | | sprintf (receiving_text_buffer, "% d", numeric_temp) | nebo si udělat vlastní algoritmus, který zapletení své číslo do svých číslic (pomocí kombinace opakované dělení a modul s / 10, například) a pak přidejte ASCII hodnota znaku'0 'pro každý z nich získat jejich ekvivalentní ASCII hodnot. Doufám, že tento smysl k vám ...
Arthur |
|
| Zpět na začátek | |
 |
engr.waqas
Založen: 21. červenec 2009 Příspěvky: 7 Poloha: Karáčí
| 04. srpna 2009 10:59 Re: Fotografie propojení s LCD problém? | | |
|
| Díky moc drahý Vlastně jsem udělal, že "míra konverze volbu" a prohlásil, ale nyní je problém je v tom, že mám právo dostat hodnotu na LCD pro temp 0 to9 ale i jako set temp v čidlo na 10 nebo jiných 2 digit dostanu : 10 ; Pro 11, <12 = 13 pro > 14 ? pro 15 a znovu 0: 16 1 za 17 a tak dále tj. Nedostávám corrrect indikaci na LCD pro 2 číselný hodnoty. MY C kódování v MPLAB je # include <P18f452.h> # define idata PORTD # define rs PORTBbits.RB0 # define rw PORTBbits.RB1 # define en PORTBbits.RB2 void lcdcmd (unsigned char); void MSDelay (unsigned int); void main (void) ( int lbyte, hbyte, bin; unsigned char x, y, z;
/ / A to D
TRISD = 0; TRISAbits.TRISA0 = 1; TRISAbits.TRISA2 = 1; ADCON0 = 0x81, / / fosc/64, kanálu 0, A \ D je na ADCON1 = 0xC5; / / právo oprávněné, fosc/64, AN0 = analog, AN3 = vref while (1) ( MSDelay (1), / / A D dát čas na ukázku ADCON0bits.GO = 1, / / start konvertujícího while (ADCON0bits.DONE == 1) / / čekání na EOC lbyte = ADRESL; / / save nízké byte hbyte = ADRESH; / / uložit vysoké byte lbyte>> = 2; lbyte & = 0x3F; hbyte <<= 6; hbyte & = 0xC0; bin = lbyte | hbyte;
/ / zobrazení na LCD TRISD = 0; TRISB = 0; cs = 0; MSDelay (1); lcdcmd (0x38); MSDelay (1); lcdcmd (0x0E); MSDelay (1); lcdcmd (0x01); MSDelay (1); lcdcmd (0x06); MSDelay (1); lcdcmd (0x86); MSDelay (1); / / nyní zobrazí x = bin & 0x0F; / / maska horní 4 bity y = x | 0x30, / / je ASCII PORTD = y; rs = 1; rw = 0; cs = 1; MSDelay (1); cs = 0; y = bin & 0xF0; / / maska dolní 4 bity y = y>> 4, / / posun je na spodní 4 bity MSDelay (50); PORTD = y | 0x30, / / aby se ascii
) ) void lcdcmd (unsigned char) hodnoty, ( idata = hodnota; rs = 0; rw = 0; cs = 1; MSDelay (1); cs = 0; )
void MSDelay (unsigned int itime) ( unsigned int i; unsigned char j; for (i = 0; i <itime, i ) u (j = 0; j <135; j ); ) |
|
| Zpět na začátek | |
 |
arthur0
Založen: 28. listopadu 2003 Příspěvky: 41 Pomohl: 2 Místo: Stockholm, Švédsko
| 04. srpna 2009 11:24 Re: Fotografie propojení s LCD problém? | | |
|
| Jste si dávejte pozor na to, co jsem psal výše: je potřeba rozdělit vaše čísla do jejich číslic! Například, číslo 15 si budete chtít za 1, 5. Za 2 číslice čísla, můžete to udělat takhle: | Kód: | digit0 počet% = 10; / * Krok 1: digit0 = 5 * / digit1 = číslo / 10, / * Krok 2: digit1 = 1 * / |
Pokud máte více čísel, můžete nahradit * 2 * krok s | Citace: | | číslo = počet / 10 | a opakujte krok * 1 * na výše uvedený kód pokud je to nutné. (Všimněte si, že vám číslic v opačném pořadí!) Doufám, že je to hned jasnější.
Arthur |
|
| Zpět na začátek | |
 |
engr.waqas
Založen: 21. červenec 2009 Příspěvky: 7 Poloha: Karáčí
| 04. srpna 2009 11:47 Re: Fotografie propojení s LCD problém? | | |
|
| Myslím, že spliting část a přeměnou části bude v této části kódování Bin obsahuje data z temp senzor. x = bin & 0x0F; / / maska horní 4 bity y = x | 0x30, / / je ASCII a displeje PORTD = y; rs = 1; rw = 0; cs = 1; MSDelay (1); cs = 0; y = bin & 0xF0; / / maska dolní 4 bity y = y>> 4, / / posun je na spodní 4 bity MSDelay (50); PORTD = y | 0x30, / / je ascii a displeje |
|
| Zpět na začátek | |
 |
vipul
Založen: 04. července 2008 Příspěvky: 15 Pomohl: 1 Poloha: Ahemdabad, Indie
| 04. srpna 2009 12:40 Fotografie propojení s LCD problém? | | |
|
| Jak napsal Arthur dříve musíte převést výsledek ADC v "Titul" formulář vytisknout na LCD ...
Ve výše uvedených programů a jsou přímo tisk 'bin' proměnná, která je sloučit důsledku nižší a vyšší bitů ADC registry ...
-Vipul |
|
| Zpět na začátek | |
 |
arthur0
Založen: 28. listopadu 2003 Příspěvky: 41 Pomohl: 2 Místo: Stockholm, Švédsko
| 04. srpna 2009 13:40 Re: Fotografie propojení s LCD problém? | | |
|
| | Citace: | | Myslím, že spliting část a přeměnou části bude v této části kódování | Ne! Co děláte v té části kódu je jen trochu maskovat, ve kterém jste izolát symbolu v šestnáctkové číslování systém (0h - Fh, což odpovídá 0 až 15 v desítkové soustavy). A znakem je, podle definice, což je číslo od 0 do 9 v desetinné číslování systému.
Bál jsem se to by vařit do diskuse týkající se slova "binární", "hex", "desetinné", "number", "ASCII" apod., protože jejich významy jsou nejlépe vysvětlit ve škole a chápat přes [tvrdé] práci . Neexistuje dobrá náhrada za to. Umím dobře psát kód pro vás, ale my oba ztratit: mne cenný čas a vy místě se všemi z toho! Takže dovolte mi ukázat, že na vás ještě jednou místo (na dobu maximálně 3-místné číslo, řekněme 137): | Kód: | char d0, d1, d2; d2 = bin 10%; / * d2 <- 7 * / d1 = (bin / 10)% 10; / * d1 <- 3 * / d0 = ((bin / 10) / 10)% 10; / * d0 <- 1 * / / * Takhle pokračovat ještě více znaků * /
/ * Převést číslici (čísla) do ASCII (textových znaků) * / d0 ='0 '; / * stejné jako d0 = d0 '0' stejné jako d0 = d0 | 0x30 * / d1 ='0 '; d2 ='0 ';
/ * Poslat ASCII znaků do portu * / / * ... * / | Dalo by se to udělat hezčí, můžete to udělat trochu efektivněji, ale pro vás pochopit, jsem chtěl ukázat všechny malé kroky, které jste vynechal a také o tom, jak se číslice mohou být extrahovány rekurzivně, ale to je váš úkol.
Tak to bude dělat konverzi pro tebe, ale jsem přesvědčen, že parapet není to, co uvidíte, je teplota, protože není nic ve svém programu, který podobný a "volt na míru" konverzí, pokud jste si vybrali takové napětí, že odkaz Váš ADC skutečně udělat pro vás.
Arthur |
|
| Zpět na začátek | |
 |