Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Atmega8 eeprom i2c.

Ficu
-
-
Posty:2
Rejestracja:5 mar 2007, o 21:12
Lokalizacja:Nowa Sól
Kontaktowanie:
Atmega8 eeprom i2c.

Postautor: Ficu » 3 paź 2007, o 22:40

Witam.
Mam problem z eeprom tzn. wszystko ładnie chodzi, ale jak wyświetlam tekst (lcd 2x16) to wyświetla mi tylko 11 znaków czyli nie całą jedną linijkę.
Jak zrobić, aby zapełniał się cały lcd tekstem (32 znaki), po 1 sekundzie czyścił lcd i wyświetlał następne 32 znaków.

Kod: Zaznacz cały

$regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Pinc.1 , Rs = Pinc.0 Config Sda = Portc.4 Config Scl = Portc.5 Declare Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte) Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte) Dim Addressw As Byte 'slave write address Dim Addressr As Byte 'slave read address Dim Wyraz As String * 10 Dim B1 As Byte , Adres As Byte , Value As Byte , T As Byte 'dim byte B1 = &HFF Value = &H55 Cls Lcd "Szukam urzadzen "; Lowerline Lcd "na szynie I2C "; For Addressw = 2 To 254 Step 2 I2cstart I2cwbyte Addressw I2cstop If Err = 0 Then Exit For Next Cls If Addressw < 255 Then Lcd "Adres &H" ; Hex(Addressw); Lowerline Lcd "odpowiedzial ACK"; Addressr = Addressw + 1 Wait 5 Else Lcd "Urzadzenia nie"; Lowerline Lcd "odpowiadaja :("; Stop End If B1 = &HFF Wyraz = "" T = 0 Do Call Read_eeprom(t , B1) If B1 = &HFF Or B1 = 0 Or T > 10 Then Exit Do Wyraz = Wyraz + Chr(b1) Incr T Loop Cls Lcd Wyraz; Stop 'Program wykonujący odczyt z pamięci EEPROM Sub Read_eeprom(byval Adres As Byte , Value As Byte) I2cstart I2cwbyte Addressw I2cwbyte Adres I2cstart I2cwbyte Addressr I2crbyte Value , Nack I2cstop End Sub
Korzystam z eeprom 24c04

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 4 paź 2007, o 17:38

z pobieznaj analizy widać że przecież w twoim programie jest tylko odczyt 10 znaków, potem po wyswietleniu tego tekstu kończy się program.
Inna sprawa że nie ma tu nigdzie wpisywania do eepromu, skąd wiesz co tam jest?

Ficu
-
-
Posty:2
Rejestracja:5 mar 2007, o 21:12
Lokalizacja:Nowa Sól
Kontaktowanie:

Postautor: Ficu » 5 paź 2007, o 13:49

Eeprom programuje programatorem przez komputer.
Udało mi się już wyświetlić więcej znaków ale tylko w 1 linii. Nie wiem jak zrobić żeby zapełniany był cały wyświetlacz potem czyszczony itd.

jacynka84
-
-
Posty:150
Rejestracja:17 maja 2006, o 22:50
Lokalizacja:Sulejówek

Postautor: jacynka84 » 2 lis 2007, o 10:30

Kod: Zaznacz cały

Dim Wyraz As String * 10
Jak nie zmienisz tego na tyle liter ile chcesz wyświetlić to nic się nie zmieni.
Powinno być np. String * 20 (jeśli chcesz w linijce widzieć 20 znaków i jeśli LCD ma tyle znaków w poziomie)
Kolega wcześniej ci powiedział przecież.

Możesz jeszcze pokombinować ze jeśli Wyraz się nie mieści w Linijce , np ma więcej liter niż LCD ma znaków w poziomie , to go "przecina" i daje resztę w niższej linii , albo przewija ekran w prawo.
Ale na to kodu nie znam.

RcTomek
-
-
Posty:357
Rejestracja:18 lip 2005, o 17:28
Lokalizacja:Głogów / Wrocław

Postautor: RcTomek » 2 lis 2007, o 11:15

Możesz jeszcze pokombinować ze jeśli Wyraz się nie mieści w Linijce , np ma więcej liter niż LCD ma znaków w poziomie , to go "przecina" i daje resztę w niższej linii , albo przewija ekran w prawo.
Ale na to kodu nie znam.
Pętla FOR...NEXT + polecenie SHIFTLCD LEFT/RIGHT = tekst przewijany.

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 25 gości