Prove di input analogico

 
3.1 Gestione ADC TLC548 con scheda 8051

Schema elettrico

 

Software

;Etichette
CS equ P1.0
CLK equ P1.1
DOUT equ P1.2


org 8200h
init:
  setb CS
  clr CLK
  setb DOUT 


main:
  call lettadc
  mov 10h,a
  jmp main


;++++++++++++++ Subroutine lettura ADC seriale TLC548 ++++++++++++++++++++++++
;Il valore letto ritorna sul registro A
lettadc:
  mov r0,#8
  clr CS
loopcv: 
  mov c,DOUT
  rlc a
  setb CLK
  clr CLK
  djnz r0,loopcv
  setb CS
  ret

end


3.2 Analisi della risposta nel tempo di un quadripolo RC

  1. Realizzare un software in  assembler che registri in memoria esterna della scheda 8051 la riposta in tensione del  quadripolo RC in funzione di un'onda quadra 0..5V applicata all'ingresso.
    L'onda quadra deve essere riprodotta dall'uscita P1.3 tramite software, scegliere le tempistiche giuste per effettuare la registrazione della risposta nell'intero periodo dell'onda quadra con 200 campioni.
    Carica e  scarica del condensatore devono essere complete.

  2. Prelevare i dati registrati tramite l'apposito tool su DB8051 ed inserirli su foglio elettronico e riprodurre il grafico dell'andamento della tensione di uscita in funzione del tempo.

  3. Rilevare il tempo di campionamento tramite oscilloscopio misurando il semiperiodo di P1.7 il quale dovrÓ essere complementato via software  prima o dopo la chiamata della subroutine di ritardo campionamento (rit_cp).
    N.B per ottenere una lettura stabile occorre eseguire il loop di acquisizione all'infinito.    

  4. Individuare sul grafico la costante di tempo e verificarne l'esattezza con i calcoli teorici

  5. Ripetere i punti precedenti scambiando il condensatore con la resistenza.
      

Software

;Etichette
CS = P1.0
CLK = P1.1
DATA = P1.2
QUADRA = P1.3
BUFFER = 9000h
NCAMP_SP = 100

org 8200h
;+++++++++++++++++++ Inizializzazione ++++++++++++++++++++++++
init:
  setb CS
  clr CLK
  setb DATA
  clr QUADRA           ;Metto a zero l'ingresso dell'RC
  call rit_start       ;ed aspetto la scarica di C  
  mov dptr,#BUFFER

main:
  mov r1,#NCAMP_SP
  call lettadc
  setb QUADRA
  call lettadc

;+++++++++++++++++++ Acquisizione Vc di carica ++++++++++++++++++++++++
alto:
  call lettadc
  movx @dptr,a
  inc dptr
  call rit_cp
  djnz r1,alto

  mov r1,#NCAMP_SP
  clr QUADRA
;+++++++++++++++++++ Acquisizione Vc di scarica ++++++++++++++++++++++++
basso:
  call lettadc
  movx @dptr,a
  inc dptr
  call rit_cp
  djnz r1,basso
;+++++++++++++++++++ stop ++++++++++++++++++++++++
  jmp $

;+++++++++++++++++++ Ritardo per scarica condensatore ++++++++++++++++++++++++
rit_start:
ret
;+++++++++++++++++++ Ritardo di campionamento+++++++++++++++++++++++++++++++++
rit_cp:
ret

;++++++++++++++ Subroutine lettura ADC seriale TLC548 ++++++++++++++++++++++++
;Il valore letto ritorna sul registro A
lettadc:
  mov r0,#8
  clr CS
loopcv:
  mov c,DATA
  rlc a
  setb CLK
  clr CLK
  djnz r0,loopcv
  setb CS
  ret
end