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ää?
Öööö... 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 ;)
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
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...
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 ;)
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...
ei tullu sit mieleen poistaa tota Cracked by tekstiä kun joku joka on oikein vittumaisella tuulella saattaa ilmoittaa siitä...
Aihe on jo aika vanha, joten et voi enää vastata siihen.