UNIVERSIDAD POLITECNICA SALESIANA
PRACTICA AVR#2
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
TEMA Temporizadores.
OBJETIVO
Utilizar los temporizadores en modo de contador externo. Manejar BASCO para LCD.
MARCO TEORICOBascom puede manejar los dos tipos principales de pantallas de cristal líquido:alfanuméricos y gráficos. Por el momento, vamos a preocuparnos por el tipo más común alfanuméricos. Este tipo de pantalla LCD puede mostrar los caracteres, números y caracteres especiales. El tipo más común de LCD alfanumérico utiliza un Hitachi HD44780 como controlador de pantalla. Cuando usted no está seguro acerca de qué tipo de pantalla que están sosteniendo en sus manos, sólo tiene que mirar a lasdenominaciones de chips en la espalda. Si uno de estos dice HD44780 estás a salvo. Bascom tiene una configuración por defecto para la conexión de la pantalla LCD.Options / Compiler / LCD
Afortunadamente, el predeterminado es de tipo LCD de 16 * 2. Esta es la pantalla LCD más común con dos líneas y 16 caracteres por línea.
BASCOM permite simular el programa para simular como se vera en el LCD. Compile el programa, y luego Program / Simulate
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
LCD de carácter conjunto.El conjunto de LCD de caracteres estándar se muestra en la siguiente tabla:
Los caracteres especiales en esta tabla se pueden enviar a la pantalla utilizando el charactercode decimal. Por ejemplo, utilice:LCD chr (228)Para enviar el símbolo μ. (1110.0100 binario es 228 en decimal)
DEFINA SUS PROPIOS PERSONAJES LCDLa LCD con el controlador HD44780 tiene espacio para ocho caracteres adicionales quese pueden definir. Usted podría utilizar caracteres especiales que de origen a:
Hacer una pantalla de barras de un metro o S-VU-meter Una pelota para pasar el tiempo del usuario, mientras que el controlador está
haciendo algo mucho tiempo.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Un objeto en rotación o saltar al hombre para que el usuario sepa que el controlador está aún en marcha.
Situé el cursor en Tools / LCD designer
Dar el un clic en cualquier cuadro para que este se haga negro, o clic en un cuadro negra para que se haga blanco. Hacer un símbolo de la cruz
Haga clic en Aceptar. Colocar el cursor en el origen del programa y aparecerá el siguiente texto.Deflcdchar ?,32,4,4,31,4,4,32,32' replace ? with number (0-7)Cambiar el "?" por el número "0" y eliminar el comentario después del carácter 'Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
EJERCICIOS
1.1 Temporizador en modo contador
Entradas Números ascendentes del o al 99 mediante un pulsador.
Salidas Mostrar los números en display de 7 segmentos.
Procesos - Establecemos el puerto D como Salida para los display. -Configuro puerto B para el pulsador - Defino Variables - Inicializo cada variable (para cada display) - Escribimos en cada puerto.
DIAGRAMA DE FLUJO
Especificar el puertoD y C como salida
INICIO
TCNT0=registro de almacenamiento del contador
Defino las variables A, B, I
Transformar de HEX a BCD
Visualizo en display
END
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
CODIGO:
$regfile "m16def.dat"$crystal = 8000000
Config Portb = InputConfig Portc = OutputConfig Portd = OutputConfig Porta = OutputDim I As Byte , A As Byte , Menor As Byte , Mayor As Byte
Config Timer0 = Counter , Edge = FallingStart Timer0Tcnt0 = 0A = 0
DoA = Tcnt0Porta = Tcnt0A = Makebcd(a)
Menor = A And &B0000_1111Waitms 500
Mayor = A And &B1111_0000Shift Mayor , Right , 4For I = 1 To 20Portd = MenorPortc = 2Waitus 200Portd = MayorPortc = IWaitus 200Next
LoopEnd
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
SIMULACION
A7
QA13
B1
QB12
C2
QC11
D6
QD10
BI/RBO4
QE9
RBI5
QF15
LT3
QG14
U2
7448
Q12N3904
Q22N3904
X1CRYSTAL
C1
1uF
C2
1uF
R110k
PB0/T0/XCK1
PB1/T12
PB2/AIN0/INT23
PB3/AIN1/OC04
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
RESET9
XTAL213
XTAL112
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP120
PD7/OC221
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PA7/ADC733
PA6/ADC634
PA5/ADC535
PA4/ADC436
PA3/ADC337
PA2/ADC238
PA1/ADC139
PA0/ADC040
AREF32
AVCC30
U1
ATMEGA16
C31nF
R2
10k
FIGURA #1
1.2 Elabore un programa para mostrar el mensaje HOLA en el LCD.
Entradas 0 Salidas display de 7 lcd. Procesos -configurar puerto D para LCD.
-programar para visualizar en el LCD
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
DIAGRAMA DE FLUJO
CODIGO
$regfile "m16def.dat"
$crystal = 8000000
Lee “HOLA”
END
Configuro pines para LCD
INICIO
Configuro puerto D como salida
Configuro LCD 16*2
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Config Portd = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Lcd "HOLA"
End
SIMULACION
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
1.3 Elabore un programa que escribe en la línea superior e inferior del LCD.
Entradas 0 Salidas display de LCD. Procesos -configurar puerto D para LCD.
-programar para visualizar en el LCD tanto en la línea superior
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
como en la línea inferior.
DIAGRAMA DE FLUJO
CODIGO
$regfile "m16def.dat"
$crystal = 8000000
Lee línea superior “INGENIERIA”
END
Configuro pines para LCD
Configuro puerto D como salida
Configuro LCD 16*2
INICIO
Lee línea inferior “BIOMEDICA”
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Config Portb = Output
Config Portc = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Cls
Lcd "INGENIERIA"
Lowerline
Lcd "ELECTRONICA"
End
SIMULACION
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
1.4 Realizar un programa que permite el desplazamiento de un texto en LCD.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Entradas 0 Salidas display de LCD. Procesos -configurar puerto D para LCD.
-programar con la ayuda de comandos como el FOR para el desplazamiento del texto
DIAGRAMA DE FLUJO
Se mueve la frase a la derecha
END
Configuro pines para LCD
Configuro puerto D como salida
Configuro LCD 16*2
INICIO
Se mueve la frase a la izquierda
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
CODIGO
$regfile "m16def.dat"
$crystal = 8000000
Dim I As Byte
Config Portb = Output
Config Portc = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Cls
Do
Lcd "UPS"
For I = 1 To 10
Shiftlcd , Right
Waitms 200
Next
For I = 1 To 10
Shiftlcd , Left
Waitms 200
Next
Loop
End
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
SIMULACION
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
1.5 Realizar un programa que permite conocer los diferentes comandos del LCD.
Entradas 0 Salidas display de LCD. Procesos -configurar puerto D para LCD.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
-programar con los diferentes comandos para ver su función.
DIAGRAMA DE FLUJO
Diferentes comandos
END
Configuro pines para LCD
Configuro puerto D como salida
Configuro LCD 16*2
INICIO
Se observa en el LCD
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
CODIGO
$regfile "m16def.dat"
$crystal = 8000000
Dim I As Byte
Config Portb = Output
Config Portc = OutputConfig Lcd = 16 * 2Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1Cls
Do
Locate 2 , 1
Lcd "*"
Wait 1
Shiftcursor Right
Lcd "@"
Home Upper
Lcd "REMPLAZO"
Wait 1
Cursor Off Noblink
Wait 1
Cursor On Blink
Wait 1Display OffWait 1
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Display On
Loop
End
SIMULACION
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
1.6 Realizar un programa que permite ver los caracteres que puede generar el LCD.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Entradas 0 Salidas display de LCD. Procesos -configurar puerto D para LCD.
-programar con los diferentes caracteres del LCD.
DIAGRAMA DE FLUJO
CODIGO
$regfile "m16def.dat"
CARACTERES DEL LCD
END
Configuro pines para LCD
Configuro puerto D como salida
Configuro LCD 16*2
INICIO
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
$crystal = 8000000
Dim I As Byte
Config Portb = Output
Config Portc = Output
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Cls
Do
For I = 1 To 255
Cls
Locate 1 , 1
Lcd Chr(i)
Locate 2 , 1
Lcd "CARACTER #" ; I
Waitms 100
Next
Loop
End
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
1.7 Realizar un programa que permite crear una figura para visualizar en el LCD.
Entradas 0 Salidas display de LCD. Procesos -configurar puerto D para LCD.
-programar en la barra desplegable TOOLS/LCD DESIGNER.
DIAGRAMA DE FLUJO
Configuro puerto D como salida
Configuro LCD 16*2
INICIO
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
CODIGO
$regfile "m16def.dat"
$crystal = 8000000
$sim
Config Portd = Output
Dim Star As Byte
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.0 , Rs = Portd.1
Cursor Off
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32 ' replace ? with number (0-7)
Graficar en TOOLS/LCD DESIGNER
END
Configuro pines para LCD
Muestra código numérico
Reemplazamos ? por (0-7)
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
Cls
Do
For Star = 0 To 5 Step 1
Portd = 255
Waitms 100
Portd = 0
Waitms 100
Locate 1 , 16
Lcd Chr(star)
Waitms 100
Next Star
Loop
End
SIMULACION
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
R910k
X1CRYSTAL
C1
33p
C2
33p
PA0/ADC040
PA1/ADC139
PA2/ADC238
PA3/ADC337
PA4/ADC436
PA5/ADC535
PA6/ADC634
PB0/XCK/T01
PB1/T12
PB2/INT2/AIN03
PB3/OC0/AIN14
PB4/SS5
PB5/MOSI6
PB6/MISO7
PB7/SCK8
PA7/ADC733
RESET9
XTAL113
XTAL212
PC0/SCL22
PC1/SDA23
PC2/TCK24
PC3/TMS25
PC4/TDO26
PC5/TDI27
PC6/TOSC128
PC7/TOSC229
PD0/RXD14
PD1/TXD15
PD2/INT016
PD3/INT117
PD4/OC1B18
PD5/OC1A19
PD6/ICP20
PD7/OC221
AVCC30
AREF32
U1
ATMEGA16
R110k
C3100p
D7
14D6
13D5
12D4
11D3
10D2
9D1
8D0
7
E6
RW
5RS
4
VSS
1
VDD
2
VEE
3
LCD2LM016L
RV1
5k
CONCLUSIONES
Podemos notar que en el ATMEGA el contador externo es un poco mas exacto que en PIC.
Para la programación de LCD algunos comandos se realiza de una manera mas fácil.
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
Las instrucciones básicas como temporizadores, contadores, algunas del LCD, las podemos encontrar tanto en PIC como en ATMEGA.
RECOMENDACIONES
Debemos configurar en opciones del BASCO el LCD dependiendo de cual estemos utilizando.
Se debe tener en cuenta que el código numérico que nos genera el LCD DESIGNER debemos de cambiar el símbolo (?) por un número del 1 al 7.
BIBLIOGRAFIA
Hoja de prácticas de AVR.Manual de ATMEGA16
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I
INGENIERIA ELECTRONICA
SISTEMAS MICROPROCESADOS I