Forum: Mikrocontroller und Digitale Elektronik LCD-Ansteuerung


von Johannes (Gast)


Lesenswert?

Ich suche eine Ansteuerung für ein LCD.
Die Ansteuerung soll ohne einen LCD Controller funktionieren.
Mein einziger Prozessor den ich habe ist der PIC16F873.
Bitte um Hilfe!

von Robert (Gast)


Lesenswert?

Ich bräuchte auch eine Ansteuerung für eine LCD. Allerdings benütze ich 
einen Atmel 2051 µC. Und ein LCD mit den Controller HD44780 2x20 
Zeichen.
Bröchte dringend ein C programm für das, oder einen Link zu genaueren 
Infos

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo Robert,

> Ich bräuchte auch eine Ansteuerung für eine LCD.
> Allerdings benütze ich einen Atmel 2051 µC. Und ein LCD mit
> den Controller HD44780 2x20 Zeichen.

schau dir mal http://www.erikbuchmann.de/ an, da gibt's ein 
Assemblerprogramm dafür.

MfG
Andreas

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

> Ich suche eine Ansteuerung für ein LCD.

Was ist das denn für ein LCD?

MfG
Andreas

von Sapero (Gast)


Lesenswert?

lcdcls:  mov  a,#1
  acall  befehl

lcdhome:  mov  a,#2
  sjmp  befehl
;------------------------SHIFT LEFT
lcdsl:
  mov  a,#24
  sjmp  befehl
;------------------------SHIFT RIGHT
lcdsr:
  mov  a,#28
  sjmp  befehl
;------------------------
lcdnext:
  mov  r0,#8
  acall  lcdsl
  djnz  r0,$-2
  ret
;------------------------
lcdback:
  mov  r0,#8
  acall  lcdsr
  djnz  r0,$-2
  ret
;------------------------
befehl:
  clr   lcdrs
  sjmp  dana1
;------------------------
dana:
  setb  lcdrs
dana1:  mov   lcddata,a
  acall  lcdwait
  setb  lcde
  acall  lcdwait
  clr  lcde
;------------------------
lcdwait:
  push  0    ; r0
  mov  r0,#0
  djnz  r0,$
  pop  0    ; r0
  ret
;------------------------
lcdinit:
  clr   lcde
  acall  lcdwait
  mov   r0,#6
  mov   dptr,#initt
initlo:  mov   a,#0
  movc  a,@a+dptr
  inc  dptr
  acall  befehl
  djnz  r0,initlo
  ret
initt:  db  6,12,16,56,128,2
;------------------------
print:  mov  a,#128
  acall  befehl
  pop  dph
  pop  dpl
printLoop:
  mov  a,#0
  movc  a,@a+dptr
  inc  dptr
  jnz  printdalej
  push  dpl
  push  dph
  ret
printdalej:
  cjne  a,#'|',printnormal
  acall  newline

  sjmp  printLoop
printnormal:
  acall  dana
  sjmp  printLoop
newline:
  mov  a,#192    ; kursor ins zweite linie
  ajmp  befehl

;-------------------------------------------------------------------
;und jetzt schreib das
  acall  lcdcls
  acall  print
  db  'hello world|das bin ich',0
; zeichen '|' ist wie enter

von :-) (Gast)


Lesenswert?

Naja, besser spät als nie :-D

von Sapero (Gast)


Lesenswert?

sorry, ich wahe was wichtiges vergesse!

nach jedem RESET schreib acall lcdinit (initialization des LCD:
2linien, 5*8 pixels usw)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.