Witam
Przesyłam z PC do µC napis do wyświetlenia po RS. Jednak w programie wysyłającym muszę dać opóźnienie ok. 50ms pomiędzy wysyłanymi liniami (LCD 2x16), aby napis został poprawnie wyświetlony.
Czy można ten program jakoś poprawić?
µC chodzi na 4MHz.
Wysyłam to tak (C#):
Przesyłam z PC do µC napis do wyświetlenia po RS. Jednak w programie wysyłającym muszę dać opóźnienie ok. 50ms pomiędzy wysyłanymi liniami (LCD 2x16), aby napis został poprawnie wyświetlony.
Czy można ten program jakoś poprawić?
$regfile = "attiny2313.dat"
$baud = 4800
Cls : Cursor Off
On Urxc Odbierz
Dim Rs As String * 16 , Rs_zn As Byte , Y As Byte , Cd As Bit , Commode As Bit , Przerysuj_lcd As Byte
Y = 1 'pierwsza linia LCD
Portd.2 = 1 'pin podświetlenia w stanie wysokim
Ddrd.2 = 1 'jako wyjście
Enable Interrupts : Enable Urxc
Print "Gotowy..."
Do
If Commode = 1 Then 'tryb poleceń
Set Cd 'zmienna pomocnicza - sprawdza, czy któreś z poleceń zostało wykonane
Select Case Rs
Case "cls"
Cls
Case "disp on"
Display On
Case "disp off"
Display Off
Case "bl on" 'podświetlenie
Portd.2 = 0
Case "bl off"
Portd.2 = 1
Case "1" 'pierwsza linia wyśw.
Y = 1
Case "2" 'druga linia
Y = 2
Case Else 'żadne polecenie nie pasuje
Reset Cd
End Select
If Cd = 1 Then Rs = "" 'jeżeli wykonano polecenie wyczyść bufor
Else
If Przerysuj_lcd = 1 Then
Locate Y , 1
Lcd Rs
Rs = ""
Reset Przerysuj_lcd
End If
End If
Loop
End
Odbierz:
Rs_zn = Udr 'odczytaj znak
If Rs_zn > 31 Then
Rs = Rs + Chr(rs_zn) 'dodaj do bufora, jeżeli to litera
Else
If Rs_zn = 0 Then
Rs = "" 'wyczyść bufor
Set Commode 'wejdź w tryb poleceń
End If
If Rs_zn = 10 Then 'znak końca lini - koniec lini do wyśw. lub koniec polecenia
If Commode = 0 Then Set Przerysuj_lcd
Reset Commode
End If
End If
ReturnµC chodzi na 4MHz.
Wysyłam to tak (C#):
private void przerysuj_LCD()
{
System.Threading.Thread.Sleep(50);
serialPort1.WriteLine("\0" + (y+1));
serialPort1.WriteLine(disp[y]);
}