Академический Документы
Профессиональный Документы
Культура Документы
MICROPROCESADORES
Grupo: 6CV1
Objetivo:
Programar un contador del 0 al 9 a partir de un Display de 7 segmentos, asignando valores
a las salidas de nuestro PIC, para que se muestren de forma automática.
Introducción:
Este elemento se ensambla de manera que se pueda activar cada segmento (LED)
por separado logrando de esta manera combinar y representar todos los números en
el display (del 0 al 9). El display de 7 segmentos más común es el de color, por su
facilidad de visualización. Existen dos tipos de arreglos en los displays:
Display ánodo común, todos los ánodos de los LED unidos y conectados a la fuente
de alimentación. En este caso para activar cualquier elemento hay que poner el
cátodo del elemento a tierra a través de una resistencia para limitar la corriente que
pasa por el elemento. (Se encienden con un estado bajo “LOW” o0 lógico)
Display cátodo común, todos los ánodos de los LED unidos y conectados a tierra.
Para activar un segmento de estos hay que poner el ánodo del segmento a encender
a Vcc (tensiónde la fuente) a través de una resistencia para limitar el paso de la
corriente. (Se enciende con un estado alto “HIGH” o 1 lógico)
2
Los PIC (Controlador de Interfaz Periférico) son una familia de microcontroladores tipo RISC
fabricados por Microchip Technology Inc. Se diseñó para ser usado con la nueva CPU de
16bitsCP16000.
Se pueden considerar tres grandes gamas de MCU PIC en la actualidad: Los básicos
(Linebase), los de medio rango (MidRange) y los de alto desempeño (high performance).
Los PIC18 son considerados de alto desempeño y tienen entre sus miembros a PIC con
módulos de comunicación y protocolos avanzados (USB, Ethernet, Zigbee por ejemplo).
Desarrollo:
3
Software:
MPLAB (Versiones recientes)
0 0 1 1 1 1 1 1
En hexadecimal: 3 F
Número . g f e d c b a Hexadecimal
0 0 1 1 1 1 1 1 3F
0 0 0 0 0 1 1 0 06
0 1 0 1 1 0 1 1 5B
0 1 0 0 1 1 1 1 4F
0 1 1 0 0 1 1 0 66
0 1 1 0 1 1 0 1 6D
0 1 1 1 1 1 0 1 7D
0 0 0 0 0 1 1 1 07
0 1 1 1 1 1 1 1 7F
0 1 1 0 1 1 1 1 6F
Ya teniendo los valores de cada digito, procedemos a capturar nuestro código en un nuevo
proyecto diseñado en nuestro software MPLAB con la extensión asm, inicialmente debemos
crear variables en las cuales se guardarán registros y debemos configurar nuestros puertos
que usaremos como entradas o salidas, en este caso usamos el PUERTO D.
El programa principal o main debe tener las características del puerto a usar y mover los
datos obtenidos a PORTD, enseguida llamamos a un tiempo para que se logre visualizar la
cifra y cambie en un periodo considerable.
4
Nuestro tiempo lo debemos configurar en las subrutinas como un decremento en la
asignación de un digito a cierta variable de nuestro archivo, al ser compilada nos generara
un archivo HEX el cual debemos cargar a la tarjeta de nuestro micro.
Al ser cargada solo nos queda conectar de acuerdo a las especificaciones del PIC y las
salidas que configuramos.
Código:
;***************************************************************************************************
; This file is a basictemplateforassemblycodefor a PIC18F4550. Copy *
; this file intoyourprojectdirectory and modifyoradd to it as needed. *
; *
; The PIC18FXXXX architectureallowstwointerruptconfigurations. This *
; templatecodeiswrittenforpriorityinterruptlevels and the IPEN bit *
; inthe RCON registermust be set to enableprioritylevels. If IPEN is *
; left in its default zerostate, onlytheinterrupt vector at 0x008 will *
; beused and the WREG_TEMP, BSR_TEMP and STATUS_TEMP variables willnot *
; beneeded. *
; *
; Refer to the MPASM User'sGuideforadditionalinformationonthe *
; features of theassembler. *
; *
; Refer to the PIC18FXX50/XX55 Data Sheetforadditional *
; informationonthearchitecture and instruction set. *
; *
;***************************************************************************************************
; *
; Filename: PlantillaASM *
; Date: 12/01/11 *
; File Version: 1.0 *
; *
; Author: Ing. Alejandro Vicente Lugo Silva *
; Company: Acad. Computación ICE - ESIME Zac. *
; *
;***************************************************************************************************
; *
5
; Files required: P18F4550.INC *
; *
;***************************************************************************************************
;***************************************************************************************************
;Configuration bits
;firmwareshouldenterthebootloaderorthemainapplication
;firmwareafter a reset. In order to do
this, itneeds to
;configure RB4 as a digital input,
therebychangingitfrom
;theresetvalueaccording to
thisconfiguration bit.
config CCP2MX = ON
config STVREN = ON
config LVP = OFF
config ICPRT = OFF ; Dedicated In-CircuitDebug/Programming
config XINST = OFF ; Extended Instruction Set
config CP0 = OFF
config CP1 = OFF
config CP2 = OFF
config CP3 = OFF
config CPB = OFF
config CPD = OFF
config WRT0 = OFF
config WRT1 = OFF
config WRT2 = OFF
6
config WRT3 = OFF
config WRTB = OFF ; Boot Block WriteProtection
config WRTC = OFF
config WRTD = OFF
config EBTR0 = OFF
config EBTR1 = OFF
config EBTR2 = OFF
config EBTR3 = OFF
config EBTRB = OFF
;***************************************************************************************************
;Variabledefinitions
; These variables are onlyneedediflowpriorityinterrupts are used.
; More variables may be needed to store otherspecialfunctionregistersused
; intheinterruptroutines.
RESET_VECTOR ORG 0
;***************************************************************************************************
;***************************************************************************************************
;Start of mainprogram
; Themainprogramcodeis placed here.
ORG 0x1000
Main ; *** maincodegoeshere **
movlw #0Fh
movwf ADCON1
main movlw #00h
movwf TRISD
movlw #0c0h
call time
movlw H'3F'
movwf PORTD
call time
movlw H'06'
movwf PORTD
call time
movlw H'5B'
movwf PORTD
call time
movlw H'4F'
movwf PORTD
7
call time
movlw H'66'
movwf PORTD
call time
movlw H'6D'
movwf PORTD
call time
movlw H'7D'
movwf PORTD
call time
movlw H'07'
movwf PORTD
call time
movlw H'7F'
movwf PORTD
call time
movlw H'6F'
movwf PORTD
call time
gotomain
; end of main
;***************************************************************************************************
; Start of subrutines
;***************************************************************************************************
time
movlw d'4'
movwf var3
laso3 movlw d'250'
movwf var2
laso2 movlw d'250'
movwf var1
laso nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz var1
goto laso
decfsz var2
8
goto laso2
decfsz var3
goto laso3
return
;***************************************************************************************************
;End of program
END
Conclusiones:
Esta práctica fue de mucha utilidad ya que fue la primera en la que utilizamos el pic18f4550, con esta
práctica realizamos varios conceptos aprendidos como los retardos (nop) que básicamente son
“datos basura “para tener más tiempo entre una función y otra, también utilizamos los goto que son
“llamadas de función” y nos facilitan demasiado la programación acortando nuestro código.