picbasic ,display werkt niet goed

Ik heb een probleem met een programma , dit heb ik nu helemaal uitgekleed zodat aleen het display "iets" moet weergeven.
Probleem :display geeft maar 8 letters weer. terwijl dit een 1 x 16 , HD44780 compatible.
Wat zie ik over het hoofd.

pic basic code:


Device = 16F628A   
Config XT_OSC , WDT_OFF, PWRTE_ON, LVP_OFF, BODEN_OFF, MCLRE_OFF
  
All_Digital TRUE              ;Alle ingangen digitaal  
Xtal 4
'---------------------------LCD-------------------------------- 	
Declare		LCD_DTPin = PORTB.0
Declare         LCD_RSPin = PORTB.4
Declare		LCD_ENPin = PORTA.3
Declare		LCD_Interface = 4	' 4-bit Interface
Declare		LCD_Lines = 1
Declare		LCD_Type = ALPHA
'--------------------------Poorten------------------------------
Symbol SDA = PORTA.1         'I2C op poort a1   
Symbol SCL = PORTA.0         'I2C op poort a0
Symbol LED = PORTA.2         'ledverl. op poort a2

       ' 76543210
PORTA = %00000000             ;PORTA uitgangen bij opstart een laag niveau
TRISA = %11111011             ;PORTA.2 is een uitgang voor de LED
PORTB = %00000000             ;PORTB uitgangen bij opstart een laag niveau
TRISB = %11111111             ;PORTA.2 is een uitgang voor de LED   
Clear                         ;Wis alle RAM geheugen 
DelayMS 500                   ;LCD stabilisering 
'--------------------------------------------------
bas:

Cls
High LED
Print "Display Test"
DelayMS 300
GoTo set_button

'----------------------Frequentie set -------------------------
 
set_button:

DelayMS 20
If  PORTB.5=1   Then    LCD_Led_Off
If  PORTB.7=1   Then    LCD_Led_On

GoTo set_button

LCD_Led_On:

High LED                'Achtergrond verl aan      
GoTo set_button

LCD_Led_Off:

Low LED                 'Achtergrond verl uit      
 
GoTo set_button
End
Arco

Special Member

Sommige van die displays worden gezien als 2 regelig display: 1...8 op regel 1, en 9...16 op regel 2... ;)
Probeer het eens als 2 regelig display in te stellen. (en de tekst dan in twee delen versturen)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Gebruik Print At. Alleen Print verschuift de cursor zodat er al snel niets meer zichtbaar is.
Om te kijken of het aansturen van 1 regel goed gaat zou je het volgende kunnen doen:
Print at 1,1, "Regel1-1"
Print at 1,9, "Regel1-9"
Print at 2,1, "Regel2-1"
Print at 2,9, "Regel2-9"

Just find out what you like and let it kill you
Arco

Special Member

Wat vaak ook werkt (hangt van de library af) is sturen als een string met 8 spaties erin:

code:

 "<karakters 1...8> <8 spaties> <karakters 9...16>"
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
fripster

Golden Member

Arco heeft gelijk... dit is waarschijnlijk een display van '2x8' regels. Deze twee regels beginnen elk op een locatie in het RAM van de display. De eerste weet je (want je eerste letters komen op de goede plaats), maar de tweede 'regel' begint waarschijnlijk op een plek die anders is dan je library aanneemt. Dus:

- Datasheet van het display lezen!
- RAM locatie van de tweede regel in de library aanpassen

En dan werkt het wel...

Alternatief kun je uitzoeken waar de RAM locatie begint door een heel lang woord te sturen (dan begint het 'ergens' weer): Dan weet je de offset, en kun je daar programmatisch rekening mee houden...

Just my two cents...

Fripster

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Dat was het dus

pic basic code:


Print At 1,1, "regel 1"
Print At 2,1, "regel 2"
Arco

Special Member

Overblijfsel uit het verre verleden... ;)
Doordat de displays vanaf 1x8 steeds groter werden, moest er steeds weer iets worden gedaan om de dataregisters groot genoeg te houden.

Dat resulteerde soms in wat kromme constructies zoals deze... (er zijn nog wel meer van dat soort uitzonderingen)
In het begin was ram ook duur, dus iedere byte die uitgespaard kon worden was meegenomen.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 9 juli 2017 12:36:00 schreef fripster:
- RAM locatie van de tweede regel in de library aanpassen

PicBasic werkt voor de standaard elementen uit de syntax niet met libraries, dus dat wordt moeilijk.

Just find out what you like and let it kill you
fripster

Golden Member

@hadv: oeh dat is lastig... Ik moest het eens in WiringPI doen, maar daar waren alle sources beschikbaar.... Gelukkig is er een andere methode gevonden.

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu
Arco

Special Member

Zo'n display aansturen is niet echt 'rocket science'... :)
In een half uurtje heb je dat wel werkend met weinig code in een zelfgeschreven routine.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com