ik heb een schakeling waar een binaire code uitkomt van maximaal 1111. nou moet deze code omgezet worden naar een serieel signaal voor een pc. Weet iemand hier een schakeling voor of is er een bepaald IC voor??
Willie Worteltje
Er zijn 10 soorten mensen. Mensen die binair begrijpen en mensen die het niet begrijpen... http://home.versatel.nl/edithenwilliam/william.htm
Ik zou het doen met een microcontrollertje met een hardware uart. Bijv een PIC16F628. Met een klein programmaatje ben je er al.
hier een klein schemaatje
volgende aanpassing
signalen aansluiten op
bit0 op pin17
bit1 op pin18
bit2 op pin1
bit3 op pin2
start verzenden op pin3
Gebruik ook 5 weerstanden van 10k om de ingangen naar 0 te trekken voor als er geen input is. Tenzij de ingangen echt 0(0V) of 1(5V) zijn.
Op pin 6 kan een ledje worden aangesloten die aangeeft of
input start verzenden hoog is.
En de code
;*******************************************************************
; Function: Sends alive message, then echoes characters at 9600 bps
; Processor: PIC16F628 at 4 MHz using internal RC oscillator
;*******************************************************************
LIST P=16F628 ; Use the PIC16F628
#include "P16F628.INC" ; Include header file
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
CBLOCK 0x20 ; Declare variable addresses starting at 0x20
dataL
ENDC
ORG 0x000 ; Program starts at 0x000
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
movlw 7
movwf CMCON ; CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; set up portA
movwf PORTA
movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0xFF
movwf TRISA ; portA all pins input
movlw b'00000010' ; RB1(RX)=input, others output
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh
bcf STATUS,RP0 ; RAM PAGE 0
movlw b'10010000' ; enable Async Reception
movwf RCSTA
movf RCREG,W
movf RCREG,W
movf RCREG,W ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
loop btfss PORTA,4 ; mag informatie verzonden worden ?
goto loop
bsf PORTB,0 ; led aan
movf PORTA,w ; haal de informatie van de ingangen
andlw 0x0F ; alleen de eerste 4
call send ; send the char
loop2 btfsc PORTA,4 ; klaar met zenden?
goto loop2
bcf PORTB,0 ; led uit
goto loop
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send movwf TXREG ; send data in W
TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere
bcf STATUS,RP0 ; RAM PAGE 0
return
end
EDIT:
Je hebt wel een programmer nodig en software.
Software is gratis en programmer niet moeilijk.
Hier op circuitsonline staat schema en link naar software
of kijk hier eens
http://home.versatel.nl/edithenwilliam/william.htm
en ga naar pic start