Goedendag,
mijn "grote" verlangen is om met de pc een LCD te voorzien van content. Tekst!
Daarbij wil ik graag werken met een com-poort, een HD44780 compatible LCD (2x16) en een PIC 16F628A omdat ik deze spullen heb liggen en omdat ik Proton LITE gebruik.
Het gaat om de hardware kant en de software voor de PIC.
Nu ben ik al een tijd bezig om te proberen om dit voorelkaar te krijgen. Ik heb bijvoorbeeld het volgende schema geprobeerd: Klikkerdeklik. Dit werkt opzich prima, alleen kan ik het programma niet aanpassen enzo.
Ook heb ik gezocht op UART, maar wat ik daar nu in de praktijk precies mee kan of moet is me een beetje (lees:totaal) onduidelijk.
Het bouwen van de schakelingen is geen probleem. Ook het aansluiten van de LCD op de PIC is geen probleem (Thnx to Frits K)
De grote vraag is dus eigenlijk: hoe krijg ik communicatie op gang tussen pc en PIC met RS232. Ook wil ik dit over een tijd gaan gebruiken om met een PIC een RS232 compatible apparaat aan te sturen (bv een cd speler).
Wie helpt me verder!
Via de printerpoort heb je niet eens een PIC nodig 
( Dat is ook een compoort toch? )
[Bericht gewijzigd door Boeip op (25%)]
RoelA
Resistance is futile (If < 1 Ohm)
Op 4 januari 2009 17:06:06 schreef ruurdadema:
Ook heb ik gezocht op UART, maar wat ik daar nu in de praktijk precies mee kan of moet is me een beetje (lees:totaal) onduidelijk.
Uart - Universal asynchronous receiver/transmitter. Zender en ontvanger van tekens, in botte vertaling.. 
En manier waarop jou PC en je PIC met elkaar gaan communiceren.
Je kunt dan, net zoals op in link met hyperterminal of een ander terminal programma met je PIC communiceren. Hiervoor zul je wel een User Interface op je PIC moeten programmeren.
Dit zul je moeten doen met de proton set, zal vast wel een print en input instructie inzitten.
Anoniem
http://www.instructables.com/id/Display-lcd-chip-hd44780-for-pc-moddin…
mischien heb je hier wat aan voor je lcd aan de pc
Bedankt voor de snelle reacties
@Boeip: waarom via een LPT in plaats van een COMpoort?
@Marco: ik wil het eigenlijk toch wel houden bij PIC...Dat spul heb ik liggen en kan ik redelijk programmeren.
@RoelA: Dat gaat de goede richting op volgens mij: kun je het eens gedetailleerder uiteleggen?
Kijk, ik snap de opbouw van een RS232 protocol ongeveer (Bit treinen, met start en stopbits enzo, maar daarmee kan ik het nog niet realiseren. Als ik via Hyperterminal "Hello World" wegstuur dan moet mijn PIC dat kunnen uitlezen en op het lcd zetten. Dat laatste is het probleem niet, dat eerste wel. Hoe doe ik dat?
Ik kan wel een stukje uit mijn boek over PIC microcontrollers van Bert van Dam overtikken/scannen met OCR voor je. staat een heleboel info in over RS232 communicatie (vooral via de WISP programmer, maar ook met een MAX232). De LCD aansturen via PROTON is heel erg simpel (zit volgensmij zelfs een voorbeeldje bij).
Wat je eigenlijk wilt doen is een verbinding maken met je seriele poort (Printerpoort is parallel dus GEEN RS232). Dit kun je in Visual Basic 6 erg makkelijk doen.
Nadeel is dat VB nogal duur is.
Ik help er graag mee.
Om alleen een LCD aan te sturen kan je de printerpoort gebruiken. Maar ik lees ook dat je later grotere plannen hebt met computer en lcd. Ik denk dat de printerpoort het dan niet meer aan kan
Ik gaf even aan dat je een lcd makkelijker via de printerpoort kan aan te sturen dan via een compoort.
Kijk, erg fijn de reacties!
@Boeip: wat je zegt is juist, ik wil het inderdaad graag via RS232 doen om later meer "grote plannen" te realiseren
Via de link hangen ze ook een LCD rechtstreeks aan de LPT. Nadeel is ook dat binnenkort mijn LPT vol zit met een (nog te bedenken en bouwen) relaisprint.
(je weet hoe dat gaat, allemaal wilde ideeën om van alles en nog wat met de LPT te schakelen en dan ook nog via internet enzo blabla)
@Termination: Dat klinkt wel heel erg super. Overtikken vind ik wel heel veel gevraagd, maar die OCR maakt het wel aantrekkelijker. En dan vooral het stukje over RS232 i.c.m. MAX232. En een voorbeeld zou helemaal geweldig zijn! Qua software gebruik ik liever Delphi, omdat ik daar bekend mee ben. Zal vast wel duurder zijn dan VB, maar iNet is gewillig
.
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Nadeel is dat VB nogal duur is.
Ik help er graag mee.
VB2005 Express en VB2008 Express kun je gratis d/l.
http://msdn.microsoft.com/nl-nl/vbasic/default(en-us).aspx
Uit eigen ervaring weet ik dat je met VB2005 Express prima software kan maken die via de seriële poort interfaced met een uC.
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 2-1-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
device 16f877a
CONFIG hs_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, DEBUG_OFF
xtal 20
ALL_DIGITAL TRUE
PORTB_PULLUPS ON
;*************************************************************************************************************
; Alle byte's enz.
;*************************************************************************************************************
dim ontvangst as byte
;*************************************************************************************************************
; symbols
;*************************************************************************************************************
symbol relay = portD.7
symbol flash_led = portD.6
SYMBOL AAN = 0 ;Geinverteerd AAN
SYMBOL OFF = 0 ;UIT
SYMBOL ON = 1 ;AAN
SYMBOL UIT = 1 ;Geinverteerd UIT
;*************************************************************************************************************
; Declares
;*************************************************************************************************************
;*************************************************************************************************************
; Baudrate instellingen rs232 9600,8,N,1
;*************************************************************************************************************
HSERIAL_BAUD = 9600 ; Set baud rate
HSERIAL_RCSTA = %10010000 ; Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000 ; Enable transmit and asynchronous mode
HSERIAL_CLEAR = ON ; Optionally clear the buffer before receiving
;*************************************************************************************************************
; Interrupt
;*************************************************************************************************************
main:
INTCON.7 = 1 ; Enable Global Interrupts
INTCON.6 = 1 ; Enable Peripheral Interrupts
PIE1.5 = 1 ; Enable UART Rx Interrupt
ON_INTERRUPT GOTO INT ; If there is UART activity: goto INT
GOTO flash ; Skip INT, goto main program
;*************************************************************************************************************
; Hier het hoofdmenu:
;*************************************************************************************************************
INT:
while 1 = 1 'while 1 is 1 then stay in this loop
HRSIN dec ontvangst
if ontvangst = 1 then toggle relay
if ontvangst = 0 Then hrsout "HoiHoi" ,13,10
CONTEXT RESTORE ; Restore the registers and exit
GOTO main ; Goto start so INT will be used again
wend
;*************************************************************************************************************
; Zolang dit ledje aan/uit gaat is er geen RS232 activiteit:
;*************************************************************************************************************
flash:
while 1 = 1
toggle flash_led
delayms 100
wend
End
Hier dit is meest simpele code om met uart/rs232 te werken met intterrupt erin
Voor Proton IDE
Ik zie dat mensen me al weer voor zijn.
De display aansturen vanuit proton is iig erg makkelijk, daar zijn ingebakken routines voor.
Volgensmij alleen de breedte/hoogte instellen en het type LCD definieren, poortjes toewijzen en klaar.
Als het HD44780 is is het gewoon
print at 1,1, "Tekst"
Of voor regel 2
print at 2,1, "Tekst"
Zie ook >> http://www.picbasic.nl/beginners4.htm
Dat is bij mij bekend, en dat is ook niet het probleem. Daar gaat dit topic niet over. Daarentegen vind ik je code wel heel erg handig. Bedankt!
[Bericht gewijzigd door Henry S. op (47%)]
Zo, nou, dus...
Tot mijn grote verrassing zit er in de help van Proton een hele lijst met commando's. (YES)
Dus ik zie SEROUT staan. Ik lezen, en jah, dat zou toch moeten gaan werken.
Voor de zekerheid declareer ik de databits nog even:
DECLARE SERIAL_DATA 8 ' Set SEROUT and SERIN data bits to 8 (default)
Om vervolgens wat uit de uitgang te poepen:
SEROUT PORTB.2 , 9600 , [ "HELLO WORLD" , 13 ]
Maar wat denkje: er komt dus gewoon helemaal niets binnen op de hyperterminal. Wat doe ik fout? Wat vergeet ik?
RoelA
Resistance is futile (If < 1 Ohm)
Dan beginnen we bij 0:
Lijnen vanaf je max232 naar je pic loshalen en R1OUT en T1IN aan elkaar knopen. Dat zijn dus de lijnen die normaal naar je pic lopen, je krijgt zo een loopback.
Als je nu in met hyperterm iets intypt dan krijg je als het goed is de tekst meteen terug. Maakt niet uit welke bitrate je gebruikt, 9600 8-n-1 zou moeten werken.
Mocht dat niet werken dan moet je even je max232 schema even nakijken.
Als dat werkt, pinnen weer aansluiten en kijken of je niets vergeten bent.
Misschien \r\n aan je serout toevoegen, kan zijn dat hyperterm een enter nodig heeft voor ie iets laat zien.
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 2-1-2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE
PORTB_PULLUPS ON
;*************************************************************************************************************
; Baudrate instellingen rs232 9600,8,N,1
;*************************************************************************************************************
HSERIAL_BAUD = 9600 ; Set baud rate
HSERIAL_RCSTA = %10010000 ; Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000 ; Enable transmit and asynchronous mode
HSERIAL_CLEAR = ON ; Optionally clear the buffer before receiving
;*************************************************************************************************************
; Hier het hoofdmenu:
;*************************************************************************************************************
while 1 = 1
hrsout "HoiHoi" ,13,10
wend
endCompile deze code eens en zet je hyperterminal op 9600, 8, n, 1
Dan krijg je heel snel achterelkaar HoiHoi te zien
Eerst Hyperterminal opstarten dan Schakeling aanzetten anders werkt het niet 
Enige verschil is hier dat je Hardware Uart gebruikt ipv Software Uart.
De loopback op de compoort werkt prima
EDIT: ik gebruik overigens het schema volgens:
http://www.oz1bxm.dk/PIC/628uart.htm
En dan alleen het MAX232 gedeelte...
[Bericht gewijzigd door ruurdadema op (44%)]
Schema zou gewoon moeten werken ?
Dit zou je in Hyperterminal moeten zien >> http://img178.imageshack.us/img178/1328/hoihoiwg9.jpg
Alleen MAX232 gedeelte? Dus zonder PIC? Dat gaat vrees ik niet veel doen 
Gebruik dat volledige schema maar
Op 4 januari 2009 23:10:21 schreef Gerwinh:
Schema zou gewoon moeten werken ?Dit zou je in Hyperterminal moeten zien >> http://img178.imageshack.us/img178/1328/hoihoiwg9.jpg
Ik zie op je screendump ook een stukje bumblebee... Is dat de hex van je net gemaakte stukje software? Ik krijg n.l. een hele andere hex file...
Maar tot op heden nog geen succes. Nog andere suggesties?
Op 4 januari 2009 23:12:06 schreef Twabi2:
Alleen MAX232 gedeelte? Dus zonder PIC? Dat gaat vrees ik niet veel doen
Gebruik dat volledige schema maar
Alleen even om de loopback te testen. Uiteraard i.c.m. de code met de pic erbij...
[Bericht gewijzigd door Henry S. op (25%)]
000000 000000 00 00 00 30 8A 00 15 28 0C 1E 04 28 99 00 03 14
000010 000008 10 28 83 17 80 01 84 0A FF 3E 03 1D 0A 28 10 28
000020 000010 83 13 83 12 03 13 00 00 08 00 83 16 20 30 99 00
000030 000018 20 30 98 00 83 12 90 30 98 00 A0 01 07 30 83 16
000040 000020 9C 00 07 30 9F 00 81 13 20 30 84 00 60 30 83 12
000050 000028 8A 01 0A 20 A0 30 84 00 50 30 8A 01 0A 20 10 30
000060 000030 84 00 60 30 8A 01 09 20 90 30 84 00 60 30 8A 01
000070 000038 09 20 83 16 85 01 83 12 48 30 8A 01 04 20 6F 30
000080 000040 8A 01 04 20 69 30 8A 01 04 20 48 30 8A 01 04 20
000090 000048 6F 30 8A 01 04 20 69 30 8A 01 04 20 0D 30 8A 01
0000A0 000050 04 20 0A 30 8A 01 04 20 8A 01 3B 28 63 00 8A 01
0000B0 000058 56 28
00400E 002007 72 3F
Lijkt me vreemd maar hier heb je hem alsnog 