 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Ned Feb 08, 2009 11:59 am Naslov sporočila: Izpis na LCD |
|
|
Pozdrav
Imam:
-Bascom AVR
-Mega8
-LCD 1 x 16
Ko pa hočem napisati text, pa ga ispiše samo polovico (8 znakov).
Probal sem obe varianti v nastavitvah Config Lcd = 16 * 1 in Config Lcd = 16 * 1a,
Config Lcdbus = 4.
Ko pa s trimerjem nastavljam vidnost karakterjev pa so vidni vsi karakterji.
Kje ali kaj bi bilo narobe?
LP,marko
Pa še to: Kje je kakšen aktiven SLO forum o avtomobilih?
_________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Ned Feb 08, 2009 1:25 pm Naslov sporočila: |
|
|
Ti imaš LCD ki je fizično 1x16 on pa se počuti kot 2x8. Poizkusi uporabiti ukaz lowerline in nadaljuj z besedilom. Ali pa samo napiši locate 2 , 1 pa ti bo pisal tudi na naslednjo polovico.
Za Avtomobilizem si že slišal?
_________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
Profesor Einstein Član


Pridružen-a: Ned 24 Sep 2006 0:13 Prispevkov: 1437 Aktiv.: 6.30 Kraj: Rogaška Sl.
|
Objavljeno: Ned Feb 08, 2009 4:26 pm Naslov sporočila: |
|
|
Zdravo
Shema za priključitev LCD 2*16 znakov je v priponki. Kontrast spreminjaš tako da spreminjaš potencial na nožici 3 med 0 in +5V. Sedaj nisem povsem prepričan kdaj se bolje vidi če greš s potencialom proti 0 ali proti +5V. Ugotoviti je možno da je vpliv trimerja na kontrast le v ozkem območju se pravi mala sprememba na trimerju zelo spremeni kontrast. Jaz običajno pomerim zgornji in spodnji nivo tega potenciala v odvisnosti od željenega kontrasta in dodam ustrezne predupore serijsko s trimerjem tako da z vrtenjem trimerja v obe skrajni legi dosežem vrednost pomerjenih potencialov. Na ta način se kontrast spreminja od max na min oz obratno ko vrtimo trimer iz ene skrajne lege v drugo.
Lp.
Darko
Opis: |
|
Velikost datoteke: |
19.34 KB |
Pogledana: |
7743 krat |

|
_________________ --
"Če bi volitve kaj pomagale, bi jih prepovedali." (Mark Twain) |
|
Nazaj na vrh |
|
 |
galex4 Član

Pridružen-a: Tor 01 Apr 2008 18:27 Prispevkov: 459 Aktiv.: 2.19
|
Objavljeno: Tor Maj 19, 2009 5:47 pm Naslov sporočila: |
|
|
Imam sledečo vprašanje, in sicer gre za izpis na LCD, ko uporabim PIC16F84A gre vse lepo prikazati na zaslon. Ko pa uporabim drugi čip PIC16F876A potem pa mi noče prikazat. LCD imam korektno povezano po shemi kot je prikazano v helpu.
Programiram v mikroBASIC.
Uporabljena koda:
program lcd_test
dim text as char[10] 'definiran text z dolžino 10 črk
text1 as char[10] 'defiiran text1 z dolžino 10 črk
INTCON = 0
TRISB = 0 'inicializacija portaB
Lcd_Init(PORTB) 'inicializacija LCD-ja po defoltu
Lcd_Cmd(Lcd_CURSOR_OFF) 'izklop curzorja
text = "mikroEle" 'text beseda ni celotna zaradi izpisa na zaslonu
text1 = "ktronika" 'drugi del besede
'********************GLAVNI PROGRAM************************************
main:
Lcd_Cmd(LCD_CLEAR)
delay_ms (1000)
Lcd_Out(1, 1, text) 'izpis črk na zaslonu 1,1,text pomeni 1 vrstica, 1 stolpec in text
delay_ms (1000)
Lcd_Out(2, 1, text1) '2 vrstica, 1 stolpec in text1
delay_ms (1000) 'tak zapis je zaradi tega, ker prvi prikaže pol besede na levi polovici LCD-ja
'drugi pa prikaže drugo polovico na desni strani LCD-ja
goto main 'na levo in desno stran 1x16 LCD-ja gre največ 8 znakov
end.
Ali moram kaj pri tem drugem čipu upoštevat npr. izklopit komparator, prekinitve ali kaj podobno?
|
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Tor Maj 19, 2009 5:56 pm Naslov sporočila: |
|
|
Sicer ne poznam PICev in mikroBasica, vendar če ti z f84 stvar dela, potem je HW pravilno zvezan, SW pa tudi pravilno prilagojen za ta uC. Zakaj ti na drugem ne dela pa poglej v datasheet kje je razlika. Mogoče je kateri od pinov, ki jih imaš priklopljene na LCD tipa open collector (HW del za I2C) je že en takih pri drugih uC; in potrebuješ vmes pull-up upor. Malce poglej kako so nastavljeni pini (GPIO); Vzemi datasheet in poglej vsak pin, kateri ti pelje na LCD kako je konfiguriran ob resetu (se pravi če ga ti ne konfiguriraš drugače) kaj potrebuje za delovanje itd...Kaj pa sama frekvenca oscilatorja? Kako imaš tam konfigurirano? Če uC [slovenščina je zame španska vas] na drugačni frekvenci (kak interni oscilator) in imaš zakasnitve za LCD preračunane na nižjo frekveco, potem imaš prekratke zakasnitve, kar pa povzroča kup težav z LCDjem.
LP G
_________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
galex4 Član

Pridružen-a: Tor 01 Apr 2008 18:27 Prispevkov: 459 Aktiv.: 2.19
|
Objavljeno: Tor Maj 19, 2009 6:21 pm Naslov sporočila: |
|
|
Kaže da je res nekaj na PORTB-ju. Ker sem trenutno preveril kako je z PORTC-jem in na tem portu deluje prav.
|
|
Nazaj na vrh |
|
 |
Samo87 Član


Pridružen-a: Pet 25 Jan 2008 2:14 Prispevkov: 462 Aktiv.: 2.18 Kraj: Kamnik
|
Objavljeno: Sre Dec 30, 2009 2:11 pm Naslov sporočila: |
|
|
Pozdravljeni!
Sem začetnik v C-ju. Uporabljam AVR Studio 4.18 in WinAVR-20090313. Problem imam pri izpisu spremenljivke tipa double (in tudi float) na LCD. Namesto željene številke mi vedno izpiše "?". Program je sledeč:
Koda: |
#include <avr\io.h>
#include <stdio.h>
#include "lcd.h"
int main(void)
{
lcdInit();
LCDcls();
LCDcursorOFF();
char msg[16];
sprintf(msg,"%f", 12.34);
LCDputs(msg);
while (1);
return 0;
}
|
V čem bi bil lahko problem?
|
|
Nazaj na vrh |
|
 |
Samo87 Član


Pridružen-a: Pet 25 Jan 2008 2:14 Prispevkov: 462 Aktiv.: 2.18 Kraj: Kamnik
|
Objavljeno: Čet Dec 31, 2009 8:07 pm Naslov sporočila: |
|
|
Prosim, prosim, prosim ... za pomoč!
|
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.05 Kraj: Divača (Kačiče)
|
Objavljeno: Čet Dec 31, 2009 8:13 pm Naslov sporočila: |
|
|
Se misliš na silvestrovo ukvarjat z AVR-ji?
Jaz tudi.
Tako na prvi pogled je vse v redu. Ne vidim napake. Je pa res, da ne delam s tem tipom prevajalnika kot ti.
|
|
Nazaj na vrh |
|
 |
Samo87 Član


Pridružen-a: Pet 25 Jan 2008 2:14 Prispevkov: 462 Aktiv.: 2.18 Kraj: Kamnik
|
Objavljeno: Čet Dec 31, 2009 9:52 pm Naslov sporočila: |
|
|
No ja, za danes je dovolj AVR-jev, jutri pa spet naprej
Saj o tem problemu sem že govoril z Jvolk-om, pa tudi nisva mogla rešiti problema, zato mi je svetoval, naj vprašam na forumu. Če se ne motim ima on enak problem.
Saj razmišljam, da bi kak drugi prevajalnik preizkusil, ker me tukaj tudi timerji iz tira mečejo saj mi nič ne deluje, čeprav prevede brez napak...
Kateri prevajalnik pa ti uporabljaš?
|
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.05 Kraj: Divača (Kačiče)
|
Objavljeno: Čet Dec 31, 2009 10:15 pm Naslov sporočila: |
|
|
Samo87 je napisal/a: |
Kateri prevajalnik pa ti uporabljaš? |
CodeVisionAvr . No tudi s tem so problemi. Ima namreč nekaj piškotov, ki jih drugi nimajo in je potem problem ko hočeš narediti kaj kar je standardno.
|
|
Nazaj na vrh |
|
 |
Samo87 Član


Pridružen-a: Pet 25 Jan 2008 2:14 Prispevkov: 462 Aktiv.: 2.18 Kraj: Kamnik
|
Objavljeno: Pet Jan 01, 2010 5:04 am Naslov sporočila: |
|
|
Pa to sem že ničkolikokrat razmišljal... kako da ni v uporabi le en standardni prevajalnik, za katerega bi bilo potem seveda dovolj praktičnih primerov in vse literature, ne pa da se meša vse skupaj med sabo --> Pa saj to ni problem za izkušenejše, ki vejo kaj delajo, za začetnike, ki iščemo čim boljšo literaturo in uporabne, ter za uporabljene prevajalnike delujoče primere, pa je to razmeroma velik problem...
|
|
Nazaj na vrh |
|
 |
ticla Član


Pridružen-a: Sob 15 Dec 2007 22:52 Prispevkov: 440 Aktiv.: 2.06 Kraj: Župečja vas
|
Objavljeno: Pet Jan 01, 2010 12:34 pm Naslov sporočila: |
|
|
Poskusi s sprintf tako
Citiram: |
int spremenljivka=1234;
sprintf(lcd_buffer,"%u.%02u ", spremenljivka/100, spremenljivka%100); |
Sam trenutno delam izpis temperature na zaslon in imam narejeno tako
Citiram: |
sprintf(lcd_buffer,"T=%u.%02u °C ", temperatura/100, temperatura%100); |
Trenutna vrednost spremenljivke temperatura je 2061, na lcd pa mi izpiše T=20.61 °C
|
|
Nazaj na vrh |
|
 |
Samo87 Član


Pridružen-a: Pet 25 Jan 2008 2:14 Prispevkov: 462 Aktiv.: 2.18 Kraj: Kamnik
|
Objavljeno: Pet Jan 01, 2010 7:33 pm Naslov sporočila: |
|
|
Aha, to pa je varianta. Če imam double spremenljivko, jo samo še pomnožim z 10^n, kjer je n število željenih decimalnih mest, in jo pretvorim v int, to pa potem izpišem kot si predlagal. Hvala ticla!
Ampak vseeno, sprintf bi drugače morala delovati tudi z double in float, kajne?
|
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Sob Jan 02, 2010 7:23 pm Naslov sporočila: |
|
|
Hehe, ravno delam podobno stvar in sem naletel na isti problem : če hočeš izpisati float oz. double, se na character displayu pojavijo vprašaji.
Sem se hitro spomnil v čem je problem: če hočeš uporabljati float in printf s floati, moraš seveda vključiti kot prvo softversko knjižnico za delo s števili z plavajočo vejico, prav tako pa drugo verzijo printf.
Več si lahko prebereš tukaj
LP!
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|