Ik heb laast een lcd gekocht en gisteren is het me gelukt om hem aan te sturen met een 16f877. Ik heb nu op internet dit gevonden: http://www.parallax.com/html_pages/downloads/software/software_LCDCC.a…

hier kun je dus een character mee teken voor een lcd. Ik weet dat dit eigelijk voor een basic stamp is maar is dit ook mogelijk toe te passen op een pic? zo ja hoe dan? en zo nee, weet er iemand dan missschien een ander progammaatje? en mijn tweede vraag gaat misschien een beetje meer over jal dan over het lcd, maar het heeft wel met een lcd te maken: ik wil nu dus een teller maken en dat hij dat dan op het lcd zet. Ik neem aan dat hier wel een bepaalde code voor is, maar ik heb deze tot nu toe niet gevonden. Hoe kun je dus de waarde van een variable laten zien op het lcd?

alvast hartelijk dank hiervoor.

Offtopic: welke programmer heb je gebruikt voor die 16f877? zelf gemaakt of niet? zoja, heb je daar een schema van?

Op 31 maart 2003 17:06:52 schreef sille:
Offtopic: welke programmer heb je gebruikt voor die 16f877? zelf gemaakt of niet? zoja, heb je daar een schema van?

yep zelf gemaakt. de programmer staat hier: www.myke.com en dan moet je klikken op "el cheapo". ik vind het een zeer fijne programmer omdat hij ook aardig wat andere types kan programmeren. Ik heb laast trouwens de man achter het schema gemailt wanneer er een update zou komen en hij ook gedeelteijk de 18f serie kan proggen. Hij zei dat hij ongeveer over een maand zou komen dus...

moet je 3 tellerlusjes maken:

een die het aantal honderdtallen telt en dan de asciicode achterhalen
en dan het aantal 10-tallen, en dan het aantal eenheden.

Hettellen en zo dat lukt me wel, alleen heb ik nergens gevonden hoe ik een waarde van een variable met een simpele code op het lcd kan zetten. Iets als: hd44780 = var a. dit werkt helaas niet :'-(

Voor de customcharacters kan je hier eens kijken:
http://www.mikroelektronika.co.yu/english/product/books/PICbook/6_10Po…

Al deze voorbeeldjes zijn voor een PIC16F84, maar ze zijn wel heel helder..

ik heb het ooit eens geprobeerd, maar ik heb niet veel ervaring in jal. het was iets in de aard van:
var x
x = x + 1
hd44780 =(x,x)

en dat in een loopje. ik kreeg dan als resultaat een getal die elke keer 1 hoger werd. het getal ging wel maar tot 99 en dan weer naar 0.

hier is dan mijn programma :

 include f877_20
 include jlib
 include hd447804  
 disable_a_d_functions  
       
 var byte a = 0
 
 hd44780_clear
procedure gewoneklok is
 delay_1s ( 1 ) 
 a = a + 1
end procedure

procedure display is
 hd44780_line1
 hd44780 = a
end procedure 

 forever loop
 gewoneklok
 display
 end loop

maar als ik dit in mijn picje programmeer en hem test dan geeft hij eerst watr rare tekentje, stopt hij ff, en komt hij uiteindelijk met de hele ASCII character set. Wat hier verkeerd aan is begrijp ik niet. Iemand anders wel?

Is de initialisatie procedure voor het LCD display wel correct? Werk je in 4 bits of 8 bits mode?

4 bits. Ik weet wel zeker dat probleem in de software moet zitten en niet in de hardware, want als ik gewoon een letter er naartoe zend via de code hd44780 = "a" zet hij gewoon een a op het display. maar als ik er probeer een variable op het ldc te zetten doet hij het niet.

Dat komt omdat je VAR BYTE a = 0 doet.
De ASCII voor karakters en leestekens begint vanaf 32.
VAR BYTE a = 64 om bij A te beginnen.

maak van die variable "a" eens "hoi" ofzo misschien dat dat werkt.

Op 3 april 2003 16:27:36 schreef Wouter SSijm:
maar als ik dit in mijn picje programmeer en hem test dan geeft hij eerst watr rare tekentje, stopt hij ff, en komt hij uiteindelijk met de hele ASCII character set. Wat hier verkeerd aan is begrijp ik niet. Iemand anders wel?

Zoals Frits opmerkt krijg je precies waar je om gevraagd heb: alle ASCII tekens, te beginnen met ASCII 0 (dus eerst de user-defined characters, etc).

Er zijn procedures om een byte waarder om te zetten in 2 of 3 ascii tekens en die ergens heen te sturen (bv naar een LCD). Kijk maar eens naar het LM75/LCD example in de Jal manual.

Als je gewoon de getallen van '0' tot '9' wil zien moet je dat ook programmeren:
a = '0'

...

a = a + 1
if a > '9' then a = '0' end if

he hartelijk bedankt allemaal! hij werkt nu op de manier zoals Frits Kieftenbelt zei. Maar kan iemand me misschien wat meer vertellen over hoe ik dan zelf character kan maken op een relatief eenvoudige manier?

Op 4 april 2003 15:45:27 schreef Wouter SSijm:
Maar kan iemand me misschien wat meer vertellen over hoe ik dan zelf character kan maken op een relatief eenvoudige manier?

Je bedoelt zelf een tekentje maken? RTFM!

procedure hd44780_define(
byte in x,
byte in d0,
byte in d1,
byte in d2,
byte in d3,
byte in d4,
byte in d5,
byte in d6,
byte in d7
)

A call to hd44780_define defines the pattern for the character x. X must be in the range 0 .. 7. The bytes b0 .. b7 each define one row of the pattern. B0 defines the top row, b7 the bottom row. The least significant bit (b0) defines the rightmost pixel, a logical one (bit true) makes the pixel dark (for a reflexive display). The character is defined by a 5 * 8 matrix, so b4 defines the leftmost pixel.

Op 4 april 2003 15:51:11 schreef Wouter van Ooijen:

[...]

Je bedoelt zelf een tekentje maken? RTFM!

procedure hd44780_define(
byte in x,
byte in d0,
byte in d1,
byte in d2,
byte in d3,
byte in d4,
byte in d5,
byte in d6,
byte in d7
)

A call to hd44780_define defines the pattern for the character x. X must be in the range 0 .. 7. The bytes b0 .. b7 each define one row of the pattern. B0 defines the top row, b7 the bottom row. The least significant bit (b0) defines the rightmost pixel, a logical one (bit true) makes the pixel dark (for a reflexive display). The character is defined by a 5 * 8 matrix, so b4 defines the leftmost pixel.

he dat ziet er goed uit! Ik zal er eens wat beter naar kijken als ik wat meer tijd heb. Ik heb onderhand weer een nieuw probleem met jalvoor mijn klok die ik op mijn lcd ga laten zetten:) : Dit is nu eigelijk de eerste keer dat ik met procedures werk en ik snap het allemaal wel, maar er is wel een probleempje. Ik heb in een procedure ( genaamd a ) een stukje code zitten die weer een procedure ( genaamd b ) aan roept. Het probleem is nu dus dat de compiler of a niet herkent of b niet, omdat die nog moet komen( misschien klinkt dit een beetje raar maar ik weet niet hoe ik het beter kan omschrijven). hoe is dit dus op te lossen???

In Jal moet je een procedure definieren voordat je hem kan gebruiken. Dus als a een aanroep van b bevat, moet je eerst b definieren en dan pas a.

Op 6 april 2003 14:31:36 schreef Wouter van Ooijen:
In Jal moet je een procedure definieren voordat je hem kan gebruiken. Dus als a een aanroep van b bevat, moet je eerst b definieren en dan pas a.

dat dacht ik dus al. Het lastige is nu dus dat ik a in b aanroep en b in a. Is hier een oplossing voor of moet ik dan maar wat anders verzinnen?

Dat kan gewoon niet in Jal, is nauelijks te doen op een PIC (behalve op de 18F's), en ook niet erg verstandig in andere microcontrollers, want je kan niet voorspellen hoevaak dit in-een-cirkeltje aanroepen gaat gebeuren, dus je weet ook niet hoe veel stack ruimte er moet zijn.

Op 6 april 2003 15:19:47 schreef Wouter van Ooijen:
Dat kan gewoon niet in Jal, is nauelijks te doen op een PIC (behalve op de 18F's), en ook niet erg verstandig in andere microcontrollers, want je kan niet voorspellen hoevaak dit in-een-cirkeltje aanroepen gaat gebeuren, dus je weet ook niet hoe veel stack ruimte er moet zijn.

ok bedankt. Dan zal ik maar er maar wat anders voor gaan bedenken