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
[highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)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
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






Zitieren
), ein normales LCD gekauft. Ich dachte Adapter bauen ist ja kein Problem.


Lesezeichen