Anda di halaman 1dari 16

DISPOSITIVOS PERIFRICOS

Timer0: Temporizadorcontador de 8 bits con


preescaler de 8 bits
Timer1: Temporizadorcontador de 16 bits con
preescaler que puede
incrementarse en modo sleep
de forma externa por un
cristal/clock.
Timer2: Temporizadorcontador de 8 bits con
preescaler y postscaler.
Dos mdulos de Captura,
Comparacin, PWM (Modulacin
de Ancho de Pulsos).
Conversor A/D de 1 0 bits.
Puerto Serie Sncrono Master
(MSSP) con SPI e I2C
(Master/Slave).
USART/SCI (Universal
Syncheronus Asynchronous
Receiver Transmitter) con 9 bit.

En el microcontrolador PIC16F877, cada canal de


conversin A/D est conectado a un pin ubicado
en el puerto A y en el puerto E. Por ejemplo, el
canal AN0 corresponde al pin # 2 del
microcontrolador, o expresado de otra manera,
al pin RA0 del puerto A. El canal AN1
corresponde al pin # 3; el canal AN2 corresponde
al pin # 4 y as sucesivamente; entonces se puede
ver claramente que el puerto A cuenta con cinco
de los ocho canales del conversor A/D, y los
otros tres canales estn ubicados en los pines
correspondientes al puerto E del
microcontrolador.

Un punto importante a considerar al momento de


utilizar el convertidor A/D, ser decidir si la
conversin se har configurando el conversor a 8
o 10 bits, con lo cual a su vez estaremos
definiendo la resolucin en el proceso de
conversin.
Esto significa que si elegimos la conversin de
una seal analgica a solo 8 bits (28 = 256), los
valores digitales resultantes de la conversin
estarn comprendidos entre 0 y 255 (en binario
es de 00000000 hasta 11111111)

Si configuramos el conversor A/D a 8 bits e


introducimos una seal cuya amplitud vara
entre 0 y 5 voltios, y donde el voltaje de
referencia del conversor es 5 voltios,
entonces la resolucin que obtendremos en la
conversin sera la siguiente:

Esto significa que la resolucin a 8 bits para el ejemplo planteado


es de 20 mV por cada paso que da el conversor A/D entre 0 y
255.

Lo primero, ser configurar los canales de


entrada que utilizaremos para introducir la
seal analgica al conversor A/D y los
canales para voltajes de referencia, en el caso
de ser necesario. Esto se hace seleccionando
la combinacin correspondiente en los bits
PCFG3, PCFG2 PCFG1 y PCFG0 del registro de
control ADCON1

El segundo paso ser activar el canal en el


cual se encuentra presente la seal analgica
para que pase a la etapa de muestreo. La
seleccin de las entradas analgicas se
realiza configurando los bits CHS2 (bit 5),
CHS1 (bit 4) y CHS0 (bit 3) del registro
ADCON0

ADCin
Sintaxis: ADCin canal, Variable
Esta instruccin solo es vlida para
microcontroladores que tienen convertidor
A/D, por ejemplo, el PIC16F877, el
PIC18F442, el PIC18F452, el PIC18F458 entre
otros.
Por ejemplo: ADCin 0, temperatura

Significa que el resultado de la conversin de una seal presente en la


entrada AN0 ser almacenado en la variable temperatura, la cual ha
sido
previamente definida en el programa.
Aunque la instruccin ADCin se encarga de controlar el registro

ADCON0

ahorrando algunas lneas de programa, consideramos conveniente


hacer una
revisin de los registros de control del conversor A/D

Bit 7 y Bit 6: Seleccin del reloj del conversor


A/D.
Bit 5, Bit 4 y Bit 3: Seleccin del canal de entrada.
Bit 2: Estado de la conversin.
GO/DONE: Solo funciona si ADON = 1
1 = Conversin A/D en progreso.
0 = Conversin A/D detenida.
Bit 1: Este bit no est implementado.
Bit 0: Enciende el conversor A/D.
1 = conversor A/D encendido.
0 = conversor A/D apagado.

Bit 7: Justificacin del resultado de la conversin


a 10 bits a la derecha o izquierda.
1 = Justifica a la derecha.
0 = Justifica a la Izquierda.
Bit 6 al Bit 4: No estn implementados.
Bit3, Bit 2, Bit 1 y Bit 0: Configuracin
Para definir en un programa si la conversin A/D
se har a 8 bits o a 10 bits,
se deben utilizar las siguientes directivas:
Conversin a 8 Bits:
Define ADC_BITS 8

Para empezar a desarrollar el prximo


proyecto usando conversor A/D del pic
16f877A ya que leeremos el famoso sensor
de temperatura lm35. y visualizaremos su
valor en un LCD .Todo ello para entender los
comandos del cdigo que se desarrollara en
basic pro.

El LM35 es un sensor de temperatura con una precisin


calibrada de 1C y un rango que abarca desde -55 a +
150C. La salida es lineal y equivale a 10 mV/C.
Precisin de : ~1,5C (peor caso)
No linealidad : ~0,5C (peor caso)
Su tensin de salida es linealmente proporcional con la
temperatura en la escala Celsius (centgrada) . Posee una
precisin aceptable para la aplicacin requerida, no
necesita calibracin externa y es de bajo costo. Funciona
en el rango de alimentacin comprendido entre 4 y 30
voltios. Tiene tres pines: alimentacin, tierra y salida
anloga

@ device xt_osc
Define osc 4

; oscilador externo XT

; Definicin de conexiones del LCD


DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
(RB0,RB1,RB2,RB3)
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 4
(RB4)
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5
(Rb5)
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

; LCD bits de comunicacin al LCD


; Conexin puerto B
; LCD bit RS conectado a PORTB
; LCD bit RS conectado a puerto B
; LCD bit E conectado a PORTB
; LCD bit E conectado a puerto B

; LCD comunicado 4Bits


; LCD de 2 lneas

DEFINE ADC_BITS 8
; numero de bit conversin A/D
DEFINE ADC_CLOCK 3
; reloj interno RC usado en
conversin A/D
DEFINE ADC_SAMPLEUS 50
; tiempo de conversin en Us
; Creacin de Variables
Sensar Var Word
; Variable donde se guarda el resultado de
conversion A/D
Temp Var Byte
; Temperatura en grados centigfrados (C)
TRISA =1
; RA0 (AN0) es donde se conecta pin OUT del
LM35
TRISB =0
; PORTB es salida

PAUSE 500
; 0.5s para inicializar LDC
; inicializacin conversor A/D
ADCON1 = 0
; ANO entrada anloga
ADCON0 = %11000001
LCDOUT $FE, 1

;limpiar LCD

inicio:
ADCIN 0,Sensar
variable sensar

;Lee canal 0 y guardar en

Temp = 2*sensar
;Conversin a grados
centigrados
LCDOUT $FE,2,"TEMPERATURA:",DEC2
Temp,"C" ;mostrar valor decimal en LCD
PAUSE 1000
GOTO inicio
END

Realizar un programa de voltmetro con pic


de tension (0-5VDC) e ilustracin en
' LCD con 2 decimas a travs de pic 16f877A.

Anda mungkin juga menyukai