Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETIVOS.
COMPETENCIAS.
INTRODUCCIÓN.
ENCABEZADO
1
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
Lectura y escritura de puertos. Puede usarse los puertos como salida o entrada o usar ciertos
bits de un puerto como entrada y los demás como salida. Deben definirse previamente la forma
de uso de un puerto (entrada o salida) antes de utilizarse.
El entrenador usa 2 puertos del PIC para la conversión analógica digital (RA0 y RA1).
En el encabezado del programa debe añadirse la siguiente línea para el uso del ADC.
2
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
ACTIVIDADES.
BIBLIOGRAFÍA:
o Manual de usuario - QL200 PIC DEVELOPMENT BOARD
o Curso de microcontroladores con PIC CCS C - https://youtube.com/playlist?list=PLF-
qcfymUY4VvPaoquGoQ5auW_n968P4N
ENLACES:
o Enlace para la instalación de PIC C compiler - https://www.youtube.com/watch?v=7tGDmYwoYPE
o Archivos de código fuente, simulaciones y hoja de datos del entrenador QL200 -
https://drive.google.com/file/d/160NwAUDS9rNmYBi03ZBYhiqkV8HhQzcx/view?usp=share_link
o Los programas tienen la extensión “.c” y las simulaciones en Proteus “.pdsprj”.
LABORATORIO.
Se realizará un contador en decimal de 2 dígitos usando los visores de 7 segmentos del entrenador
y pulsadores para controlar subir o disminuir la cuenta.
Cada entrada de control habilita (con un cero lógico) el despliegue del dato en el puerto D en el
visor correspondiente, por lo que debe usarse multicanalización para desplegar un digito en un visor
a la vez a gran velocidad para lograr retención en el ojo humano.
Se usará los 2 primeros visores con sus señales de control en los bits RA0 y RA1 del puerto A.
3
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
El diagrama esquemático (Figura 2) del módulo de pulsadores muestra que 4 de ellos están
conectados al puerto B (RB0 a RB3) y los otros 4 al puerto A (RA0 a RA3). Se usarán los 2 pulsadores
conectados a RB0 Y RB1 con lógica positiva.
Figura 2 - Pulsadores
//puertos a usar
#BYTE PORTA= 5
#BYTE PORTB= 6
#BYTE PORTD= 8
4
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
//*********FUNCIONES AUXILIARES**************
VOID MOSTRAR( ) //FUNCION mostrar el valor del contador en los 2 visores
{
INT UNI,DEC; //Declarar las variables UNIDADES, DECENAS
//como un entero, es decir de 8bits
DEC=CONT/10;
UNI=CONT%10;
PORTD=(DISPLAY[UNI]); //Muestra lo que hay en unidades
//en el display
BIT_CLEAR(TUNI); //Enciende el display de unidades
DELAY_MS(20); //Retardo de 1 milisegundos
BIT_SET(TUNI); //Apaga el display de unidades
PORTD=(DISPLAY[DEC]); //Muestra lo que hay en decenas
//en el display
BIT_CLEAR(TDEC); //Enciende el display de decenas
DELAY_MS(20); //Retardo de 1 milisegundos
BIT_SET(TDEC); //Apaga el display de decenas
}
//********PROGRAMA PRINCIPAL**************
void MAIN()
{
SET_TRIS_A(0); //El puerto A esta configurado como salida
SET_TRIS_D(0); // El puerto D está configurado como salida
SET_TRIS_B(0x03); //Los bits RB0 y RB1 del puerto B como entrada
5
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
En el entorno del compilador PIC C compiler, una vez terminado y guardado el código del programa,
se compila dando clic en el ícono “Compile” (Figura 3). En el directorio de trabajo se generará en
archivo “.hex” (Figura 4) el cual se utiliza para cargar el programa en el PIC del entrenador
(mediante el software QL-PROG) o para simulación en Proteus.
6
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
RB0
RB1
R3 R4
10k 10k
U1
13 33
OSC1/CLKIN RB0/INT RB0
14 34
OSC2/CLKOUT RB1 RB1
35
RB2
2 36
C1 RA0 RA0/AN0 RB3/PGM
3 37
RA1 RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC Q2
22pF 6 40
RA4/T0CKI/C1OUT RB7/PGD
X1 7
RA5/AN4/SS/C2OUT R1 Q1
15
C2 CRYSTAL
8
RC0/T1OSO/T1CKI
16
RA1 BC478 R2
RE0/AN5/RD RC1/T1OSI/CCP2 10k RA0
9 17 10k
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
22pF 23
RC4/SDI/SDA
1 24 BC478
MCLR/Vpp/THV RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0 RD0 RD0 RD0
20
RD1/PSP1 RD1 RD1 RD1
21
RD2/PSP2 RD2 RD2 RD2
22
RD3/PSP3 RD3 RD3 RD3
27
RD4/PSP4 RD4 RD4 RD4
28
RD5/PSP5 RD5 RD5 RD5
29
RD6/PSP6 RD6 RD6 RD6
30
RD7/PSP7 RD7
PIC16F877A
Se usará el pin RA0 del puerto A como una entrada analógica para la conversión A/D. El pin RA0 se
conecta a un sensor de temperatura LM35.
El display LCD normalmente suele usarse en el puerto D, pero en el entrenador QL200 se encuentra
conectado a dos puertos, el puerto A para las señales de control y el puerto D para datos.
A continuación, el diagrama esquemático (Figura 6) de la conexión del display LCD, que es útil para
definir la conexión de pines a la pantalla LCD en el programa.
7
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
#use standard_io(b)
//*******PROGRAMA PRINCIPAL**********
VOID MAIN()
{
WHILE(1)
{
//Lectura ADC
set_adc_channel(0); //Selecciono el canal 0 (RA0)
delay_ms(1); //llamo retardo de 1 ms
bits=read_adc(); //Guarde el dato del LM en bits
8
Microsex N° 18 – Programación de Microcontroladores en Lenguaje C.
LCD1
LM016L
RV1
1 U2
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
49%
E
71.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1k
2
VOUT
3 LM35
RA1
RA2
RA3
RD4
RD5
RD6
RD7
U3
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
C1 RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
22pF 5 39
RA3/AN3/VREF+ RB6/PGC
X1 6
RA4/T0CKI/C1OUT RB7/PGD
40
CRYSTAL 7
C2 RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
22pF 10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RA1 RC6/TX/CK
26
RA2 RC7/RX/DT
RA3
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4 RD4
28
RD5/PSP5 RD5
29
RD6/PSP6 RD6
30
RD7/PSP7 RD7
PIC16F877A
INFORME.
Establezca conclusiones.