Doppelnutzung der LCD Pins (Bascom)

Fragen oder Tipps & Tricks über Software

Moderatoren: Tim Sasdrich, Sebi

Doppelnutzung der LCD Pins (Bascom)

Beitragvon dussel07 » 25.10.2012, 23:27

Habe vor ein paar Tagen ein Arduino gegen ein Minimexle Board getauscht.
Das Minimexle ist ein kleines, gelungenes Board welches mit einem Atmega88 bestückt ist.

Hier mal der Schaltplan
MiniMexleSchematic_verkleinert.jpg



Auf dem Board sind:
ein Schallwandler
Lichtsensor
NTC
eine LED
Resettaster
zwei ADC Anschlüsse für das messen von Gleich- und Wechselstrom
zwei PWM Ausgänge
I2C Erweiterungsstecker (RS232)
Spannungsregler
Erweiterungswannenstecker mit sämtlichen Pins des Atmega88 (Ausnahme XTAL2)
ISP Wanne (leider nicht die standart Pinbelegung)
16x2 LCD
und vier Taster an den Datenleitungen zum LCD

Die Taster ziehen die Pins über 4,7K Widerstände auf Gnd. Ich vermute das die 4,7k Widerstände ein zerstören der Ports im Kurzschlußfall verhindern - drücken des Tasters während das Programm die Pins durch LCD Ausgabe grad auf High gelegt hat. Rechnung:
5V / 4,7KOhm = ca. 1mA

Fazit:
Ein kompacktes Board mit dem man sofort loslegen kann - ein Programmer (AVR-USB-PROGGI) gehört beim Kauf dazu.
Die Erweiterbarkeit ist durch einen 40poligen Wannenstecker und ein I2C Stecker einfach zu bewerkstelligen.
Nachteile des Boards:
Die feste Pinbelegung des LCD belegt 4 ADC Kanäle -
ISP Schnittstelle ist kein Standart (kann man aber durch ein Adapterkabel verändern) -
Die Pins B.6 und B.7 sind nicht frei belegbar da ein Quarz fest angeschlssen ist -
Die MExleWikiseite ist nicht erreichbar - schade!


Hier nun ein kurzes Bascomprogramm welches die Pins des LCD auch als Eingänge nutzt
Spoiler: show
Code: Alles auswählen
$regfile = "m88def.dat"
$crystal = 18432000

Dim A As Byte
Dim B As Word
B = 0
Config Portb.2 = Output
Led Alias Portb.2

Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portd.7 , Rs = Portd.4
Config Lcd = 16x2
Cursor Off
Cls

Do
   Toggle Led                                               ' die LED wird alle Sekunde getoggelt
   Gosub Lcd_anzeige2
   For A = 0 To 100                                         'Zählschleife für Tasterabfrage und dauer der Anzeige: Taster1
      If Pinc.0 = 0 Then
         Gosub Lcd_anzeige
      End If
      Waitms 10
      B = B + 1
      If B > 400 Then                                       ' wenn B größer als 400 (4sek) ist lösche Anzeige: Taster1
         Gosub Lcd_clear
      End If
   Next A
Loop

End


Lcd_anzeige:
B = 0
Config Portc.0 = Output                                     'kurz Pin C.0 als Ausgang setzen damit die LCDausgabe funktioniert
Locate 2 , 1
Lcd "Taster 1"
Config Pinc.0 = Input                                       'und wieder als Eingang definieren
Pinc.0 = 1                                                  'Pullup einschalten
Return

Lcd_anzeige2:
Config Portc.0 = Output
Locate 1 , 1
Lcd "erster Test  "
Lcd B
If B < 100 Then
   Lcd "  "
End If
Config Pinc.0 = Input
Pinc.0 = 1
Return

Lcd_clear:
B = 0                                                       'zurücksetzen der Variable B damit die Anzeige "Taster1" 4sek zu sehen ist
Config Portc.0 = Output
Locate 2 , 1
Lcd "        "
Config Pinc.0 = Input
Pinc.0 = 1
Waitms 10
Return
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1627
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Doppelnutzung der LCD Pins (Bascom)

Beitragvon topas » 26.10.2012, 19:04

Kompaktes Board!
Ich benutze dieses:AVR-Board
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Doppelnutzung der LCD Pins (Bascom)

Beitragvon topas » 27.10.2012, 23:52

Die Idee die LCD-Pins auch als Eingänge zu nutzen ist nicht neu. (Wenn mich nicht alles täuscht, hatte PIC-Basic den LCD- (allerdings 8-Bit) Port gleichzeitig auch als Keypad-4x4-Matrix-Port benutzt) (vor > 10 Jahren!). Hatte es irgendwie vergessen - danke für die (Wieder)Erinnerung. Datenausgabe ist natürlich auch möglich solange die LCD-Steuerleitungen nicht angesprochen werden. Dies wird unweigerlich Folgen für meinen Basic-Controller haben. :D Ports sind ja eh immer knapp. :D
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47

Re: Doppelnutzung der LCD Pins (Bascom)

Beitragvon dussel07 » 28.10.2012, 00:21

Hier schreibt der Meister der Zerspanungsbude zum Thema - -
Allerdings fehlt ein Programmbeispuel in Bascom oder C.
Ja, - ich bin Zwilling
Benutzeravatar
dussel07
 
Beiträge: 1627
Registriert: 30.04.2009, 21:04
Wohnort: Goslar

Re: Doppelnutzung der LCD Pins (Bascom)

Beitragvon topas » 28.10.2012, 00:53

Danke für den Hinweis.
Allerdings fehlt ein Programmbeispuel in Bascom oder C.

Für mich (der ich in Mikrobasic programmiere und so was gewöhnt bin) verschmerzbar. :D
Ausserdem programmiere ich meistens so, dass allgemein gültige Bibliotheken entstehen. (Auch wenn das oft mit mehr Speicherplatzverbrauch einher geht). Die meisten Programmbeispiele sind nicht so.
topas
 
Beiträge: 3796
Registriert: 16.08.2010, 12:47


Zurück zu Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste