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

Download Edip1.zip

weiter...