Computing">
Portada Sistemas Embebidos
Portada Sistemas Embebidos
Portada Sistemas Embebidos
Profesor
Hector Huerta Avila
En esta práctica se utilizarán los puertos del PIC18F4550, para implementar contadores
binarios, el conteo se mostrará en forma decimal en pantallas de siete segmentos.
Índice de figuras.
Incluir un índice de las figuras utilizadas en el documento.
Combinaciones para mostrar los números del 0 al 9 en una pantalla de cátodo común.
Combinaciones para mostrar los números del 0 al 9 en una pantalla de ánodo común.
1
1. Introducción
En esta primera sección se debe incluir la descripción general del problema a resolver y
del proyecto, en este caso tendremos que realizar un contador ascendente de 0 a 99 con el
PIC18F4550 a continuación les mostraremos el objetivo, material y ejemplo de conexiones
para conseguir satisfactoriamente lo que es esta práctica a realiza
1.1Objetivos
2
Objetivo general
Comprender y conocer los distintos tipos de programación el entorno de desarrollo de
MPLAB XIDE como primera práctica se realizar un programa que por medio de un display
unificado muestre un contenido ascendente del 0 a 99, repitiendo el ciclo infinitamente.
1.2 Requerimientos técnicos
En este apartado podemos hablaremos sobre el material que se necesitara
- PIC18F4550
- PROTOBOARD
- CABLE PARA PUENTES
- CRISTAL DE CUARZO
- 8 RESISTENCIAS de 330
- 2 CAPACITORES CERAMICOS 15pf
- 2 DISPLAYS DE 7 SEGMENTOS O UNO DOBLE
3
2. Implementación
Código del programa:
//Realizar un contador de 0 a 99 con un doble display de 7 segmentos de cátodo común.
La cuenta debe ser continua y de 0 a 9 el digito de las decenas debe estar apagado.
#include <18F4550.h>
#USE DELAY(CLOCK=20000000)
#FUSES
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGE
N,NOBROWNO
UT
#USE fast_IO (B)
#USE fast_IO (A)
byte CONST DISPLAY[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(){
byte ud=0,dec=0,f=9,g=0,ud1=0,dec1=0,j=10,k=0;
SET_TRIS_B(0x00);
SET_TRIS_A(12);
OUTPUT_B(0);
for( ;; ){
if(input(pin_a2)==0 ){
for (dec=0;dec<10;dec++){
for (ud=0;ud<10;ud++){
OUTPUT_A(0x02);
k=k+1;
OUTPUT_B(DISPLAY[k]);
if(k==9){
k=0; }
delay_ms(75);
if (dec==0) output_a(0x03);
4
else output_a(0x01);
if(j==10){
j=0;
}
OUTPUT_B(DISPLAY[j]);
delay_ms(75);
if(input(pin_a2)==1 ){
ud=11;
dec=11;
} }
j=j+1;
if(input(pin_a2)==1 ){
f=j;
g=k;
} }}
if(input(pin_a3)==0 ){
for (dec=0;dec<10;dec++){
for (ud=0;ud<10;ud++){
OUTPUT_A(0x02);
g=g-1;
if(g==-1){
g=9;
}
//cat_D=apagado,cat_U=encendido
OUTPUT_B(DISPLAY[g]);
delay_ms(75);
if (dec==9) output_a(0x03);
else output_a(0x01);
5
if(f==-1){
f=9;
}
OUTPUT_B(DISPLAY[f]);
delay_ms(75);
if(input(pin_a3)==1 ){
ud=11;
dec=11;
}
}f=f-1;
if(input(pin_a3)==1 ){ k=g; } } } } }
6
Ejemplo del programa con las conexiones realizadas y con el codigo ya implementado
7
3. Conclusiones
I liked this practice because it was something different from what we normally do in the
workshops, it is interesting how to form the code to carry out the program, at first it was
complicated because I was looking for extra information and found where they used
another PIC different from the one we are using , but in the end I was able to solve it.
8
Referencias
Libros:
[1] [1] Hojas de datos del microcontrolador PIC18F4550, Michochip, disponible en línea
http://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf, última consulta 1 de febrero de 2018.
[2] [2] T. D. Morton, Embedded Microcontrollers, Primera Edición, Prentice Hall, 2001.
[3] T. Wilmshurst, Designing Embedded Systems with PIC Microcontrollers, Principles and
Applications, second edition, Newnes, 2009.