Vai al contenuto
PLC Forum


Rs232 Aiuto Ancora - RS232 TX


matmor

Messaggi consigliati

Salve è da poco che lavoro con i pic

ancora menocon la rs232

ho aquistato un display a segmenti rs232

nelle istruzione mi si chiede di inviare la stringa di 5 byte

chr$(13) iniz. per laricezione

chr$(1) identifica id display

chr$(65) comando specifico display

chr$(48) carattere"0"

chr$(129) checksum

Il risultato dovrebbe essere "0"

Ho realizzato questo programma con un pic 16f877a su la demo board easypic3

che ha gia incorporato un max232 per la conversione delle tensioni etc.

con il display non succede assolutamente niente

cosi ho provato a collegare la demoboard con il mio programmino al pc

attraversol'usart terminal ho visto che i dati mi arrivano in questaposizione

13

1

65

48

129

è sbagliato il programma? o c'è qualcosa che non va con il display????

GRAZIE

program adcusart

dim i as byte

dim temp_res as byte

dim data as byte[5]

main:

UsART_init(2400) ' initalize USART (9600 baud rate, 1 stop bit, ...

'''' select Vref and analog inputs, in order to use ADC_read '''''''/

'ADCON1 = 0 ' all porta pins as analog, VDD as Vref

'TRISA = 0xFF ' all porta pins as inputs

''''''''''''''''''''''''''''''''''''''''

data[0]=13

data[1]= 1

data[2]=65

data[3]= 48

data[4]= 129

i=0 ' read conversion result and push

delay_ms(5)

for i=0 to 4

' upper byte to temp_res

UsART_Write(data) ' send temp_res via USART

next i

end.

Link al commento
Condividi su altri siti


ciao a tutti

visto che ancoranessuno mi ha dato una risposta

ripropongo la domana

io vorrei inviare via rs232 questa stringa

chr$13

chr$1

chr$65

chr$48

chr$129

come faccio???

Link al commento
Condividi su altri siti

ho provato

in tutte le salse non accade niente

in pratica io voglio comandare un display rs232

con il pic

ho provato tramitepc

ma non succede niente

ho un'altro topic dove descrivoil tutto

Link al commento
Condividi su altri siti

Ciao matmor,

scusami per il ritardo...

Utilizzando Visual Basic 6 dovresti fare quanto segue:

1) Creare un progetto "exe standard"

2) Nel form devi inserire un "commandbutton" ed il componente "MSComm"

2.1) Per inserire "MSComm" devi procedere così:

Progetto --> Componenti --> (Scheda Controlli) --> Microsoft Comm Control 6.0

3) Inserire nel codice del form ( Visualizza --> Codice ) le seguenti righe:

Private Sub Command1_Click()

MSComm1.CommPort = 1 'numero della porta com

MSComm1.PortOpen = True

MSComm1.Output = Chr$(13)

'Sleep (20) 'da utilizzare solo se richiesto ritardo

MSComm1.Output = Chr$(1)

'sleep (20)

MSComm1.Output = Chr$(65)

'sleep (20)

MSComm1.Output = Chr$(48)

'sleep (20)

MSComm1.Output = Chr$(129)

'sleep (20)

MSComm1.PortOpen = False

End Sub

4) Inserire un nuovo modulo ( Progetto --> Inserisci modulo ) ed aggiungere il codice:

Declare Sub Sleep Lib "kernel32" (ByVal millisecondi As Long)

5) Avviare

Come puoi notare, nel codice del form la funzione Sleep non viene eseguita ( apostrofo ); questa funzione è stata inserita perchè forse è necessario generare dei ritardi fra l'invio di un byte e l'altro.

Se funziona senza il ritardo puoi anche eliminare le righe di codice 'Sleep ed il modulo aggiunto.

Se voui utilizzare l'Hyperterminal devi usare il tasto ALT+"numero" prima di inviare byte più piccoli di 32, ad esempio:

chr$(13) = ALT+13

Spero di essere stato d'aiuto.

Modificato: da PicPassion
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...