Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Kirjoitus LCD-näyttöön

NuMiNi [24.04.2006 08:34:57]

#

Eli ongelma on, että jotkut merkit näkyvät himmeinä LCD-näytössä. Kyseessä Winstar 2x16 LCD-näyttö. Kytkentä tehty datasheetin mukaisesti, Tietomyrskyltä tilattavaan EXB2313-koekytkentäalustaan.

Mikropiirinä on Atmel AT902313 ja piiri ohjelmoitu C-kielellä. Lähdekoodi on seuraavanlainen:

/*****************************************************
Tämä ohjelman runko on luotu käyttämällä CodeWizardAVR-
generaattoria.

Project    : Internetliikenteen nopeusnäyttö
Version    : 0.5beta
Date       : 11.4.2006
Company    :                     .
Made By    :       .  .
Group      :               *  .
Cracked By : NuMiNi               .   |
                                  | *
                                *  . .
 ______________________________   |
|. . . . |  L&M                |  .
|_.__._._|_____________________|



Chip type           : AT90S2313
Clock frequency     : 8,000000 MHz
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 32
*****************************************************/

#include <90s2313.h>
#include <delay.h>
#include <string.h>
#include <lcd.h>
#include <stdio.h>
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm


unsigned char puskuri[33];              //Määritellään puskuri kooltaan 33 merkkiä
unsigned char testi;
unsigned char i;
void main(void)
{

// IO-porttien alustukset
// Port B alustus
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0xFF;
DDRB=0xFF;

// Port D alustus
// Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=1 State5=P State4=P State3=P State2=P State1=T State0=T
PORTD=0x7C;
DDRD=0x40;

// Ajastin/laskuri 0 alustus
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 alustus
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;

// External Interrupt(s) alustus
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) alustus
TIMSK=0x00;

// UART alustus
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: PÄÄLLÄ
// UART Transmitter: POIS
// UART Baud rate: 9600
UCR=0x10;
UBRR=0x33;

// Analog Comparator alustus
// Analog Comparator: POIS
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// LCD module initialization
lcd_init(16);                               //LCD-modulin alustus
{
delay_ms(500);
lcd_gotoxy(0,0);
lcd_putsf("--Nopeusnaytto--");              //Tervetuloa-tekstit!
lcd_gotoxy(0,1);
lcd_putsf("   Versio 0.9   ");
delay_ms(3000);

}
while (1)
 {
      {
      gets(puskuri,32);                 //Odotetaan sarjaliikenteestä puskuriin 32 merkkiä
      delay_ms(200);
      }

      {
      delay_ms(200);
      lcd_gotoxy(0,0);
      lcd_puts(puskuri);
      delay_ms(200);
      };

  }
}

Eli mikähän tässä mättää?

Jyri [24.04.2006 15:08:31]

#

Öööö... siis LCD-näyttö näyttää (jotkin)merkit himmeinä? Onko himmeä merkki aina sama merkki, löytyykö himmentymistä jotain säännönmukaisuutta yms. yms.? Itse väittäisin vian olevan näytössä, sillä käsittääkseni merkkien kirkkauteen ei voi koodilla vaikuttaa. Tai siis, ainakaan kun joskus Perlillä tein vastaavaa, niin ei voinut ;)

tejeez [24.04.2006 15:22:43]

#

LCD-näytössä on ehkä se kontrastisäätö. Eti jostain joku kytkentä miten se pitää kytkeä että sitä voi säätää ja kokeile auttaako sen säätö.

Mun näytössä (muistaakseni 16x2 sekin, vai olikohan se 20x2) se ainaki oli muistaakseni pin 3. Varmaan siitä joku potikka johonkin, mut en osaa sanoa tarkemmin. Kai se kytkentä jostain löytyy :p

NuMiNi [24.04.2006 16:06:24]

#

Kontrastin säätö siinä jo on. Ei vaikuta asiaan.

Se vaihtelee aina tekstin mukaan että mitkä merkit on himmeitä. Yleensä ekat merkit rivin alussa on himmeitä... ja esim. 4 näkyy niin että tuota pystyviivaa ei näy ollenkaan.

Ja joskus toimii lähes moitteetta...

tejeez [24.04.2006 16:25:59]

#

Ootko varma, että oot kytkeny oikein?
Entä näytön käyttöjännite, onko se tarpeeksi ja pysyykö se riittävänä varmasti? Siinäkin ehkä vois olla ongelma, mutta en kyl tiiä. En usko, että se koodissa ainakaan ois. Ehkä näyttö on vaan rikki ;)

Jyri [26.04.2006 10:04:00]

#

Voit tietysti tarkistaa nuo jännitteet, jos ne heittelee, niin tasaa niitä.

Mutta en usko, että vika on koodissa, sillä se edellyttäisi juuri koodillista kontrastin säätöä yms.

Vika voi olla kytkennöissä. Voit myös koittaa heilutella kytkettyjä johtoja, jos heiluttelu vaikuttaa näytön näyttämiin merkkeihin, niin jokin kytkentä ei aina ota kiinni, eli saattaa olla kylmä-kolvaus...

NanoSoft [04.05.2006 22:57:55]

#

ei tullu sit mieleen poistaa tota Cracked by tekstiä kun joku joka on oikein vittumaisella tuulella saattaa ilmoittaa siitä...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta