Hier werden (falls Notwendig) in unregelmässigen Abständen [highlight=yellow:09ca723bda]Tipps[/highlight:09ca723bda] veröffentlicht
[highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
Appbrd-Demo1.bas
Code:
'ApplicationBoard 1
'Protobed ATmega16-32
'
'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen
'=================================================================
' CPU konfigurieren
$regfile = "m32def.dat"
$crystal = 16000000 ' Quarzfrequenz
' I2C konfigurieren
Config Scl = Portc.0 ' Ports fuer IIC-Bus
Config Sda = Portc.1
' Konstanten definieren
Const Appbrd_adr = &H42 ' Adresse des PCF8574 A0 auf ON
Const Appbrd_adr2 = &H43 ' Adresse des PCF8574 A0 auf ON
Const Text1 = "Applicat.Board 1"
' LCD konfigurieren
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
' Variablen deklarieren
Dim M As Byte
Dim N As Byte
Dim X As Byte
I2cinit ' I2C - BUS initialisoeren
Initlcd ' LCD initialisieren
Display Off ' LCD Anzeige ausschalten
Cls ' LCD löschen
Cursor Off Noblink ' Schalte den Cursor aus
Display On ' LCD Anzeige einschalten
I2csend Appbrd_adr , 0 ' den PCF8574 auf 0 stellen (alle LED aus)
' Variablen initialisieren
M = 0
N = 0
X = 0
Locate 1 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd Text1 ' Ausgabe von Text1 auf LCD
Locate 2 , 1 ' Cursor auf 2. Zeile, 1. Spalte setzten
Lcd "Demonstration" ' Ausgabe von "Demonstration" auf LCD
Wait 3 ' kurze Pause
Einsprung:
M = 0
N = 0
X = 0
Cls ' Anzeige löschen
Wait 1
Locate 1 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Achte auf ......"
Locate 2 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd " die LED's"
Wait 1
Do
For N = 0 To 7
M = 2 ^ N
I2csend Appbrd_adr , M ' den PCF8574 Daten senden
Waitms 100 ' kurze Zeit zum gucken ;-)
Next N
X = X + 1 ' Zähler erhöhen
Loop Until X >= 10 ' solange wieder holen bis die Bedingung erfüllt ist
I2csend Appbrd_adr , 0 ' den PCF8574 auf 0 stellen (alle Ports aus)
Cls ' Anzeige löschen
Wait 1
Locate 1 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Noch einmal ? "
Locate 2 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "JA NEIN"
I2csend Appbrd_adr , &B10000001 ' den PCF8574 stellen 1. und letzter Port
Do
I2creceive Appbrd_adr2 , N ' Beachte es können nur Ports abgefragt werden
If N = 128 Then ' welche einen HI Pegel haben
Exit Do ' Der PCF meldet aber die Summe der aktiven Bits
End If ' Werte der Bits beachten
Locate 2 , 6
Lcd "["
Lcd N
Lcd "] "
Loop Until N = 1
I2csend Appbrd_adr , 0 ' den PCF8574 stellen alle Ports aus
If N = 128 Then Goto Einsprung
Cls
Locate 1 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Jetzt Tasten "
Locate 2 , 1 ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "druecken ["
M = &B11111111 ' Binäre Darstellung alle Ports auf HI
' ' Hexadezimal ginge es so M = &HFF
' ' und selbtverfreilich auch in dezimal M = 255
I2csend Appbrd_adr , M ' den PCF8574 Daten senden (alle Ports an)
Do
I2creceive Appbrd_adr2 , N
Locate 2 , 11
Lcd N
Lcd "] "
Waitms 10
Loop
End 'end program
[highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
Appbrd-Demo2.bas
Code:
'ApplicationBoard 1
'Protobed ATmega16-32
'
'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen
'=================================================================
' CPU konfigurieren
$regfile = "m32def.dat"
$crystal = 16000000 ' Quarzfrequenz
' I2C konfigurieren
Config Scl = Portc.0 ' Ports fuer IIC-Bus
Config Sda = Portc.1
' LCD konfigurieren
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
' Prozeduren deklarieren
Declare Sub Prog1
Declare Sub Prog2
Declare Sub Prog3
Declare Sub Prog4
Declare Sub Prog0
Declare Sub Flash(byval Z As Byte)
' Konstanten definieren
Const Appbrd_w_adr = &H42 ' Adresse des PCF8574 zum schreiben (ADR - A0 auf ON)
Const Appbrd_r_adr = &H43 ' Adresse des PCF8574 zum lesen (ADR - A0 auf ON)
' I2C initialisieren
I2cinit ' I2C - BUS initialisoeren
' Slave initialisieren
I2csend Appbrd_w_adr , &B00000000 ' den PCF8574 auf 00000000
' LCD initialisieren
Initlcd ' LCD initialisieren
Display Off ' LCD Anzeige ausschalten
Cls ' LCD löschen
Cursor Off Noblink ' Schalte den Cursor aus
Display On ' LCD Anzeige einschalten
' Variablen deklarieren
Dim M As Byte
Dim N As Byte
Dim X As Byte
' Hauptprogramm
Do
Locate 1 , 1
Lcd "Programm waehlen"
Locate 2 , 1
Lcd "1 2 3 4 ENDE"
I2csend Appbrd_w_adr , &B10001111 ' Eingabemaskierung
' (Anzeige am Board Seitenverkehrt)
Do
I2creceive Appbrd_r_adr , N ' solange wiederholen bis
Loop Until N <> &B10001111 ' ein selektierter Port geändert wird
I2csend Appbrd_w_adr , &B00000000 ' den PCF8574 auf 00000000
Select Case N
Case &B10001110 : Prog1
Case &B10001101 : Prog2
Case &B10001011 : Prog3
Case &B10000111 : Prog4
Case &B00001111 : Prog0
Case Else : Call Flash(20)
End Select
Loop
Cls
Locate 1 , 1
Lcd N
Locate 2 , 1
Lcd "Ende"
End 'end program
' +++ +++ +++ +++ +++
' +++ +++ +++ +++ +++
Sub Prog1
Cls
Locate 1 , 1
Lcd "Programm 1"
Locate 2 , 1
Lcd "wurde gewaehlt"
Waitms 500
Call Flash(3)
Wait 1
End Sub
' +++ +++ +++ +++ +++
Sub Prog2
Cls
Locate 1 , 1
Lcd "Programm 2"
Locate 2 , 1
Lcd "wurde gewaehlt"
Waitms 500
Call Flash(3)
Wait 1
End Sub
' +++ +++ +++ +++ +++
Sub Prog3
Cls
Locate 1 , 1
Lcd "Programm 3"
Locate 2 , 1
Lcd "wurde gewaehlt"
Waitms 500
Call Flash(3)
Wait 1
End Sub
' +++ +++ +++ +++ +++
Sub Prog4
Cls
Locate 1 , 1
Lcd "Programm 4"
Locate 2 , 1
Lcd "wurde gewaehlt"
Waitms 500
Call Flash(3)
Wait 1
End Sub
' +++ +++ +++ +++ +++
Sub Prog0
Cls
Locate 1 , 1
Lcd "Programm ENDE"
Locate 2 , 1
Lcd "wurde gewaehlt"
Wait 2
Call Flash(10)
Cls
End
End Sub
' +++ +++ +++ +++ +++
Sub Flash(byval Z As Byte) ' Ein Lichterspiel von definierbarer Anzahl
For X = 1 To Z
I2csend Appbrd_w_adr , &HFF ' 11111111
Waitms 50
I2csend Appbrd_w_adr , &H00 ' 00000000
Waitms 150
Next X
End Sub
End
Lesezeichen