El documento describe un curso sobre el desarrollo de aplicaciones con el microcontrolador PIC16F886. Cubre temas como las características técnicas del PIC16F886, entradas y salidas digitales y analógicas, periféricos, y una introducción a la programación. Incluye 21 prácticas sobre el uso de diferentes sensores, actuadores y periféricos conectados al PIC16F886.
2. • Introducción a los microcontroladores
• Características técnicas PIC16f886
• Entradas / Salidas digitales
• Entradas analógicas
• Salidas PWM
• Revisión del kit IDETEC
• Sensores
• Actuadores
• Periféricos
• Introducción a programación de microcontroladores en módulos PIC16F886
• IDE desarrollo
• Creación de un nuevo proyecto
• Librerías y Sentencias
• Prácticas
Contenido
vasanza
3. Prácticas1. Entradas y Salidas Digitales
2. Uso Del Adc y Led
3. Uso Display y Botón
4. Uso Display_2dig y Botón
5. Uso Teclado y Display
6. Módulo Lcd
7. Tacómetro_uart
8. Disparador de Relay
9. Buzzer y Teclado
10. Control de Servo Motor
11. Uso Ultrasonico Hy-srf05
12. Control de Servo Motor Con Teclado
13. Control de Servo Motor por Teclado y Visualizacion de Grados en Display 7 Segmentos
14. Ldr y Led
15. Led Rgb
16. Uso Ultrasonico Hy-srf05 y Lcd
17. Modulo Lcd y Uart
18. Sensor Temperatura Ds18b20 y Display
19. SENSOR TEMPERATURA DS18B20 y LCD
20. SENSOR TEMPERATURA DS18B20 y UART
21. LDR y LCD
22. LDR y UARTvasanza
4. Planificación
Sesión Prácticas Sesión Prácticas
1 1. Entradas y Salidas Digitales
2. Uso Del Adc y Led
6 11. Uso Ultrasonico Hy-srf05
12. Control de Servo Motor Con Teclado
2 3. Uso Display y Botón
4. Uso Display_2dig y Botón
7 13. Control de Servo Motor por Teclado y Visualizacion de
Grados en Display 7 Segmentos
14. Ldr y Led
3 5. Uso Teclado y Display
6. Módulo Lcd
8 15. Led Rgb
16. Uso Ultrasonico Hy-srf05 y Lcd
17. Modulo Lcd y Uart
4 7. Tacómetro_uart
8. Disparador de Relay
9 18. Sensor Temperatura Ds18b20 y Display
19. SENSOR TEMPERATURA DS18B20 y LCD
5 9. Buzzer y Teclado
10. Control de Servo Motor
10 20. SENSOR TEMPERATURA DS18B20 y UART
21. LDR y LCD
22. LDR y UART
vasanza
6. Práctica: Uso de Teclado y Display de 2 Dígitos
Objetivo
• Aprender hacer uso de dos display cátodo común y el teclado 4x4.
Duración
• 30min
Materiales
• Módulo de desarrollo PIC16F886
• Dos dislays 7 segmentos cátodo común
• Teclado numérico 4x4
Descripción
• El presente proyecto hace uso de dos displays cátodo común y un teclado 4x4.
• Vamos a implementar un programa que muestra el código de la tecla presionada en los display.
vasanza
7. Desarrollo
Para realizar la práctica planteada es necesario ubicar algunos JUMPER de tal manera que permita el uso
de los componentes necesarios para esta práctica.
1. El módulo Entrenamiento PIC16F886 puede utilizar una de dos fuentes de alimentación.
• Fuente de alimentación USB desde PC a través del cable USB.
• Fuente de alimentación EXT desde un Jack DC.
2. Para hacer uso del PIN A.0 como salida o entrada digital tenemos que ubicar el JUMPER que está
encima del potenciómetro en la posición DS (Disable=Deshabilitado) como se muestra en la figura.
vasanza
Práctica: Uso de Teclado y Display de 2 Dígitos
8. 3. Para hacer uso de los dos displays cátodo común y el teclado 4x4, colocamos los 8 pines (1-8) del
display en el PORTA y el teclado 4x4 en el PORTB del módulo PIC16F886 de tal manera que la
interconexiones queden de la siguiente manera:
• 1->PortA.7, 2-> PortA.6, 3-> PortA.5, 4-> PortA.4, 5-> PortA.3, 6-> PortA.2, 7-> PortA.1, 8-> PortA.0.
• EN_DIG1->PORTC.6 EN_DIG2->PORTC.7
vasanza
Conexión
Circuito
Práctica: Uso de Teclado y Display de 2 Dígitos
9. Código
'**********************************************************
'*********************** IDETEC ****************************
'*************Módulo Entrenamiento PIC16F886 ****************
'*************** www.ideastechnology.com********************
'
' * Nombre proyecto: TECLADO_DISPLAY_2DIG
'
' * Descripción:
' Muestra el código de la tecla que se ha presionada en el teclado4x4
' en los display
' * Configuraciones:
' Microcontrolador: PIC16F886
' Oscillator: INT_RC_OSC_NOCLKOUT, 8MHz
' Compilador: mikroBasic Pro for PC 3.2
'**********************************************************
*********************
program TECLADO_DISPLAY_2DIG
SYMBOL EN_DIG1=PORTC.6 'HABILITADO DISPLAY DIGITO1
SYMBOL EN_DIG2=PORTC.7 'HABILITADO DISPLAY DIGITO2
DIM KP,VALOR ,FLAG AS BYTE
vasanza
sub procedure leer_teclado()
kp = 0
portb=%11101111 'EXPLORO FILA 1
if(portb.0=0)then 'EXPLORO COLUMNA1
while(portb.0=0) wend
kp=1 end if'1
if(portb.1=0)then 'EXPLORO COLUMNA2
while(portb.1=0) wend
kp=2 end if'2
if(portb.2=0)then 'EXPLORO COLUMNA3
while(portb.2=0) wend
kp=3 end if'3
if (portb.3=0)then 'EXPLORO COLUMNA4
while(portb.3=0) wend
kp=$41 end if’A
if(kp=0)then
portb=%11011111 'EXPLORO FILA 2
if(portb.0=0)then 'EXPLORO COLUMNA1
while(portb.0=0) wend
kp=4 end if’4
if(portb.1=0)then 'EXPLORO COLUMNA2
while(portb.1=0) wend
kp=5 end if'5
Práctica: Uso de Teclado y Display de 2 Dígitos
10. vasanza
if(kp=0)then
portb=%01111111 'EXPLORO FILA 4
if(portb.0=0)then 'EXPLORO COLUMNA1
while(portb.0=0) wend
kp=$23 end if '*
if(portb.1=0)then 'EXPLORO COLUMNA2
while(portb.1=0) wend
kp=48 end if'0
if(portb.2=0)then 'EXPLORO COLUMNA3
while(portb.2=0) wend
kp=$24 end if'#
if (portb.3=0)then 'EXPLORO COLUMNA4
while(portb.3=0) wend
kp=$44 end if'D
else return
end if
end sub
Práctica: Uso de Teclado y Display de 2 Dígitos
Código
if(portb.2=0)then 'EXPLORO COLUMNA3
while(portb.2=0) wend
kp=6 end if'6
if (portb.3=0)then 'EXPLORO COLUMNA4
while(portb.3=0) wend
kp=$42 end if'B
else return
end if
if(kp=0) then
portb=%10111111 'EXPLORO FILA 3
if(portb.0=0)then 'EXPLORO COLUMNA1
while(portb.0=0) wend
kp=7 end if'7
if(portb.1=0)then 'EXPLORO COLUMNA2
while(portb.1=0) wend
kp=8 end if'8
if(portb.2=0)then 'EXPLORO COLUMNA3
while(portb.2=0) wend
kp=9 end if'9
if (portb.3=0)then 'EXPLORO COLUMNA4
while(portb.3=0) wend
kp=$43 end if'C
else return
end if
11. vasanza
else
EN_DIG1=1
EN_DIG2=0
Delay_10us
PORTA=BCD_7SEG(VALOR/10)'HAGO LA CONVERSION DE BCD A 7SEG
end if
TMR0 = 204
INTCON = $A0 ' Set INTERRUPCION Y BANDERA DEL TMR0 (T0IE, T0IF )
end sub
Práctica: Uso de Teclado y Display de 2 Dígitos
Código
'************Funcion para convertir un valor BCD (0-9)*******************
'*****************Codigo 7 Seg catodo comun *************************
SUB FUNCTION BCD_7SEG(DIM num AS BYTE) AS BYTE
select case num
CASE 0 result = %11111100
CASE 1 result = %01100000
CASE 2 result = %11011010
CASE 3 result = %11110010
CASE 4 result = %01100110
CASE 5 result = %10110110
CASE 6 result = %10111110
CASE 7 result = %11100000
CASE 8 result = %11111110
CASE 9 result = %11110110
END SELECT 'case end
END SUB
sub procedure interrupt ' Interrupt service routine
flag= not(flag)
if(flag=255) then
EN_DIG1=0
EN_DIG2=1
Delay_10us
PORTA=BCD_7SEG(VALOR mod 10) 'HAGO LA CONVERSION DE BCD A 7SEG
12. vasanza
' Registro PUERTO E
TRISE = 0X00 ' PORTE como salidas digital
PORTE = 0X00
' Seleccion de registro analogico. 1 analógico, 0 digitales
ANSEL = 0X00 ' AN<7:0>
ANSELH = 0X00 ' AN<13:8>
VALOR=0
FLAG=0
KP=0
WHILE(1)
leer_teclado() 'EXPLORO TECLADO
if(kp > 0)then 'PREGUNTO SI HE PRESIONADO ALGUNA TECLA
VALOR =kp 'Guardo el Valor de la Tecla Presionada Para
'Visualizar en Display
end if
WEND
END.
Archivos
https://drive.google.com/open?id=1iLCF1C89h
eZwRaRIPKpUNRxBIat9olB7
Práctica: Uso de Teclado y Display de 2 Dígitos
Código
MAIN:
' Registro Oscilador de control
OSCCON = 0X75 ' Oscilador interno de 8mhz
' Registro de Opciones
' Registro de Opciones
OPTION_REG=%00000111 ' Desabilito resistores pull up y asigno prescaler to TMR0 (256)
TMR0 = 204 ' Timer0 initial value (Fosc/4)*prescalador*(256-TMRO) desborde= 6.656 ms
INTCON = %10100000 ' Enable TMRO interrupt
WPUB = $0F
' Registro PUERTO A
TRISA = 0X00 ' PORTA.0 Entrada
PORTA = 0X00
' Registro PUERTO B
TRISB = 0X0F ' PORTB salidas
PORTB = 0X00
' Registro PUERTO C
TRISC = 0X00 ' PORTC salidas
PORTC = 0X00
14. Fuente de alimentación
• Alimentación desde (5 - 25) VDC en el EXT (VIN 9V)
• Interruptor ON/OFF para energizar o des energizar al módulo de entrenamiento.
• Jumper (USB/ EXT) permite seleccionar la fuente que va alimentar al módulo la cual puede ser mediante el EXT (VIN 9V) o USB
que es la energía que se obtiene a través del puerto USB.
Módulo PIC16F886
vasanza
15. Microcontrolador PIC16F886
• 25/24 Pines Entradas/Salidas.
• Puertos (PORT A, B, C, E).
• Oscilador interno seleccionable entre (31KHZ – 8MHZ).
• Rango de voltaje de Operación (2 – 5.5) VDC
• 11 entradas analógicas con 10 bit de resolución.
• 3 Timers (Timer0 8bits, Timer1, 2 16bits).
• 2 PWM (CCP) de 10bits, frecuencia máx. 20KHZ
• Comunicaciones seriales sincrónicas MSSP (SPI (4 modos), I2C)
• Módulo USART (RS-485, RS-232 and LIN 2.0)
Reset (MCLR)
• Este botón posee un resistor pull up y está conectado al PIN MCLR.
• Para utilizar este botón es necesario que se lo habilite mediante software.
Módulo PIC16F886
vasanza
16. ICSP (Programación serial en circuito)
• Este conector IDC 3X2 se lo utiliza para cargar el código en el
microcontrolador usando cualquier programador con terminales ICSP.
Entradas/Salidas en Puertos A, B, C
Cada puerto tiene 8 pines correspondientes a los 8 bits, a cada bit se
denomina Señal I/O acompañada de pines de +Vcc y Gnd, donde Vcc puede
ser seleccionable es decir utilizar el voltaje interno del modulo entrenamiento
o externo mediante el Jack VDD.
• PORTA (0,1,2,3,4,5,6,7)
• PORTB (0,1,2,3,4,5,6,7)
• PORTC (0,1,2,3,4,5,6,7)22,4+3,95+0,8
Entradas Analógicas
AN0=RA0, AN1=RA1, AN2=RA2, AN3=RA3, AN4=RA5, AN8=RB2, AN9=RB3,
AN10=RB1
AN11=RB4, AN12=RB0, AN13=RB5
Módulo PIC16F886
vasanza
17. Led en PORTB
• Para utilizar los led del PORTB, debemos setear los pines de este puerto como
salidas, además debemos de habilitar el jumper LED (EN/DS). De esta manera
quedan habilitados todos los indicadores led del módulo de entrenamiento.
• Conexiones: LED0-> RB0 LED7-> RB7
• Jumper Led: EN Habilita todos los led conectándolos a GND.
• Jumper Led: DS Deshabilita todos los led.
Potenciómetro en PORTA
Para utilizar el potenciómetro del módulo de entrenamiento se debe colocar el
Jumper POT (EN/DS) tal como se indica en la figura de esta manera, el cual
permite conectar el Pin RA0 del PIC con el potenciómetro.
Mediante la variación del POT se producirá un voltaje analógico entre (0 – 5VDC)
el cual será enviado al PIN A0.
Módulo PIC16F886
vasanza
18. Control de motores DC
• El módulo de entrenamiento M.E I&T 04 permite controlar la dirección y
velocidad de motores DC.
• Para aquello se agregado un conector IDC de 5X2 compatible eléctricamente
con los módulos Puente H para motores DC.
• DIR1: RA2 NDIR1: RA4 DIR2: RA3
• NDIR2: RA5 PWM1: RC1 PWM2: RC2
• ADCISENA: RB1 ADCISENB: RB2
Control de Servomotor
Podemos conectar hasta 24 servomotores, debido a que a cada puerto se le
agrego pines de +Vcc y Gnd según el estándar de los servomotores los cuales
poseen 3 señales.
• Señal: Este pin necesita una señal PPM
• VDD/5V: Alimentación atraves del jack VDD si se requiere más corriente o se
utiliza el voltaje del modulo de entrenamiento 5V.
• GND: Tierra (0 VDC)
• Jumper VDD/5V: Permite seleccionar la fuente de alimentación para los
servomotores la cual puede ser la del módulo de entrenamiento o una externa
a través de JACK VDD.
Módulo PIC16F886
vasanza
19. Comunicación Serial UART/USB/FSK
Este módulo nos permite realizar varias aplicaciones con comunicación serial
por este motivo se le incorporo un modulo de comunicación UART-USB y de
radiofrecuencia UART-FSK. Mediante el Jumper USB-PIC-FSK podemos
realizar varias selecciones para diferentes configuraciones .
• PIC TX: Pin RC6 de transmisión de datos seriales UART
• PIC RX: Pin RC7 de recepción de datos seriales UART
Módulo PIC16F886
vasanza