[LCD] Met welk programma een HD44780 aansturen @ Amiga

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

  • Richard
  • Registratie: Augustus 2000
  • Laatst online: 16:40

Richard

Kuru Kuru Kururin

Topicstarter
Ik heb dus een HD44780 (compatible) LCD (4x20), en zou deze graag buitenom mijn PC ook aan willen sturen met mijn Amiga. Zijn hier losse programmaatjes voor, voor op de LPT-poort van de Amiga? Ik kan namelijk met Google echt haast niets vinden.

20*350ZO45°


  • Stealth2000
  • Registratie: December 2000
  • Laatst online: 08-01 10:55
Word moeilijk, toen ik nog een hd44780 had ben ik nooit iets voor de amiga tegengekomen

  • Richard
  • Registratie: Augustus 2000
  • Laatst online: 16:40

Richard

Kuru Kuru Kururin

Topicstarter
Stealth2000 schreef op 03 augustus 2002 @ 09:17:
Word moeilijk, toen ik nog een hd44780 had ben ik nooit iets voor de amiga tegengekomen
Echt raar eigenlijk, ik kan voor mijn Commodore CDTV (Amiga500 compatible) echt wel zeer leuke dingen bedenken om door te sturen naar de LCD, ik heb niet een volledig operating programma nodig net als Smartie, maar ik wil natuurlijk wel een klein opzetje.

20*350ZO45°


  • DaRuLe
  • Registratie: Februari 2001
  • Niet online

DaRuLe

Rauður, Hvítur, Blár!

check deze eens. Zoek even naar LCD op de pagina

Ég er eins ánægður og ég get orðið.


Verwijderd

Wat grappig, ik heb 9 jaar geleden een programma geschreven op mijn Amiga om een display met de HD44780 aan te sturen! Deze versie ondersteunt een 1-regelig display met 16 karakters, maar is heel makkelijk aan te passen. Hoe je hem kan aansluiten op de printerpoort heb ik er ook even bijgezet. Het assembleren heb ik gedaan met MasterSeka.

;lcd6.s
;Dit programma stuurt een 1*16 karakter-LCD-display van Hitachi aan.
;(Typenr. van Hitachi processor: HD44780)
;De LCD-displaymodule kan rechtstreeks worden aangesloten op de
;printerpoort!
;Aansluiten:
;LCD Display Module Printerpoort
; 1 Vss 20 GND
; 2 Vdd 14 +5V
; 3 Vlc 20 GND (kontrast LCD display)
; 4 RS (register select) 11 BUSY
; 5 R/W 12 POUT
; 6 E (enable) 13 SEL
; 7 DB0 2 D0
; 8 DB1 3 D1
; 9 DB2 4 D2
; 10 DB3 5 D3
; 11 DB4 6 D4
; 12 DB5 7 D5
; 13 DB6 8 D6
; 14 DB7 9 D7
;
;Gemaakt door Martin Meyerink op 3 juli 1993.
;Gebruik: <naam van dit programma> <parameter>
;de parameter is een string van 16 of minder karakters


;Hoofdprogramma:

bsr getstr ;haal parameter vanuit AmigaDOS op
bsr initprt ;initialiseer poort
bsr initlcd ;initialiseer lcd display module
bsr initgfx ;eigen karakters definieren
lea data1,a0 ;pointer naar data1
bsr update
move.l #0,d0
rts

update: move.w #$80,d0 ;cursor naar 1e positie
bsr send
move.w #$100,d0 ;bit 8 = register select
uloop1: move.b (a0)+,d0 ;haal 8 letters uit geheugen
bsr send ;stuur naar display
cmpi.l #data1+$08,a0
bne uloop1
move.w #$c0,d0 ;cursor naar 9e positie
bsr send
uloop2: move.w #$100,d0
move.b (a0)+,d0 ;haal de laatste 8 letters op
bsr send ;stuur naar display
cmpi.l #data1+$10,a0
bne uloop2
rts

initprt:move.b #$ff,$bfe301 ;ddr par poort wordt uitgang
move.b $bfd200,d0
ori.b #$07,d0 ;sel, pout en busy
move.b d0,$bfd200 ;ddr besturingssignalen
rts

initlcd:move.w #$38,d0 ;3 maal $38 sturen voor reset
bsr send
bsr delay2
move.w #$38,d0
bsr send
bsr delay2
move.w #$38,d0
bsr send
bsr delay2
move.w #$01,d0 ;clear display
bsr send
bsr delay2 ;na scherm wissen wat langer wachten
move.w #$0c,d0 ;display on
bsr send
move.w #$06,d0 ;2*8 lines
bsr send
rts

send: bsr delay
btst #8,d0 ;test rs bit
beq reg0
bsr rs1 ;selecteer register 1
bra skip
reg0: bsr rs0 ;selecteer register 0
skip:
bsr delay
bsr rw0 ;read/write=0 (write dus)
bsr delay
bsr e1 ;enable = 1
bsr delay
move.b d0,$bfe101 ;zet data op poort
bsr delay
bsr e0 ;data inklokken
bsr delay
rts

delay: move.w #$20,d1
dloop: subi #1,d1
bne dloop
rts

delay2: move.w #$800,d1
dloop2: subi #1,d1
bne dloop2
rts

e0: move.b $bfd000,d2
andi.b #%11111011,d2
move.b d2,$bfd000
rts

e1: move.b $bfd000,d2
ori.b #%00000100,d2
move.b d2,$bfd000
rts

rw0: move.b $bfd000,d2
andi.b #%11111101,d2
move.b d2,$bfd000
rts

rw1: move.b $bfd000,d2
ori.b #%00000010,d2
move.b d2,$bfd000
rts

rs0: move.b $bfd000,d2
andi.b #%11111110,d2
move.b d2,$bfd000
rts

rs1: move.b $bfd000,d2
ori.b #%00000001,d2
move.b d2,$bfd000
rts

initgfx:move.w #$40,d0 ;karakter 0, Hartje
bsr send
move.w #%100000000,d0
bsr send
move.w #%100001010,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100000000,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$48,d0 ;karakter 1, Telefoon
bsr send
move.w #%100000000,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100010101,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100001010,d0
bsr send
move.w #%100011011,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$50,d0 ;karakter 2, Smiley
bsr send
move.w #%100001110,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100010101,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100010001,d0
bsr send
move.w #%100011011,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$58,d0 ;karakter 3, Copyright
bsr send
move.w #%100001110,d0
bsr send
move.w #%100010001,d0
bsr send
move.w #%100010111,d0
bsr send
move.w #%100011001,d0
bsr send
move.w #%100010111,d0
bsr send
move.w #%100010001,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$60,d0 ;karakter 4, Backslash
bsr send
move.w #%100000000,d0
bsr send
move.w #%100010000,d0
bsr send
move.w #%100001000,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100000010,d0
bsr send
move.w #%100000001,d0
bsr send
move.w #%100000000,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$68,d0 ;karakter 5, Klein vierkantje
bsr send
move.w #%100000000,d0
bsr send
move.w #%100011110,d0
bsr send
move.w #%100010010,d0
bsr send
move.w #%100010010,d0
bsr send
move.w #%100010010,d0
bsr send
move.w #%100011110,d0
bsr send
move.w #%100000000,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$70,d0 ;karakter 6, Alarm Bel
bsr send
move.w #%100000000,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$78,d0 ;karakter 7, Glaasje
bsr send
move.w #%100010001,d0
bsr send
move.w #%100010001,d0
bsr send
move.w #%100011111,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100000100,d0
bsr send
move.w #%100001110,d0
bsr send
move.w #%100000000,d0
bsr send

move.w #$80,d0
bsr send
rts

getstr: lea data1,a1 ;hier word string neergezet
subq #2,d0 ;van DOS krijgen we de lengte
gloop: move.b (a0)+,d1
bsr altchr ;8 zelfgedef. chrs vertalen
cmp.b #$60,d1 ;test op quote `
bne noq ;geen quote dus
move.b #$20,d1 ;quote wordt spatie
noq: move.b d1,(a1)+ ;kopieer string
cmp.l #data1+$10,a1 ;string te lang? dan stoppen
beq quit
dbra d0,gloop ;tel lengte string af
quit: rts

altchr: cmp.b #$A2,d1 ;hartje
bne test1
move.b #$00,d1
test1: cmp.b #$B9,d1 ;telefoon
bne test2
move.b #$01,d1
test2: cmp.b #$B2,d1 ;smiley
bne test3
move.b #$02,d1
test3: cmp.b #$B3,d1 ;copyright
bne test4
move.b #$03,d1
test4: cmp.b #$5C,d1 ;backslash
bne test5
move.b #$04,d1
test5: cmp.b #$BC,d1 ;klein vierkantje
bne test6
move.b #$05,d1
test6: cmp.b #$BD,d1 ;alarm bel
bne test7
move.b #$06,d1
test7: cmp.b #$BE,d1 ;glaasje
bne tquit
move.b #$07,d1
tquit: rts

; 0123456789ABCDEF
data1: dc.b "vervang deze mededeling door 16 spaties"

[ Voor 0% gewijzigd door Verwijderd op 12-09-2002 22:36 . Reden: 16 spaties in laatste regel. Dus data1: dc.b <tab><doublequote><16 spaties><double-quote> ]


  • Unicorn
  • Registratie: Maart 2000
  • Laatst online: 29-04-2024

Unicorn

rogue soeper

Is er een GNU toolchain voor Amiga? Gcc, make, libs, dat soort meuk. Dan zou je eens lcdproc kunnen proberen te bouwen. Met een beetje mazzel doet het configure script het, anders moet je de source flink gaan aanpassen.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Als je dat al hebt, is het waarschijnlijk simpeler om LCDInf Linux om te bouwen......

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

O ja, wat ik nog ff vergeten was, je kunt het programmaatje (genaamd LCD6) als volgt vanuit AmigaDOS aanroepen:

1> LCD6 dit`is`een`test

Let op dat je deze quote ` gebruikt in plaats van een spatie!
Op het LCD-schermpje wordt deze gewoon weer omgezet naar een spatie.
Pagina: 1