serieel + lcd

Dat kan alleen als je de tekst geformatteerd verstuurt zodat het op de juiste locatie verschijnt (met spaties e.d.).
(hyperterminal is een 'dom' programma; het zet op het scherm wat je verstuurt zonder er iets aan te veranderen)
Als je tekst op een bepaalde plaats wilt, zul je zelf een programmaatje voor op je PC moeten schrijven...

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

Nu ben ik, als leek,een klein beetje eigenwijs, corrigeer me als ik het echt verkeerd zie.

Als ik kijk op blz 187 t/m 190 in het boek,50 pic microcontroller projecten, van bert van dam zou het mogelijk moeten zijn.

Of is het alleen mogelijk in jal en niet in pic basic.

Misschien even de betreffende pagina posten? (ik denk niet dat veel mensen het boek willen gaan kopen... :) )

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

Special Member

Op 30 april 2017 12:12:59 schreef zeeman..59:
Wil via de seriele verbinding,(hypeterminal) op mijn pc het zelfde zien als in mijn display.

Dat kan gewoon, heb het eergisteren ook gedaan.

Zoek voorbeeld/opzet om verder te kunnen experimenteren.

Ik heb je een voorbeeld gestuurd, je hoeft het alleen even in jou programma te zetten.

En wat die VT52 betreft, dat hoeft niet. Je kan het gewoon op AUTODETECT laten staan, het enige wat je moet doen is de baud rate goed zetten. dit stukje dus, lees ook even wat er bij de post staat.

pic basic code:



    HRSOut Dec3 WAARDE,8,8,8
 
    ;HRSOut Dec3 WAARDE,13
 
    Print At 1,1,Dec3 WAARDE,    
Als je haar maar goed zit, GROETEN LAMBIEK.

Ik zou niet weten hoe je die tekst midden op je scherm van hyperterminal zou moeten krijgen met die code...
(dan moet je toch wat spaties/tabs/CrLf's meesturen om de boel op de goede plek te krijgen...)

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

Special Member

In het voorbeeld staat het helemaal links in je beeldscherm, precies in het midden kan volgens mij niet. En waarom zou je dat willen, als het stil staat is het toch goed?

Als je haar maar goed zit, GROETEN LAMBIEK.

TS vraagt:

Gepost zaterdag 29 april 2017 18:30:12 |

Quoten

Een andere vraag: hoe krijg ik mijn teller in het midden van mijn beeldscherm

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

Lig even stil.
Door stommiteit pickit2 defect, programmeert niet meer.

Suggesties blijven welkom.

@Lambiek, wil inderdaad mijn teller willekeurig plek in hyperterminal neer kunnen zetten zoals Arco post.

Hyperterminal geeft alleen weer wat je stuurt. Dus zul je zoals gezegd door het sturen van spaties/tabs/CrLf's de boel moeten positioneren.
Of je moet zelf een PC programmaatje schrijven wat dat doet...
(om een Pickit2 kapot te krijgen moet je toch wel iets heel lelijks gedaan hebben... :) )

[Bericht gewijzigd door Arco op 30 april 2017 23:55:10 (18%)]

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

Special Member

Op 30 april 2017 23:27:04 schreef zeeman..59:
@Lambiek, wil inderdaad mijn teller willekeurig plek in hyperterminal neer kunnen zetten zoals Arco post.

Ja, dat snap ik. Maar volgens mij kan dat niet, en waarom zou je dat willen?

Als je haar maar goed zit, GROETEN LAMBIEK.

@Lambiek: dit projectje is een klein stukje van groter geheel.
Gaat straks samen gevoegd worden met ander project.
Dus wil weten wat de mogelijkheden zijn.

@Arco: Ben af en gewoon een pechvogel.(wet van Murphy).

Lambiek

Special Member

Heb je Profilab al eens overwogen, daar kan ook heel veel mee. Dat gebruik ik samen met micro controllers, hier heb je wat lees voer.

https://www.circuitsonline.net/downloads/werken_met_profilab_expert_4.…

Als je haar maar goed zit, GROETEN LAMBIEK.

@Lambiek inderdaad hoop leesvoer moet eens kijken of het voor mij interessant genoeg is om mij er in te verdiepen aangezien ik hoogvlieger zal worden in programmeren en elektronica.(maar weet natuurlijk nooit)

mijn pickit2 zal ik opnieuw moeten programmeren wachten is nu op een andere programmer.(heb een wisp bestel)

onderwijl ben bezig met een ander programma maar hier snap ik iets niet.

pic basic code:


[Device 16F628A                
Config WDT_OFF,_
       PWRTE_ON,_
       LVP_OFF,_
       MCLRE_ON,_            ; ingeschakeld om reset toets te gebruiken
       HS_OSC,               ; intern kristal uitgeschakeld
Xtal 20                      ; extern kristal van 20 mhz

All_Digital TRUE              ; alle ingangen digitaal

Declare LCD_ENPin = PORTA.1
Declare LCD_RSPin = PORTA.0

Declare Hserial_Baud  9600         ; set baudrate op 9600C
Declare Hserial_RCTCA $90          ; 
Declare Hserial_TXSTA $24          ;
Declare Hserial_Clear = On         ; reset buffer bij een overflow

;Logische constanten
Symbol HOOG         = 1
Symbol LAAG         = 0


;Normale constanten
Symbol Convert      = $44     ; de DS1820 moet de temperatuur gaan meten
Symbol Graad        = 223     ; 223 is 'graad' karakter
Symbol RdScratchPad = $BE     ; temperatuur van de DS1820 uitlezen
Symbol SkipROM      = $CC     ; geen gebruik maken van het unieke adres


;Poortnamen
Symbol DS1820       = PORTB.0 ; temperatuur sensor op poort b.0 pin6
Symbol Potmeter     = PORTA.2 ; potmeter op poort a.2
Symbol Uitgang      = PORTA.4 ; led op poort a.4 pin3

;Variabele declareren
;BYTE
Dim Temperatuur   As Byte     ; factor 2 van de temperatuur Celsius
Dim Thermostaat   As Byte     ; ingestelde thermostaat temperatuur 

;        76543210
PORTA = %00000000             ; porta laag
TRISA = %11101111             ; a.4 Uitgang led
PORTB = %00000000             ; portb laag
TRISB = %00000000             ; portb laag 

Clear                         ; wis ram geheugen

DelayMS 500                   ; stabilisatie lcd

;Hoofdprogramma
Cls                           ; wis lcd
Print At 3, 1,  "Temp."       ; tekst op regel 3, display
Print At 4, 1,  "Inst."       ; tekst op regel 4, display

While 1 = 1
  Thermostaat = Pot Potmeter, 40             ; lees voor functie pot deel 5 
  If Thermostaat > 60 Then Thermostaat = 60  ; max tot 30 graden instelbaar (60/2)

  OWrite DS1820, 1, [SkipROM, Convert]       ; temperatuur meten
  OWrite DS1820, 1, [SkipROM, RdScratchPad]  ; Zend opdracht
  ORead  DS1820, 2, [Temperatuur]            ; lees temperatuur  

  Print At 3, 1,  @Temperatuur / 2, ".", Dec1 (Temperatuur // 2) * 5, Graad, "C"
  HRSOut Dec Temperatuur ,8 ,8 ,8      ; links boven in hyperterminal moet temperatuur verschijnen
  
  Print At 1, 1, @Thermostaat / 2, ".", Dec1 (Thermostaat // 2) * 5, Graad, "C"

  If Temperatuur < Thermostaat Then Uitgang = HOOG ; uitgang hoog (aan) als temp te laag is
  If Temperatuur > Thermostaat Then Uitgang = LAAG ; uitgang laag (uit) als temp te hoog is

  DelayMS 300                                
Wend

hij geeft een compile fout aan op regel 15.(unrecognised compiler error.)
dit snap ik even niet omdat ik deze ook in het teller programma heb gebruikt.
heeft iemand enig idee wat ik over het hoofd zie.

Komma na HS_OSC ? Deze verwijderen ?

Lambiek

Special Member

Op 10 mei 2017 23:33:58 schreef zeeman..59:
@Lambiek inderdaad hoop leesvoer moet eens kijken of het voor mij interessant genoeg is om mij er in te verdiepen aangezien ik hoogvlieger zal worden in programmeren en elektronica.(maar weet natuurlijk nooit)

Gewoon proberen. :)

mijn pickit2 zal ik opnieuw moeten programmeren....

Die snap ik even niet.

wachten is nu op een andere programmer.(heb een wisp bestel)

Dat is geen slimme zet, er gaat niets boven een pickit.

onderwijl ben bezig met een ander programma maar hier snap ik iets niet.

Haakje "[" voor Device ook weg halen.

Als je haar maar goed zit, GROETEN LAMBIEK.
paaltje73

Golden Member

Line 15 = DECLARE HSERIAL_RCTCA $90, RCTCA moet zijn RCSTA
Succes paaltje

Van een pickit2 naar een wisp is inderdaad enkele stappen terug i.p.v. vooruit... :)
Dat de pickit opnieuw geprogrammeerd moet worden lijkt me vreemd, er zit een bootloader in. En dat die zoek raakt is me nog nooit gebeurd...

Enige waar 'ie niet tegen kan is vallen op een harde vloer.
Is al met 2 stuks gebeurd; er breekt dan een keramisch spoeltje af van de print. Nieuwe erop en alles weer OK...

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

@Lambiek

Die snap ik even niet.

vermoedelijk,weet het bijna zeker, moet ik mijn pickit opnieuw moet programmeren.
krijg nl melding dat software versie ontbreekt vandaar dat ik wisp heb bestelt om te her programmeren.
ben het met je eens er gaat niets boven de pickit dus hoop dat ik hem weer aan de gang krijgen.

inderdaad wat slordigheden zal vanavond aanpassen.

dank voor de input.

Het kan zijn dat de pickit (onbedoeld) in de 'Programmer to go' mode is gekomen.
Daar kun je uit komen door de pickit met ingedrukt knopje in de USB te pluggen. (rood busyledje gaat knipperen).
Als je nu het pickit2 programma opstart krijg je 'No operating system found'
Vervolgens met 'Tools' -> 'Download Pickit2 Operating System' de boel weel herstellen. (file staat in de pickit2 directory; PK2V023200.HEX)

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

hoera, mijn pickit werkt weer.

ben dus weer volop bezig.
heb in onderstaand progje wat schoonheidsfoutjes weggewerkt.
blijf nog met 1 ding zitten en dat is dat mijn temp in hyperterminal blijft doorlopen.
heb een regel tussen gevoegd, tussen de sterretjes.

heb uiteraard x aantal dingen uitgeprobeerd zoals uit een vorig programma het toevoegen van ,8,8,8 maar ook dit werkt niet.

heeft iemand een idee.

programma werkt in ieder geval zo als ik het voor ogen had.

pic basic code:


Device 16F628A                
Config WDT_OFF,_
       PWRTE_ON,_
       LVP_OFF,_
       MCLRE_ON,_             ; ingeschakeld om reset toets te gebruiken
       HS_OSC                 ; intern kristal uitgeschakeld
Xtal 20                       ; extern kristal van 20 mhz

All_Digital TRUE              ; alle ingangen digitaal

Declare LCD_ENPin = PORTA.1
Declare LCD_RSPin = PORTA.0

Declare Hserial_Baud  9600         ; set baudrate op 9600
Declare Hserial_RCSTA $90          ; 
Declare Hserial_TXSTA $24          ;
Declare Hserial_Clear = On         ; reset buffer bij een overflow

;Logische constanten
Symbol HOOG         = 1
Symbol LAAG         = 0


;Normale constanten
Symbol Convert      = $44     ; de DS1820 moet de temperatuur gaan meten
Symbol Graad        = 223     ; 223 is 'graad' karakter
Symbol RdScratchPad = $BE     ; temperatuur van de DS1820 uitlezen
Symbol SkipROM      = $CC     ; geen gebruik maken van het unieke adres


;Poortnamen
Symbol DS1820       = PORTB.0     ; temperatuur sensor op poort b.0 pin6
Symbol Potmeter     = PORTA.2     ; potmeter op poort a.2
Symbol Uitgang      = PORTA.4     ; led op poort a.4 pin3

;Variabele declareren
;BYTE
Dim Temperatuur   As Byte     ; factor 2 van de temperatuur Celsius
Dim Thermostaat   As Byte     ; ingestelde thermostaat temperatuur 

;        76543210
PORTA = %00000000             ; porta laag
TRISA = %11101111             ; a.4 Uitgang led
PORTB = %00000000             ; portb laag
TRISB = %00000000             ; portb laag 

Clear                         ; wis ram geheugen

DelayMS 500                   ; stabilisatie lcd

;Hoofdprogramma
Cls                           ; wis lcd
Print At 1, 1,  "zeeman.59"
Print At 1, 12, "zeeman.59"                          
Print At 3, 1,  "Temp."       ; tekst op regel 3, display
Print At 4, 1,  "Inst."       ; tekst op regel 4, display

While 1 = 1
  Thermostaat = Pot Potmeter, 40             ; lees voor functie pot deel 5 
  If Thermostaat > 60 Then Thermostaat = 60  ; max tot 30 graden instelbaar (60/2)

  OWrite DS1820, 1, [SkipROM, Convert]       ; temperatuur meten
  OWrite DS1820, 1, [SkipROM, RdScratchPad]  ; Zend opdracht
  ORead  DS1820, 2, [Temperatuur]            ; lees temperatuur  

  Print At 3, 7,  @Temperatuur / 2, ".", Dec1 (Temperatuur // 2) * 5, Graad, "C"
 *** HRSOut @Temperatuur / 2, ".", Dec1 (Temperatuur // 2) * 5, Graad, "C"***       
  
  Print At 4, 7, @Thermostaat / 2, ".", Dec1 (Thermostaat // 2) * 5, Graad, "C"
  If Temperatuur < Thermostaat Then Uitgang = HOOG ; uitgang hoog (aan) als temp te laag is
  If Temperatuur > Thermostaat Then Uitgang = LAAG ; uitgang laag (uit) als temp te hoog is

  DelayMS 500                                
Wend

Wat bedoel je met 'blijft doorlopen'?
(serieel moet je dezelfde temperatuur krijgen als op het display)

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

temperatuur is zichtbaar in lcd en in hyperterminal komt temperatuur ook in beeld maar wordt steeds achter elkaar gezet i.p.v. 1 temperatuur. {v.b;23.5 23.5 .22.0 22.0 enz)

Lambiek

Special Member

14 posten terug staat een voorbeeld.

Als je haar maar goed zit, GROETEN LAMBIEK.

2Lambiek: mijn excuus heb niet verder gekeken dat mijn neus lang was.
heb in een eerder programma de ,8,8,8 gebruikt en dat werkte en heb nooit meer aan het andere voorbeeld gedacht.