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

Pridružen-a: Pet 16 Avg 2013 23:07 Prispevkov: 53 Aktiv.: 0.37
|
Objavljeno: Ned Sep 07, 2014 2:11 pm Naslov sporočila: Prikaz stevca na LCD preko ATMEGA32 |
|
|
LP
Nekaj časa se že učim programiranje C++ za atmega32 AVR. Ali mi mogoče lahko pomagate kako prenesti vrednost nekega integerja v izpis na LCD,
Primer:
while (bit_is_clear(PINA,0));// Pogoj za štetje na tipki ali senzorju
stevec1++;// Povečaj števec1 za 1.
init_lcd();// vključimo LCD
lcd_cmd(0x80);// Določim naslov prikaza
lcd_send_string("stevec1:");// Izpis vrednosti integerja
lcd_cmd(0xC0);
Nikakor ne morem razvozlati kako naj prenesem neko vrednost v ta LCD zapis:
Če recimo :
while (bit_is_clear(PINA,0));// Pogoj za štetje na tipki ali senzorju
a++;// Povečaj števec1 za 1.
bo on štel integer a 1 in naprej ne potem pa bi recimo rad, da mi prikaže to vrednost v zapisu na LCD
recimo:
init_lcd();// vključimo LCD
lcd_cmd(0x80);// Določim naslov prikaza
lcd_send_string("količina: a");// Izpis vrednosti integerja
lcd_cmd(0xC0);
zelo se vam zahvaljujem za pomoč pri tej uganki. |
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2105 Aktiv.: 8.86 Kraj: Ljubljana
|
Objavljeno: Ned Sep 07, 2014 2:39 pm Naslov sporočila: |
|
|
Ena možnost bi bila z itoa(); pretvoriš int spremenljivko v ASCII string, ki ga nato izpišeš na LCD. |
|
Nazaj na vrh |
|
 |
Jaka57 Moderator



Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5824 Aktiv.: 24.52 Kraj: Grosuplje
|
Objavljeno: Ned Sep 07, 2014 3:04 pm Naslov sporočila: |
|
|
Kot je napisal @int47, spremenljivko stevec1 je potrebno spremeniti v string, da ti bo to spremenljivko izpisalo. Sedaj ti na LCDju napiše stevec1:.
Če bi prilepil knjižnjico za LCD, v kateri so funkcije lcd_send_string(), init_lcd(), lcd_cmd(),....., bi bilo veliko lažje. _________________ Lp, Jaka |
|
Nazaj na vrh |
|
 |
pogorevc Član

Pridružen-a: Pet 16 Avg 2013 23:07 Prispevkov: 53 Aktiv.: 0.37
|
Objavljeno: Ned Sep 07, 2014 4:42 pm Naslov sporočila: |
|
|
LP
Prilagam knjižnico za LCD:
//Function for sending commands to LCD
void lcd_cmd(unsigned char command){
//Put command on the Data Bus
PORTC = command;
//Enable LCD for command writing
PORTD = 0b10000000;
//Allow delay for LCD to read the databus
_delay_ms(2);
//Disable LCD again
PORTD = 0b00000000;
//Allow some more delay
_delay_ms(2);
}
//Function for sending Data to LCD
void lcd_data(unsigned char data){
//Put data on Data Bus
PORTC= data;
//Set R/S (Regiter Select) to High, and Enable to High
PORTD = 0b10100000;
//Allow for delay
_delay_ms(2);
//Disable LCD again
PORTD = 0b00100000;
//Allow for some more delay
_delay_ms(2);
}
//Function to send String to LCD
void lcd_send_string(char* string){
while(*string){
//Send value of pointer as data to LCD
lcd_data(*string);
//Increment string pointer
string++;
}
}
//Function to Initilise LCD by sending appropriate Commands
void init_lcd(){
//Setup both lines of LCD
lcd_cmd(0x38);
//Set Cursor off - Enable LCD
lcd_cmd(0x0E);
//Clear Screen
lcd_cmd(0x01);
//Goto first position
lcd_cmd(0x80);
}
init_lcd();
lcd_cmd(0x01);
lcd_cmd(0x80);// Določim naslov prikaza
lcd_send_string("Pozdravljeni!");// Izpiše LCD besedilo |
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 15.96
|
Objavljeno: Ned Sep 07, 2014 6:13 pm Naslov sporočila: |
|
|
To je vse? Saj skoraj vse manjka.
Funkcija mora vsebovati pretvorbo 16-bitne int vrednosti v 5 znakov.
Včasih bi bila blagodejna tudi izbira poravnave in število cifer za izpis da jo kličeš kot
int2lcd(vrednost, poravnava, cifre);
Ravno ta teden moram naprimer dodati desno poravnavo in izpis treh cifer (temperatura do 250"C) v Arduino UTFT knjižnico. Brez ničel ali podlage znakov spredaj. Prazna cifra samo pobriše cifro z ozadjem polja in kurzor prestavi.. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
Jaka57 Moderator



Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5824 Aktiv.: 24.52 Kraj: Grosuplje
|
Objavljeno: Ned Sep 07, 2014 7:20 pm Naslov sporočila: |
|
|
@pogorevc: za začetek naštudiraj tole, še pred tem pa preštudiraj npr. kakšno int vrednost ima znak 1 (ali katerikoli drugi ASCII znak).
Druga varianta pa je, da si potegneš dol Arduino knjižnjico za LCD in jo preštudiraš (lahko jo tudi uporabiš ). _________________ Lp, Jaka |
|
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: 9 dni
Powered by phpBB © 2001, 2005 phpBB Group
|