Академический Документы
Профессиональный Документы
Культура Документы
“Reporte de Practicas”
Integrantes:
Catedrático:
Materia:
Microcontroladores
Carrera:
Electromecánica
Periodo Escolar:
PROTOBOARD
GRABADOR DE PIC´S
TRARJETA ENTRENADORA 18f4550 con cable ubs (Microside)
2 pic 16F628A
3 Push Burton N/A DE 4 TERMINALES
Módulo de 1 relevador
Pantalla LCD 16X2
1 Tira de pines
10 Leds
10 Resistencias de 330 ohms
2 resistencias de 1K
Display de 7 segmentos (Cátodo común)
Preset(50K designación 503)
Sensor de temperatura LM35
Motor a pasos
Teclado matricial 4x4
1 servomotor SG90
Cables Dupont. (Mancho – Macho, Macho –Hembra, Hembra – hembra)
Software:
El que corresponda el grabador de pics
El usuario por el proyecto MULTISIDE
PIC C Compiler
Proteus
Para escribir un programa en C con el CCS C se deben tener en cuenta una serie de elementos básicos
de su estructura.
Los diagramas del flujo son una herramienta que permite representar visualmente que operaciones se
requieren y en que secuencias se deben efectuar para solucionar un problema dado. Por consiguiente,
un diagrama de flujo es la representación gráfica mediante símbolos especiales, de los pasos o
procedimientos de manera secuencial y lógica que se deben realizar para solucionar un problema dado.
Los diagramas del flujo desempeñan un papel vital en la programación de un problema, ya que facilitan
la compresión de problemas complicados y sobre todo aquello en que sus procesos son muy largos; 2
generalmente los diagramas de flujo se dibujan antes que comenzar a programa el código fuente, que se
ingresará posteriormente a la computadora. Los diagramas de flujo facilitan la comunidad entre los
programadores y los usuarios, además de que permiten de una manera más rápida detectar los posibles
errores de lógica que se presentan al implementar el algoritmo.
Dentro de los diagramas de flujo se pueden utilizar los símbolos que se presentan en la sig. Tabla, con
los cuales se indican las operaciones que se efectuarán a los datos con el fin de producir un resultado.
Símbolos significado
Terminal/inicio
Entrada da datos.
proceso
decisión
Decisión múltiple.
Imprimir resultado.
Flujo de datos.
Conectores.
A,B,C
incio
Calcular el
volumen
VOLUMEN=A*B*C C
Escribir el
volumen VOLUMEN
obteniendo.
INICIO
Fin del proceso.
Float temp_LIMIT=500,0;
Las variables define en un programa pueden ser de tipo local o global. Las
variables locales solo se utilizan en la función donde se encuentran declarad
variable global se pueden utilizar en todas las funciones del programa.
Ambas deben declararse antes de ser utilizadas y las globales deben
declararse antes de cualquier función y fuerza de ellas. Las variables
globales son puestas a cero cuando se inicia la función principal main().
#include <16f876.h>
#USE DELAY (CLOCK=4000000)
Int16 counter; //variable global
Void function(void)
(
Char K, kant=´0´; //variable locales
)
Void main()
(
Int0 temp; //variable local
)
Las variables pueden ser definidas con:
Auto : (usada por defecto, no hace falta que se indique donde la variable
existe mientras la función esta activa. Estas variables no se inicializan a cero.
Su valor se piede cuando se sale de la función.
Static: una variable local se activa como global , se inicializa a cero y
manteniendo su valor al entrada y salida de la función.
Exten : permite el uso de variables en compilaciones multiples.
1.1.6 operadores
1.1.6.1 asignacion
+= Asignación de suma
(x+=y lo mismo que
x=x+y)
-= Asignación de resta (x-=y
lo mismo que x=x-y)
+= Asignación de
multiplicación (x*=y lo
mismo que x=x*y)
/= Asignación de division
(x/=y lo mismo que x=x/y)
%= Asignación del resto de la
division(x%=y lo mismo
que x=x%y)
<<= Asignación de
desplazamiento a la
izquierda (x<<=y lo mismo
que x=x<<y)
>>= Asignación de
desplazamiento a derecha
(x>>=y es igual que
x=x>>y)
&= Asignación ADN de bits
(x&=y es lo mismo que
x=x&y)
I= Asignación OR de bits
(xI=y es lo mismo que
x=xIy)
^= Asignacion OR
EXCLUSIVA de bits (x^=y
es lo mismo que x=x^y)
1.1.6.2 Aritmeticos
+ Suma
- Resta
* Multiplicación
/ division
% Modulo, resto de una
división entera
-- Incremento
++ Decremento
Sizeof Determina el tamaño, en
bytes, de un operando
a=3
b=4*++3 ; // b=16 y a=4 ;
1.1.6.3 Relacionales
< Menor que
> Mayor que
>= Mayor o igual que
<= Menor igual que
== Igual
!= Distinto
?: Expresión condicional
1.1.6.4 Logicos
! NOT
&& AND
II OR
1.1.6.5 De bits
~ Complemento a 1
& AND
^ OR EXCLUSIVA
I OR
>> Desplazamiento a derechas
<< Desplazamiento a izquierdas
1.1.6.6 De punteros
& Dirección
* Indirección
-> Puntero a estructura
1.1.8.1. IF-ELSE
If 7(EXPRECION)
Sentencia_2;
LELSE
Sentencia_2;
Nota
Primeros se evalúa la expresión y si cierta (TRUE o1) ejecuta la sentencia_I, en el caso contrario (FALSE o D) ejecutar la
SENTENCIA_2.
Pueden anidarse los IF-ELSE dado el lugar a los IF-ELSE; esto permite tomer decisiones múltiples.
if (exprecion_1)
Sentencia_1;
Lelse if (expresión_2)
Sentencia_2;3
Lelse
Sentencia_3;3
En este caso la expresión se evalúa en orden, si alguna de ellas es cierta la SENTENCIA asociada a ella se ejecutaran y
se termina la función. En caso contrario se ejecuta la SENTENCIA de ELSE. En ambos casos si existen varias
sentencias para ejecutar se deben utilizar las llaves[]
if (exprecion)
)
Sentencia_1;
…….
Sentencia_n;
Lelse
Sentencia_1;
………
Sentencia_n;
))
Ejemplos
Ca5
B=10 SI no
A=0?
A>10? SI
A>20? NO
SI
B+5 B+15
IF(A>10) {IF(A>20)B=15;
ELSE C=5;
A>10? SI
NO
A>20? SI
NO
B=5 B=15
1.1.8.2 SWITCH
Switch (expresión)
Case constante1:
Sentencia;
Breack;
Case constante2:
Sentencia;
Breack;
…..
[defaul:
Sentencia;]
Evalúa la expresión y en orden a la CONTANTE adecuado las sentencias asociadas. Si ninguno de los CASE
corresponda a la CONTANTE se ejecuta DEFAULT (este comité es opcional). El comando BREAK provoca la salida de
SWITCH, de lo contrario se ejecuta el siguiente CASE. Nota: No pueden existir dos CASE con la misma CONTANTE.
A>0?
A>20?
SI B=1
Switch
(A)(case
0:B=1:
Break;
NO
Case2;
B=2:
Break;
A=2? B=2
SI
Case3:
B=3;
Break;
NO
Default:
breaj; }
A=3? SI B=3
NO
1.1.8.3 FOR
Sentencias
En las expresiones de FOR la inicialización es una variabilidad la cual se le asigna un valor inicial inicial con el que
controlar el bucle. La condición de finalización sirve para evaluar ANTES de ejecutar las sentencias si es cierta o no, en
el caso de ser cierta se ejecutan la sentencia y en caso contrario se sale del FOR. Por ultimo de incremento o
decremento modifica la variable de control DESPUES de ejecutar el bucle.
Nota
For (;;)
Sentencias;
Ejemplo:
FOR (N=1;N<10,N++
N=1 {
Printf(“%U”,N);
N<=10
si
NO
IMPRIMIR N N=N+1
1.1.8..4 WHILE/DO-WHILE
While (expresión)
Sentencia;
La expresión se evalúa y la sentencia se ejecuta mientras las expresiones es verdadera, cuando es falsa se sale del
WHILE.
DO-WHILE se diferencia de WHILE y del FOR en la condición de finalización la cual se evalúa al final de bucle, por lo
que las sentencias se ejecutan al menos una vez.
Do
Sentencias;
While (expresión);
While(1)
Sentencia;
Do
Sentencias;
While (1)
While(N>
N<=10
Escriba aquí la ecuación.
PRACTICA #1
Encender y apagar un led
Entrenadora
PIC16f628A
#include <16f628a.h> #include <18f4550.h>
#FUSES NOWDT #fuses XT
#FUSES INTRC_IO #fuses NOWDT
#FUSES NOPUT #fuses NOBROWNOUT
#FUSES NOPROTECT #fuses NOPROTECT
#FUSES NOBROWNOUT #fuses NOLVP
#FUSES NOMCLR #fuses NODEBUG
#FUSES NOLVP #fuses USBDIV
#FUSES NOCPD #fuses PLL5
#use delay(clock=4000000) #fuses CPUDIV1
#fuses VREGEN
void main() #fuses MCLR
{ #fuses NOPBADEN
while(true) #fuses WRTB
{ #fuses CPB
output_bit(pin_b0,0); #use delay(clock=48000000)
delay_ms(2000); #build(reset=0x2000,interrupt=0x2008)
output_bit(pin_b0,1); #org 0x0000,0x1FFF{}
delay_ms(2000)
} //--------------------------------------------
} void main()
{
while(true)
{
output_bit(pin_b0,0);
delay_ms(2000);
output_bit(pin_b0,1);
delay_ms(2000)
}
}
PRACTICA #2
Encender 3 leds
Entrenadora
PIC16f628A
#include<16f628a.h>
#FUSES NOWDT #include <18f4550.h>
#FUSES INTRC_IO #fuses XT
#FUSES NOPUT #fuses NOWDT
#FUSES NOPROTECT #fuses NOBROWNOUT
#FUSES NOBROWNOUT #fuses NOPROTECT
#FUSES NOMCLR #fuses NOLVP
#FUSES NOLVP #fuses NODEBUG
#FUSES NOCPD #fuses USBDIV
#use delay(clock=4000000) #fuses PLL5
#fuses CPUDIV1
void main() #fuses VREGEN
{ #fuses MCLR
{ #fuses NOPBADEN
output_bit(pin_b0,0); #fuses WRTB
delay_ms(1000); #fuses CPB
output_bit(pin_b0,1); #use delay(clock=48000000)
delay_ms(2000); #build(reset=0x2000,interrupt=0x2008)
output_bit(pin_b1,1); #org 0x0000,0x1FFF{}
delay_ms(3000);
output_bit(pin_b2,1); //--------------------------------------------
void main()
} {
} {
output_bit(pin_b0,0);
delay_ms(1000);
output_bit(pin_b0,1);
delay_ms(2000);
output_bit(pin_b1,1);
delay_ms(3000);
output_bit(pin_b2,1);
}
}
PRACTICA #3
Encender y apagar 3 leds
Entrenadora
PIC16f628A
#include <16f628a.h> #include <18f4550.h>
#FUSES NOWDT #fuses XT
#FUSES INTRC_IO #fuses NOWDT
#FUSES NOPUT #fuses NOBROWNOUT
#FUSES NOPROTECT #fuses NOPROTECT
#FUSES NOBROWNOUT #fuses NOLVP
#FUSES NOMCLR #fuses NODEBUG
#FUSES NOLVP #fuses USBDIV
#FUSES NOCPD #fuses PLL5
#use delay(clock=4000000) #fuses CPUDIV1
#fuses VREGEN
void main() #fuses MCLR
{ #fuses NOPBADEN
while(true) #fuses WRTB
{ #fuses CPB
output_bit(pin_b0,1); #use delay(clock=48000000)
delay_ms(1000); #build(reset=0x2000,interrupt=0x2008)
output_bit(pin_b0,1); #org 0x0000,0x1FFF{}
delay_ms(1000);
output_bit(pin_b0,0); //--------------------------------------------
void main()
output_bit(pin_b1,1); {
delay_ms(1000); while(true)
output_bit(pin_b1,1); {
delay_ms(1000); output_bit(pin_b0,1);
output_bit(pin_b1,0); delay_ms(1000);
output_bit(pin_b0,1);
output_bit(pin_b2,1); delay_ms(1000);
delay_ms(1000); output_bit(pin_b0,0);
output_bit(pin_b2,1);
delay_ms(1000); output_bit(pin_b1,1);
output_bit(pin_b2,0); delay_ms(1000);
output_bit(pin_b1,1);
} delay_ms(1000);
} output_bit(pin_b1,0);
output_bit(pin_b2,1);
delay_ms(1000);
output_bit(pin_b2,1);
delay_ms(1000);
output_bit(pin_b2,0);
}
}
Entrenadora
PIC16f628A
Entrenadora
PIC16f628A
Entrenadora
PIC16f628A
}
}
PRACTICA #7
Sentencia IF
Entrenadora
PIC16f628A
} set_tris_a(0b11110000);// 1=entrada
} set_tris_b(0b00000000); // 0= salida
}
output_b(0b00000000);
FOR(;;)
{
IF(input(PIN_A0) )
{
output_high(PIN_B0);
}
}
}
PRACTICA #8
Examen unidad 1
Entrenadora
PIC16f628A
}
}
PRACTICA #4