Hallo,
Ik heb hier verschillende 4 regels x 40 karakters LCD-displays volgens:
http://www.uploadarchief.net/files/download/dsc00099-800.jpg
en
http://www.uploadarchief.net/files/download/dsc00100-800.jpg
Aangesloten aan een PIC16f628A.
Datasheet LCD:
http://www.optrex.com/SiteImages/PartList/DRAWING/ue_30657.pdf
en volgens de cursus van Frits K: http://www.picbasic.nl/
Probleem is dat ik ofwel regel 1 en 2 kan aansturen via pin 9 van het LCD ( E1 ENABLE CLOCK 1 )
Ofwel regels 3 en 4 via pin 15 van het LCD (E2 ENABLE CLOCK 2)
Maar niet de 4 regels tegelijk.
Ik probeer via instrukties:
DECLARE LCD_LINES 4
en/of
DECLARE LCD_ENPIN PORTB.1
Waarbij PORTB.1 naar pin 15 van het LCD gaat.
Krijg de 4 regels echter niet tegelijk op het scherm.
Weet iemand een oplossing hievoor?
Alvast bedankt. Looitje
Turbokeu
Golden Member
I love watching conspiracy theorists use the airtight logic of the argument from incredulity: "Well I don't understand how it works so it can't be real!!!"
Een 40x4 LCD heeft TWEE HD44780(-compatibele) controllers, vandaar ook de twee enable lijnen, één voor elke 44780.
Vermits de 44780 maar 80 bytes RAM kan adresseren kan hij ook maar 80 karakters aansturen - dus max 20x4 of 40x2).
De twee 44780's werken onafhankelijk van elkaar, je moet het 40x4 LCD dus zien als twee gestapelde 40x2 LCD's: regel 1 & 2 worden bestuurd door controller1, regel 3 & 4 door controller2.
Zodoende heb je ook twee keer 80bytes displaygeheugen, te selecteren via E1 en E2.
De rest is niet moeilijk te raden.
Ik stuur het display via een PIC 16F628A.
Geprogrameerd met Proton picbasic.
Geraak er met de 2 enable lijnen toch niet uit.
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Volgens mij is het standaard PRINT commando alleen geschikt voor eeb display met maar 1 HD44780 chip.
Je zou een trucje kunnen doen, maar dat kost je 2 poorten extra (tenzij iemand anders een betere oplossing heeft).
Sluit de 2 enables van het display apart aan op PORTB.2 (de standaard ENable pin) maar let op; beide enables via een weerstand van zeg 1k ofzo.
Daarna sluit je de beide enables van het display nog eens rechtstreeks aan op een andere uitgangspoort.
Met die poorten is dan de keus te maken met welke HD44780 chip van het display je wilt communiceren.
(Dit zou ook moeten werken voor mensen die gebruik (willen) maken van 2 afzonderlijke, losse displays.
Heb het zelf nooit bij de hand gehad of getest, maar zoiets moet je eens proberen.
@ Frits,
Enable 1 aangesloten aan PORTB.2 via weerstand 1K
Enable 2 aangesloten aan PORTB.2 via weerstand 1K
Enable 1 aangesloten aan PORTB.1
Enable 2 aangesloten aan PORTB.0
Ik voer volgende code in:
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
DelayMS 500 ;LCD stabilisering
Declare LCD_LINES 4 ;4 regelig display
Cls ;Wis eventuele oude tekst uit
Declare LCD_ENPIN = PORTB.1 ;De EN1 aansluiting moet nu aan PORTB.1
Print At 1, 1, "Dit is een display test van 4 maal 40 ka" ;Zet tekst op regel 1
Print At 2, 1, "Echt heel mooi maar mischien te moeilijk" ;Zet tekst op regel 2
Declare LCD_ENPIN = PORTB.0 ;De EN2 aansluiting moet nu aan PORTB.0
Print At 3, 1, "Deze tekst zou op regel 3 moeten komen" ;Zet tekst op regel 3
Print At 4, 1, "Deze tekst zou op regel 4 moeten komen" ;Zet tekst op regel 4
End ;Einde programma
Krijg na compileren warning:
Declare 'LCD_ENPIN'Has already been used in the program.The declaration will be ignored! (oefening2.bas)
Krijg wel tekst op de 4 regels maar het is de tekst van regels 3 en 4.Hetzij verschoven.
Enig idee?
Alvast bedankt
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Dit gaat niet werken zo, wat je moet doen is:
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
LCD_ENPIN = PORTB.2
Declare LCD_LINES = 2
DelayMS 500
CLS
PORTB.0 = 1
PORTB.1 = 0
Print At 1, 1, "Dit is een display test van 4 maal 40 ka" ;Zet tekst op regel 1
Print At 2, 1, "Echt heel mooi maar mischien te moeilijk" ;Zet tekst op regel 2
PORTB.0 = 0
PORTB.1 = 1
Print At 1, 1, "Deze tekst zou op regel 3 moeten komen" ;Zet tekst op regel 3
Print At 2, 1, "Deze tekst zou op regel 4 moeten komen" ;Zet tekst op regel 4
ENDHeb het niet getest, maar zoiets moet het worden denk ik (dit is wat Frits bedoeld, dacht ik)
@marcob
Bedankt voor uw meedenken.
Op regel 1 komt de tekst van regel 3 te staan.
Op regel 2 komt de tekst van regel 4 te staan.
Op regels 3 en 4 komt de juiste tekst.
Dus jammer maar helaas toch nog niet juist.
Nog een ideetje?
Met dank aan Frits en Marcob.
Ik heb het 4-regelig display kunnen aansturen mits gebruikmaking van 2 externe and-poorten (74LS08)
en volgende code:
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
DelayMS 500 ;initialisatie display
Opnieuw:
High PORTB.0 ;enable 1 sturen
High PORTB.1 ;enable 2 sturen
Cls ;display wissen
DelayMS 1000 ;1000 milliseconden = 1 seconde
High PORTB.0 ;enable 1 sturen
Low PORTB.1 ;enable 2 blokkeren
Print At 1, 1, "Dit is een display van 4 x 40 karakters." ;Zet deze tekst op regel 1
DelayMS 1000 ;1000 milliseconden = 1 seconde
Print At 2, 1, "Echt heel mooi maar geen gemakkelijke." ;Zet deze tekst op regel 2
DelayMS 1000 ;1000 milliseconden = 1 seconde
Low PORTB.0 ;enable 1 blokkeren
High PORTB.1 ;enable 2 sturen
Print At 1, 1, "Deze tekst moet op regel 3 komen staan." ;Zet deze tekst op regel 3
DelayMS 1000 ;1000 milliseconden = 1 seconde
Print At 2, 1, "En deze tekst moet dan op regel 4 komen." ;Zet deze tekst op regel 4
DelayMS 3000 ;3000 milliseconden = 1 seconde
GoTo Opnieuw
End
De enable 1 is aangesloten op de uitgang van and-poort 1
met ingangen portb.1 en portb.2
De enable 2 is aangesloten op de uitgang van and-poort 2
met ingangen portb.0 en portb.2
Jammer van deze oplossing maar ik heb veel geprobeerd en vind geen simpelere.
Of iemand een beter idee?
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
Ik heb eens gezocht:
Als je Engels kent, kijk op het picbasic forum:
www.picbasic.org/forum/showthread.php?t=4590&highlight=4x40
@ Frits,
Heb uw info http://www.picbasic.org/forum/showthread.php?t=4590&highlight=4x40 gelezen en de and-poort met 2 weerstanden en 2 diodes getest met mijn vorige code.
Werkt prima.
Zo ga ik het houden.
Bedankt allen.