Jak sprawdzic wyświetlacz 3310 ?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
robson
Użytkownik
Posty: 226
Rejestracja: 22 sty 2006, 19:51
Lokalizacja: S.M.
Kontakt:

Post autor: robson » 02 lip 2010, 15:02

Hm...
To przynajmniej dobrym tropem szedem :P W Bascomie za mocny nie jestem :( Jak wygląda u Ciebie procedura "Call Lcd_out(&H05)" Musze sobie to przełożyć na C :)

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 02 lip 2010, 16:21

To znaczy tylko w swojej procedurze wyślij tą dodatkowa komendę (&h05) podczas inicjacji wyświetlacza i tyle. U mnie ta procedura to po prostu programowy SPI.

Kod: Zaznacz cały

'Ta procedura to właściwie nic innego jak programowy SPI.
Sub Lcd_out(byval Dane As Byte)
   Local I As Byte
   Reset Lcd_clk           ' zero na CLK
   For I = 1 To 8
      Lcd_data = Dane.7    'wystaw Bit 7 Na Port
      Set Lcd_clk          'ustaw CLK
      Waitus Lcd_speed     'odczekaj, LCD_speed to stała określająca czas miedzy zboczem narastającym a opadającym sygnału CLK.
      Reset Lcd_clk        'zeruj CLK
      Shift Dane , Left , 1       'przesun dane o 1 w lewo
   Next I
   Reset Lcd_clk           'tu musi być rst lini CLK.
End Sub
Ostatnio zmieniony 02 lip 2010, 16:48 przez kayron, łącznie zmieniany 1 raz.

Awatar użytkownika
robson
Użytkownik
Posty: 226
Rejestracja: 22 sty 2006, 19:51
Lokalizacja: S.M.
Kontakt:

Post autor: robson » 02 lip 2010, 16:38

Nie wiem, czy idziemy tym samym tokiem rozumowania, ale o odnajdywanie drogi tutaj chodzi, więc próbujmy dalej :) :

Moje procedura inicjalizacji:

Kod: Zaznacz cały

// Inicjacja LCD
void lcd_Init(void)
{
	// Zerowanie. Według dokumentacji wystarczy 100ns. Na wszelki wypadek    niewielkie opóźnienie. 
	PORT(LCD_PORT) &= ~(1<<LCD_RES); 
	asm volatile("nop\n\t nop\n\t"::);
	PORT(LCD_PORT) |= 1<<LCD_RES; 
	// Wysyłanie sekwencji startowej
	lcd_Command(LCDC_FS|LCDC_FS_EXTENDED); // Komendy rozszerzone
	lcd_Command(LCDC_VOP|72); // Kontrast
	lcd_Command(LCDC_TEMP|2); // Korekcja temperaturowa
	lcd_Command(LCDC_BIAS|3); // Tryb multipleksowania
	lcd_Command(LCDC_FS|LCDC_FS_BASIC|LCDC_FS_HORADDR); // Komendy standardowe, tryb adresowania
	lcd_Command(LCDC_DC|LCDC_DC_NORMAL); // Włączenie trybu normalnego
	lcd_GoTo(0,0);
}
Już po niej samej wyświetlacz powinien wyświetlić jakieś przypadkowe wartości z pamięci, bo nie przeprowadzam jeszcze czyszczenia. Oczywiście je wyświetla, ale zaraz znikają. Nie wywołuje jeszcze żadnej funkcji, która wysyła na LCD przez programowe SPI cokolwiek. Mam samą inicjalizaję i podobno powinno to dać jakiś statyczny obraz czegokolwiek :) Przy sprzętowym SPI sprawa wygląda identycznie - ten sam problem. Próbowałem zmieniać sposób multipleksowania, ale nic to nie dało :\ Może wizja wyrzucenia go do śmietnika zmusi go do działania :]

Mam nadzieje, że nie zakręciłem za bardzo.

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 02 lip 2010, 16:51

Na C to akurat słabo się znam więc ciężko mi będzie doradzić jak to wstawić. Musisz sam pokombinować, albo doczytać w kursie jak to działa.
Prawie na pewno jest to brak tej jednej dodatkowej komendy. Ja też miałem różne dziwi z wyświetlaczem. Natomiast nie jest powiedziane że cokolwiek się wyświetl, bo matrycę można programowo wyłączać, wtedy będzie pusta. Może to być jakiś błąd w programie, nie ta wartość czy coś.

Tom27
-
Posty: 62
Rejestracja: 28 sie 2005, 12:07

Post autor: Tom27 » 07 lip 2010, 8:23

Witaj kayron.
Napisałeś, że programujesz w Bascomie, więc mam do Ciebie prośbę czy możesz wysłać mi, na priv jakikolwiek kod źródłowy na Atmega8 i LCD 3310 w Bascom. Szukałem w sieci czegokolwiek, ale nie znalazłem nic pewnego. W prawdzie jest coś, ale pod Atmega128, w którym trzeba parę linijek zmienić itp. Ja potrzebuję sprawdzonego działającego kodu, który wyeliminuje mi możliwość błędu programowania i pozwoli sprawdzić poprawność schematu. Dlaczego proszę o źródłowy? Ponieważ chciałbym, kiedy już mi się uda coś wyświetlić na LCD pozmieniać coś i zrozumieć, co i jak. Oczywiście kod może być jakikolwiek było by super gdyby był prosty.
Pozdrawiam
Tomek

Awatar użytkownika
kayron
Użytkownik
Posty: 2079
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 07 lip 2010, 19:43

Proszę, nie pamiętam co wyświetli, chyba znaki, ale powinien działać. A i zmień sobie na początku definicje procesora na M8. A tak przy okazji to macie tu od razu polskie znaki, a tablica ASCII jest modyfikacja tej z wyświetlacza alfanumerycznego opartego na układzie HD, Europa środkowa więc i Rosyjski tam jest. Pierwotnie było to szykowane na elektroniczny notatnik (ściągę) na N3310 i z kartą MMC. Ale nigdy tego nie skończyłem.
PS. Usunąłem kod bo był za długi, ale nie wiem czemu nie chce mi się wysłać załącznik :?: :sad:

ODPOWIEDZ