LCD kijelzömre nem ír ki karaktareket
LCD kijelzömre nem ír ki karaktareket
Üdvözlet.Kezdő vagyok.60nap Arduino tanfolyam anyaga teljesen megvan.
Kérdésem?Arduino UNO R3 alaplapom van,AVR.-Duino_Ext1 kiegészítő panel ,ezen van az LCD kijelző amit együtt vettem itt a
WebShop-ba.
Az Arduino tanfolyam gyakorló LCD kezelése témakörből másoltam be a programot,(17 számú lecke)és nem ír ki karaktereket,a kijelzőn..Az amit tesz :világit,program bevitelkor villan egyet,és semmi több.
Beviteli sketch program Arduino 1.0.5-r2
Köszönöm a segítséget.
imericus
Kérdésem?Arduino UNO R3 alaplapom van,AVR.-Duino_Ext1 kiegészítő panel ,ezen van az LCD kijelző amit együtt vettem itt a
WebShop-ba.
Az Arduino tanfolyam gyakorló LCD kezelése témakörből másoltam be a programot,(17 számú lecke)és nem ír ki karaktereket,a kijelzőn..Az amit tesz :világit,program bevitelkor villan egyet,és semmi több.
Beviteli sketch program Arduino 1.0.5-r2
Köszönöm a segítséget.
imericus
Re: LCD kijelzömre nem ír ki karaktareket
Az LCD kontrasztot beállítottad? Az LCD alatti potméter majdnem teljesen szélső állásba rakandó.
http://www.tavir.hu - a gazda
Re: LCD kijelzömre nem ír ki karaktareket
Köszönöm a segítő akarást.De a LCD panelon nincsen potméter.Az ami van az alatta lévő EXT1 panelon van az is trimer
potméter.Ő állítására nem reagál semmi.
LCD panel típusa.QAPASS 1602A
Köszönöm
imericus.
potméter.Ő állítására nem reagál semmi.
LCD panel típusa.QAPASS 1602A
Köszönöm
imericus.
Re: LCD kijelzömre nem ír ki karaktareket
Elég nehéz messziről segíteni. Leginkább a leállt az autóm, mit tegyek, hogy elinduljon kérdésre hasonlít. Egy LCD beüzemelése mindig macera,
- legyen háttér világítás
- érintkezzenek a drótok
- a megfelelő LIB-et töltsd le a netről, mert LCD és LCD között is vannak különbségek
- a jó drótot jó helyre kössed
...
- legyen háttér világítás
- érintkezzenek a drótok
- a megfelelő LIB-et töltsd le a netről, mert LCD és LCD között is vannak különbségek
- a jó drótot jó helyre kössed
...
-
- Újonc
- Hozzászólások: 1
- Csatlakozott: 2017. február 14. kedd, 15:29
Re: LCD kijelzömre nem ír ki karaktareket
Szia!imericus írta:Üdvözlet.Kezdő vagyok.60nap Arduino tanfolyam anyaga teljesen megvan.
Kérdésem?Arduino UNO R3 alaplapom van,AVR.-Duino_Ext1 kiegészítő panel ,ezen van az LCD kijelző amit együtt vettem itt a
WebShop-ba.
Az Arduino tanfolyam gyakorló LCD kezelése témakörből másoltam be a programot,(17 számú lecke)és nem ír ki karaktereket,a kijelzőn..Az amit tesz :világit,program bevitelkor villan egyet,és semmi több.
Beviteli sketch program Arduino 1.0.5-r2
Köszönöm a segítséget.
imericus
Én is ugyanebbe a problémába futottam bele, annyi volt a megoldás, hogy feltöltés után stéthúztam az lcd panelt és az Ext1 panelt, majd újra össze, és működik.
Re: LCD kijelzömre nem ír ki karaktareket
Hello!
Én egy atmega128A fejlesztő boardot szeretnék összekötni egy hd44780 típusú kijelzővel, amin egy pcf8574 I2C illesztő van. Az i2c master library-t használom és arra sikerült eddig rájönnöm, hogy írásnál van a probléma (konkrétan ennél a sornál akad meg a program "while(!(TWCR & (1<<TWINT)));" ergo nincs kommunikáció) . Tettem be felhúzó ellenállásokat az I2C és a kijelző is jó. Jó ideje nem tudok rájönni mi lehet a probléma. Előre is köszönöm a segítséget.
Üdv:
Kushin
Én egy atmega128A fejlesztő boardot szeretnék összekötni egy hd44780 típusú kijelzővel, amin egy pcf8574 I2C illesztő van. Az i2c master library-t használom és arra sikerült eddig rájönnöm, hogy írásnál van a probléma (konkrétan ennél a sornál akad meg a program "while(!(TWCR & (1<<TWINT)));" ergo nincs kommunikáció) . Tettem be felhúzó ellenállásokat az I2C és a kijelző is jó. Jó ideje nem tudok rájönni mi lehet a probléma. Előre is köszönöm a segítséget.
Üdv:
Kushin
Re: LCD kijelzömre nem ír ki karaktareket
I2Cdetect / I2Cscannet látja a modult? Milyen címen?
Milyen nyelv, és mi a kód? És mia kapcsolásod?
Milyen nyelv, és mi a kód? És mia kapcsolásod?
http://www.tavir.hu - a gazda
Re: LCD kijelzömre nem ír ki karaktareket
#define SCL_CLOCK 400000L // I2C sebessege Hz-ben
#define I2C_READ 1 // adatiranyt jelzo bit - olvasas
#define I2C_WRITE 0 // adatiranyt jelzo bit - iras
#define F_CPU 16000000UL
#define lcd 0x27 // lcd I2C cime
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <util/delay.h>
#include <compat/twi.h>
// DEBUG LED
int led(void)
{
DDRA=0xFF;
while(1)
{
PORTA=0xFF;
for(int i=0;i<=5;i++)_delay_ms(500);
PORTA=0x00;
for(int i=0;i<=5;i++)_delay_ms(500);
}
}
/*************************************************************************
I2C periferia inicializalasa
*************************************************************************/
void i2c_init(void)
{
TWSR = 0;
TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
TWCR |= (1<<TWIE);
TWCR |= (1<<TWEA);
}
/*************************************************************************
Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
Fuggv. altal visszadott ertek: 0 = eszkoz elerheto, 1= eszkoz elerese sikertelen
*************************************************************************/
unsigned char i2c_start(unsigned char address)
{
uint8_t twst;
// START jel kuldese
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
// eszkozazonosito cim kuldese
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik es az ACK/NACK nyugtazas be nem erkezik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;
return 0;
}
/*************************************************************************
Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Ha az eszkoz foglalt, varakozas amig kesz nem lesz (ack polling)
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
*************************************************************************/
void i2c_start_wait(unsigned char address)
{
uint8_t twst;
while ( 1 )
{
// START jel kuldese
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_START) && (twst != TW_REP_START)) continue;
// eszkozazonosito cim kuldese
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst == TW_MT_SLA_NACK )||(twst ==TW_MR_DATA_NACK) )
{
// az eszkoz foglalt, Stop jel kuldese, irasi muvelet befejezese
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
// varakozas amig a Stop utasitas vegre nem hajtodik es az I2C busz szabad nem lesz
while(TWCR & (1<<TWSTO));
continue;
}
//if( twst != TW_MT_SLA_ACK) return 1;
break;
}
}
/*************************************************************************
Ismetelt Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
Fuggv. altal visszadott ertek: 0 = eszkoz elerheto, 1= eszkoz elerese sikertelen
*************************************************************************/
unsigned char i2c_rep_start(unsigned char address)
{
return i2c_start( address );
}
/*************************************************************************
Stopjel kuldese, kommunikacio lezarasa ,I2C bus szabadda tetele
*************************************************************************/
void i2c_stop(void)
{
// STOP jel kuldese
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
// varakozas amig a Stop utasitas vegre nem hajtodik es az I2C busz szabad nem lesz
while(TWCR & (1<<TWSTO));
}
/*************************************************************************
Egy bajt kuldese az I2C eszkozre
Fuggv. parameter: byte to be transfered
Fuggv. altal visszaadott ertek: 0 iras sikeres, 1 iras sikertelen
*************************************************************************/
unsigned char i2c_write( unsigned char data )
{
uint8_t twst;
// adat irasa a korabban megcimzett eszkozbe
TWDR = data;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
led();
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if( twst != TW_MT_DATA_ACK) return 1;
return 0;
}
/*************************************************************************
Egy bajt kiolvasasa az I2C eszkozbol, tovabbi adatok kerese
Fuggv. altal visszaadott ertek: az I2C eszkozbol kiolvasott bajt
*************************************************************************/
unsigned char i2c_readAck(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}
/*************************************************************************
Egy bajt kiolvasasa az I2C eszkozbol, a kiolvasast Stop bit koveti
Fuggv. altal visszaadott ertek: az I2C eszkozbol kiolvasott bajt
*************************************************************************/
unsigned char i2c_readNak(void)
{
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}
int main(void)
{
i2c_init(); // I2C inicializalasa
i2c_start_wait(lcd+I2C_WRITE); // lcd I2C cim es adatirany (iras)
i2c_write(0x02); //Reset+kurzor a képernyő elejére
_delay_ms(100);
_delay_ms(100); //kurzor mozgatás
i2c_write(0x85);
i2c_stop();
return 0;
}
#define I2C_READ 1 // adatiranyt jelzo bit - olvasas
#define I2C_WRITE 0 // adatiranyt jelzo bit - iras
#define F_CPU 16000000UL
#define lcd 0x27 // lcd I2C cime
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <util/delay.h>
#include <compat/twi.h>
// DEBUG LED
int led(void)
{
DDRA=0xFF;
while(1)
{
PORTA=0xFF;
for(int i=0;i<=5;i++)_delay_ms(500);
PORTA=0x00;
for(int i=0;i<=5;i++)_delay_ms(500);
}
}
/*************************************************************************
I2C periferia inicializalasa
*************************************************************************/
void i2c_init(void)
{
TWSR = 0;
TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
TWCR |= (1<<TWIE);
TWCR |= (1<<TWEA);
}
/*************************************************************************
Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
Fuggv. altal visszadott ertek: 0 = eszkoz elerheto, 1= eszkoz elerese sikertelen
*************************************************************************/
unsigned char i2c_start(unsigned char address)
{
uint8_t twst;
// START jel kuldese
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
// eszkozazonosito cim kuldese
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik es az ACK/NACK nyugtazas be nem erkezik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;
return 0;
}
/*************************************************************************
Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Ha az eszkoz foglalt, varakozas amig kesz nem lesz (ack polling)
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
*************************************************************************/
void i2c_start_wait(unsigned char address)
{
uint8_t twst;
while ( 1 )
{
// START jel kuldese
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst != TW_START) && (twst != TW_REP_START)) continue;
// eszkozazonosito cim kuldese
TWDR = address;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if ( (twst == TW_MT_SLA_NACK )||(twst ==TW_MR_DATA_NACK) )
{
// az eszkoz foglalt, Stop jel kuldese, irasi muvelet befejezese
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
// varakozas amig a Stop utasitas vegre nem hajtodik es az I2C busz szabad nem lesz
while(TWCR & (1<<TWSTO));
continue;
}
//if( twst != TW_MT_SLA_ACK) return 1;
break;
}
}
/*************************************************************************
Ismetelt Startjel kiadasa, majd az eszkozazonosito cim es adatirany elkuldese
Fuggv. parameter: I2C eszkozazonosito cim, adatirany
Fuggv. altal visszadott ertek: 0 = eszkoz elerheto, 1= eszkoz elerese sikertelen
*************************************************************************/
unsigned char i2c_rep_start(unsigned char address)
{
return i2c_start( address );
}
/*************************************************************************
Stopjel kuldese, kommunikacio lezarasa ,I2C bus szabadda tetele
*************************************************************************/
void i2c_stop(void)
{
// STOP jel kuldese
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
// varakozas amig a Stop utasitas vegre nem hajtodik es az I2C busz szabad nem lesz
while(TWCR & (1<<TWSTO));
}
/*************************************************************************
Egy bajt kuldese az I2C eszkozre
Fuggv. parameter: byte to be transfered
Fuggv. altal visszaadott ertek: 0 iras sikeres, 1 iras sikertelen
*************************************************************************/
unsigned char i2c_write( unsigned char data )
{
uint8_t twst;
// adat irasa a korabban megcimzett eszkozbe
TWDR = data;
TWCR = (1<<TWINT) | (1<<TWEN);
// varakozas amig az atvitel be nem fejezodik
while(!(TWCR & (1<<TWINT)));
led();
// TWI Statusz Register ertekenek ellenorzese, elooszto bitek kimaszkolasa.
twst = TW_STATUS & 0xF8;
if( twst != TW_MT_DATA_ACK) return 1;
return 0;
}
/*************************************************************************
Egy bajt kiolvasasa az I2C eszkozbol, tovabbi adatok kerese
Fuggv. altal visszaadott ertek: az I2C eszkozbol kiolvasott bajt
*************************************************************************/
unsigned char i2c_readAck(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}
/*************************************************************************
Egy bajt kiolvasasa az I2C eszkozbol, a kiolvasast Stop bit koveti
Fuggv. altal visszaadott ertek: az I2C eszkozbol kiolvasott bajt
*************************************************************************/
unsigned char i2c_readNak(void)
{
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
return TWDR;
}
int main(void)
{
i2c_init(); // I2C inicializalasa
i2c_start_wait(lcd+I2C_WRITE); // lcd I2C cim es adatirany (iras)
i2c_write(0x02); //Reset+kurzor a képernyő elejére
_delay_ms(100);
_delay_ms(100); //kurzor mozgatás
i2c_write(0x85);
i2c_stop();
return 0;
}
Re: LCD kijelzömre nem ír ki karaktareket
A 0x27 cím nem jó.
0x20...0x27 vagy 0x30....0x37 lehet a címe....
0x20...0x27 vagy 0x30....0x37 lehet a címe....
http://www.tavir.hu - a gazda
Re: LCD kijelzömre nem ír ki karaktareket
Mivel tudnám kideríteni, akkor a helyes címet, mert nekem a scan 0x27es címen látja. Többször is megnéztem.
Re: LCD kijelzömre nem ír ki karaktareket
Sziasztok! Hasonló probléma. Nekem 0x3F-et ad a scan
Akkor az is felejtős?
Akkor az is felejtős?
Re: LCD kijelzömre nem ír ki karaktareket
A bővítő chip megszólalási címe ez.
A NewCrystalLcd paraméterezésében ez az eszközcím....
A NewCrystalLcd paraméterezésében ez az eszközcím....
http://www.tavir.hu - a gazda
-
- Újonc
- Hozzászólások: 4
- Csatlakozott: 2020. május 22. péntek, 13:44
Re: LCD kijelzömre nem ír ki karaktareket
Sziasztok!
Kezdő arduinos vagyok, és pár napja vettem egy 2x16 karakteres LCD-t ezt.:
https://shop.tavir.hu/product_info.php/ ... -1602-p-47
Egy Arduino Nano-val próbálom életre lehelni, de mindeddig sikertelenül.
Bekötöttem a tanfolyamos útmutató alapján, háttérfény van, de karaktereket nem írt ki.
Némi kutakodás után, elindultam a kályhától.
Először csak a tápfeszt kapcsoltam a 15 16 lábra, egy 1k ellenállással.
Megjött a háttérvilágítás.
Aztán jött a kontraszt potméter bekötése, két széle a +5, GND közepe pedig a kijelző 3. pinjére.
De hiába tekergetem itt már nem jelenik meg semmi egyik szélső állásban sem.
Próbálkozzak még valamivel, vagy lehetséges, hogy rossz eleve a kijelző?
Itt egy kép a bekötésekről.
https://drive.google.com/file/d/1hkwSbn ... sp=sharing
Kezdő arduinos vagyok, és pár napja vettem egy 2x16 karakteres LCD-t ezt.:
https://shop.tavir.hu/product_info.php/ ... -1602-p-47
Egy Arduino Nano-val próbálom életre lehelni, de mindeddig sikertelenül.
Bekötöttem a tanfolyamos útmutató alapján, háttérfény van, de karaktereket nem írt ki.
Némi kutakodás után, elindultam a kályhától.
Először csak a tápfeszt kapcsoltam a 15 16 lábra, egy 1k ellenállással.
Megjött a háttérvilágítás.
Aztán jött a kontraszt potméter bekötése, két széle a +5, GND közepe pedig a kijelző 3. pinjére.
De hiába tekergetem itt már nem jelenik meg semmi egyik szélső állásban sem.
Próbálkozzak még valamivel, vagy lehetséges, hogy rossz eleve a kijelző?
Itt egy kép a bekötésekről.
https://drive.google.com/file/d/1hkwSbn ... sp=sharing
Re: LCD kijelzömre nem ír ki karaktareket
Az 1/2 lábon is kellene a GND + tápfesz. A 15/16 láb csak a háttérvilágításé, az 1/2 az a logikai áramkör tápfeszültsége.
http://www.tavir.hu - a gazda
-
- Újonc
- Hozzászólások: 4
- Csatlakozott: 2020. május 22. péntek, 13:44
Re: LCD kijelzömre nem ír ki karaktareket
Bekötöttem mostmár oda is.
De még mindig nincs kép.
Elméletileg ha tekergetem a potit akkor látnom kellene egy sornyi négyzetet nem?
De még mindig nincs kép.
Elméletileg ha tekergetem a potit akkor látnom kellene egy sornyi négyzetet nem?