PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe beim Applikationsboard LCD



mago79
08.06.2004, 18:03
Hallo, sicherlich nervt es vereinzelt die profis das hin und wieder nervige simple fragen auftauchen. nun auch hinweise auf die suchoptionen sind wahrlich etwas überflüssig. ich suche einen der mir ein kleines programm schreiben kann. es geht hierbei nur darum das ich einmal verstehe wie man das 2x16 LCD Display ansteuern kann. klar sind beispielprogramme hier und da hilfreich,jedoch nicht immer. ich versuche über eine if anweisung einen sprung zu einer lcd ausgabe zu realisieren,aber ohne erfolg.auch beim versuch ein fertiges beispielprogramm umzubasteln führte mich mehr zu anderen erfolgen als zu dem was ich benötige. ich versuche eine lampencontrol zu realisieren,E-technisch kein thema jedoch das signal bei defekt soll eben am LCD display erscheinen. das AD Signal ist kleiner 10 welches am LCD DIsplay eben ausgeben soll "Lampe defekt" welches auch beim größer 10 eingang wieder vom LCD gelöscht werden soll.(CLEAR) bitte helft mir... wenn auch nur tips.

thx

mago


PS: noch ne andere frage, wenn der eingang unter 10 (von 255) ist dann ist doch die spannung kleiner.ich verwendete einen transistor der GND schaltet... und habe den IN stecker am Colektor nach einem Wiederstand geschalten.dieser wiederstand dann ist an der spannung. somit ist doch das signal IN immer zur masse oder? transistor C - E Strecke wird somit gemessen ?!?!?! müßte dann auch ca 200mV sein ~ <10 von 255 :-# :-#

Matthias
08.06.2004, 20:26
Das mit dem wiederstand kapier ich jetzt nicht so.

Ich könnte dir ein LCD-Proggi geben, das ist aber auf meine Norm gesetzt, deshalnb müsstest du die Ports angleichen, wär' das was?

Matthias
08.06.2004, 20:47
' ___ __ __
' | | | \ | | | | | \
' | | | | --- | | |--| |---
' |___ |___ |__/ \___/ | | | \

define a 97
define b 98
define c 99
define d 100
define e 101
define f 102
define g 103
define h 104
define i 105
define j 106
define k 107
define l 108
define m 109
define n 110
define o 111
define p 112
define q 113
define r 114
define s 115
define t 116
define u 117
define v 118
define w 119
define x 120
define y 121
define z 122
define lcd byteport[2]
define rw port[13]
define rs port[14]
define enable port[15]
define buffer byte
define parameter byte

define zahl word
define ziffer byte
define jahr byte
define tage byte

gosub initialisierung
pause 10

#sync
if year<97 then beep 150,50,0 else goto sync
beep 150,25,25

#loop
gosub lcd_out
goto loop

#lcd_out
parameter=1
gosub whichline
parameter=e-32
gosub writeletter
parameter=s
gosub writeletter
parameter=32
gosub writeletter
parameter=i
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=32
gosub writeletter
zahl=hour
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=58
gosub writeletter
zahl=minute
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=58
gosub writeletter
zahl=second
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
if day<>tage then goto date
tage=day
return

#date
parameter=32
gosub writeletter
parameter=a
gosub writeletter
parameter=m
gosub writeletter
parameter=32
gosub writeletter
#mo
if dow>1 then goto di
parameter=m-32
gosub writeletter
parameter=o
gosub writeletter
parameter=n
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
goto trennteil
#di
if dow>2 then goto mi
parameter=d-32
gosub writeletter
parameter=i
gosub writeletter
parameter=e
gosub writeletter
parameter=b
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
goto trennteil
#mi
if dow>3 then goto do
parameter=m-32
gosub writeletter
parameter=i
gosub writeletter
parameter=t
gosub writeletter
parameter=t
gosub writeletter
parameter=w
gosub writeletter
parameter=o
gosub writeletter
parameter=c
gosub writeletter
parameter=h
gosub writeletter
goto trennteil
#do
if dow>4 then goto fr
parameter=d-32
gosub writeletter
parameter=o
gosub writeletter
parameter=n
gosub writeletter
parameter=n
gosub writeletter
parameter=e
gosub writeletter
parameter=r
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
goto trennteil
#fr
if dow>5 then goto sa
parameter=f-32
gosub writeletter
parameter=r
gosub writeletter
parameter=e
gosub writeletter
parameter=i
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
goto trennteil
#sa
if dow>6 then goto so
parameter=s-32
gosub writeletter
parameter=a
gosub writeletter
parameter=m
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
goto trennteil
#so
if dow>7 then goto trennteil
parameter=s-32
gosub writeletter
parameter=o
gosub writeletter
parameter=n
gosub writeletter
parameter=n
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter
#trennteil
parameter=32
gosub writeletter
parameter=d
gosub writeletter
parameter=e
gosub writeletter
parameter=n
gosub writeletter
parameter=32
gosub writeletter
zahl=day
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=46
gosub writeletter
zahl=month
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=46
gosub writeletter
zahl=year
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
if day=30 and month=1 then gosub geburtstag
return

#geburtstag
parameter=2
gosub whichline
parameter=h-32
gosub writeletter
parameter=e
gosub writeletter
parameter=r
gosub writeletter
parameter=z
gosub writeletter
parameter=l
gosub writeletter
parameter=i
gosub writeletter
parameter=c
gosub writeletter
parameter=h
gosub writeletter
parameter=e
gosub writeletter
parameter=n
gosub writeletter
parameter=32
gosub writeletter
parameter=g-32
gosub writeletter
parameter=l
gosub writeletter
parameter=u
gosub writeletter
parameter=e
gosub writeletter
parameter=k
gosub writeletter
parameter=w
gosub writeletter
parameter=u
gosub writeletter
parameter=n
gosub writeletter
parameter=s
gosub writeletter
parameter=c
gosub writeletter
parameter=h
gosub writeletter
parameter=32
gosub writeletter
parameter=z
gosub writeletter
parameter=u
gosub writeletter
parameter=m
gosub writeletter
parameter=32
gosub writeletter
parameter=49
gosub writeletter
parameter=52
gosub writeletter
parameter=46
gosub writeletter
parameter=g-32
gosub writeletter
parameter=e
gosub writeletter
parameter=b
gosub writeletter
parameter=u
gosub writeletter
parameter=r
gosub writeletter
parameter=t
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=a
gosub writeletter
parameter=g
gosub writeletter

#initialisierung
lcd=off
parameter=&h38:gosub command
lcd=&b00000010
tog enable
tog enable
parameter=&h28:gosub command
parameter=&h0c:gosub command

#clear
parameter=&h02:gosub command
parameter=&h02:gosub command
return

#whichline
if parameter=1 then parameter=&h80
if parameter=2 then parameter=&hc0
goto command

#command
buffer=off
goto write_

#writeletter
buffer=&b00100000

#write_
lcd=buffer or (parameter shr 4)
tog enable
tog enable
lcd=buffer or (parameter and &h0f)
tog enable
tog enable
return

mago79
09.06.2004, 12:22
das mit dem wiederstand ist so gemeint, ein stromkreis der mit der C-control sensorspannung betrieben ist.zwischen den 5V und dem GND ist eine Collektor Emitter strecke,am collektor ist ein 1KOhm Wiederstand. an diesem Collektor hängt mein Signal IN an die Control. dieses gemessene signal müsste also nicht die am wiederstand abfallende spannung messen,sondern die die über dem transistor am C - E abfallen.
(ca. 260mV)

nun und ich versuche eben bei einem signal (wenn dieser oben erwähnte stromkreis durch den transistor geschlossen wird.) auf dem display auch auszugeben das es dieses signal ist. je nachdem wie ich den stromkreis nenne. bin leider mit LCDs derzeit auf neuland. danke an matthias werde mal dein progi versuchen zu nutzen.

thx

Matthias
09.06.2004, 12:34
Also nen Analogausgang auf'm Display Ausgeben? Kein Problem. Wenn du willst, kann ich dir heute noch eins Posten. Du musst mir nur die Genaue Belegung des LCDs auf dem Applikationboard sagen.

mago79a
09.06.2004, 15:36
....geschafft... die daten fürs display sind die vom applikationsboard (beispielprogramme) habs aber mit ASCII Codes gemacht.

...
define lcd_port byteport[2]
define lcd_rs port[14]
define lcd_rw port[13]
define lcd_e port[15]
define lcd_buf byte
define lcd_param byte

define Eingang AD[8]

gosub LCD_INIT
pause10

#LOOP
if Eingang >10 then goto LOOP
if Eingang <10 then goto Ausgabe


#Ausgabe
lcd_param = 1
gosub LCD_GOTOLINE
lcd_param = 84
gosub LCD_WRITECHAR
lcd_param = 69
gosub LCD_WRITECHAR
lcd_param = 83
gosub LCD_WRITECHAR
lcd_param = 84
gosub LCD_WRITECHAR

if Eingang >10 then gosub LOOP
if Eingang <10 then goto Ausgabe

'*****LCD Interface*****

...


jedoch weiß ich nicht ob mein original programm optimal ist... hab da noch durchs löschen eben beim zustandsänderung das flackern des lcds durch das gosub lcd_init (löschen des displays auch)

wenn du mal mein programm ansehen magst würd ichs dir gern mal schicken. weiß nicht so recht wie ichs hier so poste wie du.


PS: der Eingang AD[8] ist meine selbstgebaute Lampencontrol die bei defekter Lampe ein Signal ausgibt. Möchte das in mein Auto später über eine AVR ATMEL128 überwachen lassen.(Alle Lampen) Möglichst über unterschiedliche wiederstrände (addierend) so das ich nur ein analog eingang verwenden kann. *g*

greetz

und danke für die hilfe.[/code]

Matthias
09.06.2004, 16:06
Um das so zu schreiben muss du "
" den text und "2 schreiben.

Hier ist der code:


define lcd byteport[2]
define rw port[13]
define rs port[14]
define enable port[15]
define buffer byte
define parameter byte
define zahl word
define ziffer byte
define zaehler word
define a 97
define b 98
define c 99
define d 100
define e 101
define f 102
define g 103
define h 104
define i 105
define j 106
define k 107
define l 108
define m 109
define n 110
define o 111
define p 112
define q 113
define r 114
define s 115
define t 116
define u 117
define v 118
define w 119
define x 120
define y 121
define z 122
define ad1 ad[8]

gosub initialisierung
pause 10


#loop
zahl=ad1
gosub lcd_out
goto loop

#lcd_out
parameter=1
gosub whichline
ziffer=zahl/100
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*100
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
return

#initialisierung
lcd=off
parameter=&h38:gosub command
lcd=&b00000010
tog enable
tog enable
parameter=&h28:gosub command
parameter=&h0c:gosub command

#clear
parameter=&h02:gosub command
parameter=&h02:gosub command
return

#lcd_shift
parameter=&b00011100
gosub command
pause 8
goto lcd_shift

#whichline
if parameter=1 then parameter=&h80
if parameter=2 then parameter=&hc0
goto command

#command
buffer=off
goto write_

#writeletter
buffer=&b00100000

#write_
lcd=buffer or (parameter shr 4)
tog enable
tog enable
lcd=buffer or (parameter and &h0f)
tog enable
tog enable
return


Um einen Buchstaben zu schreiben, musst du einfach nur schreiben:

parameter=m
gosub writeletter

Wenn der buchstabe groß geschrieben werden soll, muss du noch -32 dranhängen.

Matthias
09.06.2004, 16:08
Mist, eigentlich sollte da: " [ c o d e ] " den text und " [ c o d e ] " stehen. Die Leerzeichen sind dazu da, dass nicht wieder das ganze umgewandelt wird.