Start
Experimente
Grundlagen
Produkte
- eDIP240-7 -- Demo -- Bascom 1 -- Bascom 2 -- Bascom 3 -- Bascom 4
Neues
Impressum
|
eDIP 240-7 Bascom: Hello World
Eine Textausgabe
Das erste Programmbeispiel soll einfach nur einen
kurzen Text auf dem Display ausgeben. Dabei wird ein Datenpuffer mit
Kommandos und Daten über die Sub Write_edip in das Dislpay
übertragen. Die einzelnen Kommandos findet man im Datenblatt des
eDIP240-7. Man kann wahlweise über die serielle Schnittstelle oder
über den I2C-Bus (Adresse &HDC beim Schreiben bzw.
&HDD beim Lesen) mit dem Display kommunizieren. Hier wird der
I2C-Bus verwendet, um die serielle Schnittstelle des Mega644P für
andere Aufgaben frei zu halten. Der I2C-Bus liegt an den Leitungen B2
(SDA) und B3 (SCL).
Die entscheidende Basisroutine zur
Ansteuerung in Bascom ist die Sub Write_edip. Es wird jeweils
zuerst ein Byte 17 übertragen, Dann folgt die Anzahl der zu
übertragenen Bytes die in Buffer übergeben werden. Darauf
folgen die einzelnen Nutzbytes und schließlich die Prüfsumme
Bcc. Nach dem I2Cstop muss der Bus noch einmal in Leserichtung
geöffnet werden, um ein Acknowledge-Byte vom Display zu lesen. Man
könnte hier auswerten, ob die Übertragung erfolgreich war.
Das ist jedoch im Normalfall nicht nötig, sondern man kann davon
ausgehen, dass die Daten korrekt angekommen sind.
Hier werden
Beispiele für das Löschen des Displays (Kommando DL), die
Einstellung der Hintergrundbeleuchtung (YH) und die Auswahl des
Zeichensatzes (ZF) gezeigt. Das ZL-Kommando gibt einen Text an der
Stelle x,y aus. Jedes Kommando wird mit einem ESC-Byte (27) eingeleitet
und zusammen mit allen erforderlichen Parametern in den Textpuffer
Buffer geschrieben, Im Beispiel wird ein Text in die Mitte des Displays
geschrieben.
|
'-------------------------------------------------------------- ' eDIP240-7 ' ATMEGA644P, 11,0592 MHz ' I2C-Display ' edip1.bas '--------------------------------------------------------------
$regfile = "m644Pdef.dat" $crystal = 11059200 $hwstack = 64 $swstack = 64 $framesize = 64
Dim Dat As Byte Dim Sbuf As Byte Dim Rbuf As Byte Dim Bcc As Byte Dim C As String * 1 Dim N As Integer Dim Buffer As String * 24
Declare Sub Write_edip
Portb = 255 'Pullups
Config Sda = Portb.2 Config Scl = Portb.3
Const Slave = &HDC 'I2C write DC Const Slaverd = &HDD 'I2C read DD
I2cinit Buffer = Chr(27) + "YH" + Chr(80) '80% brightness Write_edip Buffer = Chr(27) + "DL" + Chr(13) 'clear Write_edip Buffer = Chr(27) + "ZF" + Chr(2) + Chr(13) '2 = FONT6x8 Write_edip Buffer = Chr(27) + "ZL" + Chr(100) + Chr(60) + "eDIP240-7" + Chr(13) Write_edip
Do Loop
'***************************** eDIP240-7 ************************
Sub Write_edip I2cstart I2cwbyte Slave Dat = 17 I2cwbyte Dat N = Len(buffer) Bcc = 17 + N I2cwbyte N For N = 1 To Len(buffer) C = Mid(buffer , N , 1) Dat = Asc(c) If Dat = 255 Then Dat = 1 I2cwbyte Dat 'Asc(c) Bcc = Bcc + Asc(c) Next N I2cwbyte Bcc I2cstop Waitms 1 N = 0 I2cstart I2cwbyte Slaverd I2crbyte Dat , Nack I2cstop N = N + 1 Waitms 1 End Sub
End
|