Sei sulla pagina 1di 32

CARLOS OCAMPO

2010 UNIVERSIDAD
POLITECNICA
FERNANDO ITAS SALESIANA
2010-05-14 PRACTICA AVR#2

SISTEMAS MICROPROCESADOS I
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

TEMA Temporizadores.
OBJETIVO

• Utilizar los temporizadores en modo de contador externo.


• Manejar BASCO para LCD.

MARCO TEORICO
Bascom 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 las
denominaciones 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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

LCD de carácter conjunto.


El conjunto de LCD de caracteres estándar se muestra en la siguiente
tabla:
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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 LCD


La LCD con el controlador HD44780 tiene espacio para ocho
caracteres adicionales que
se 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.
• 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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

EJERCICIOS

1.1Temporizador 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

INICIO

Especificar el puerto
D y C como salida
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Defino las variables A, B, I

TCNT0=registro de almacenamiento del contador

Transformar de HEX a BCD

Visualizo en display

END

CODIGO:
$regfile "m16def.dat"
$crystal = 8000000

Config Portb = Input


Config Portc = Output
Config Portd = Output
Config Porta = Output
Dim I As Byte , A As Byte , Menor As Byte , Mayor As Byte

Config Timer0 = Counter , Edge = Falling


Start Timer0
Tcnt0 = 0
A=0

Do
A = Tcnt0
Porta = Tcnt0
A = Makebcd(a)

Menor = A And &B0000_1111


Waitms 500
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Mayor = A And &B1111_0000


Shift Mayor , Right , 4
For I = 1 To 20
Portd = Menor
Portc = 2
Waitus 200
Portd = Mayor
Portc = I
Waitus 200
Next

Loop
End

SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

R2
10k

U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
12 24
XTAL1 PC2/TCK
13 25
XTAL2 PC3/TMS
1uF 26
PC4/TDO
40 27
PA0/ADC0 PC5/TDI
X1 39
PA1/ADC1 PC6/TOSC1
28
CRYSTAL 38 29
37
PA2/ADC2 PC7/TOSC2 U2
PA3/ADC3
36 14 7 13
C2 35
PA4/ADC4 PD0/RXD
15 1
A QA
12
PA5/ADC5 PD1/TXD B QB
34 16 2 11
PA6/ADC6 PD2/INT0 C QC
33 17 6 10
PA7/ADC7 PD3/INT1 D QD
1uF 18 4 9
PD4/OC1B BI/RBO QE
1 19 5 15
PB0/T0/XCK PD5/OC1A RBI QF
2 20 3 14
PB1/T1 PD6/ICP1 LT QG
3 21
PB2/AIN0/INT2 PD7/OC2
4 7448
PB3/AIN1/OC0
5
PB4/SS
R1 6
PB5/MOSI
10k 7 32
PB6/MISO AREF
8 30
PB7/SCK AVCC
ATMEGA16

C3
1nF
Q2
Q1 2N3904
2N3904

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

DIAGRAMA DE FLUJO
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

INICIO

Configuro puerto D como salida

Configuro LCD 16*2

Configuro pines para LCD

Lee “HOLA”

END

CODIGO

$regfile "m16def.dat"

$crystal = 8000000

Config Portd = Output

Config Lcd = 16 * 2
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

LCD2
LM016L

RV1

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
R9

1
2
3

4
5
6

7
8
9
10
11
12
13
14
10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16

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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

como en la línea inferior.

DIAGRAMA DE FLUJO

INICIO

Configuro puerto D como salida

Configuro LCD 16*2

Configuro pines para LCD

Lee línea superior “INGENIERIA”

Lee línea inferior “BIOMEDICA”

END

CODIGO
$regfile "m16def.dat"

$crystal = 8000000
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

LCD2
LM016L

RV1
VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E

R9
1
2
3

4
5
6

7
8
9
10
11
12
13
14

10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

1.4 Realizar un programa que permite el desplazamiento de un texto


en LCD.

➢ 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

INICIO

Configuro puerto D como salida

Configuro LCD 16*2

Configuro pines para LCD

Se mueve la frase a la derecha

Se mueve la frase a la izquierda

END
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

End

SIMULACION

LCD2
LM016L

RV1
VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E

R9
1
2
3

4
5
6

7
8
9
10
11
12
13
14
10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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.
-programar con los diferentes comandos para
ver su función.

DIAGRAMA DE FLUJO

INICIO

Configuro puerto D como salida

Configuro LCD 16*2

Configuro pines para LCD

Diferentes comandos

Se observa en el LCD

END
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

Locate 2 , 1

Lcd "*"

Wait 1

Shiftcursor Right

Lcd "@"

Home Upper

Lcd "REMPLAZO"

Wait 1

Cursor Off Noblink

Wait 1
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Cursor On Blink

Wait 1
Display Off
Wait 1

Display On

Loop

End

SIMULACION

LCD2
LM016L

RV1
VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E

R9
1
2
3

4
5
6

7
8
9
10
11
12
13
14

10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

1.6 Realizar un programa que permite ver los caracteres que puede
generar el LCD.

➢ Entradas 0
➢ Salidas display de LCD.
➢ Procesos -configurar puerto D para LCD.
-programar con los diferentes caracteres del
LCD.

DIAGRAMA DE FLUJO

INICIO

Configuro puerto D como salida

Configuro LCD 16*2

Configuro pines para LCD

CARACTERES DEL LCD

END
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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

For I = 1 To 255

Cls

Locate 1 , 1

Lcd Chr(i)

Locate 2 , 1

Lcd "CARACTER #" ; I

Waitms 100

Next

Loop

End

SIMULACION
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

LCD2
LM016L

RV1

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
R9

1
2
3

4
5
6

7
8
9
10
11
12
13
14
10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16

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

INICIO

Configuro puerto D como salida

Configuro LCD 16*2


INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Configuro pines para LCD

Graficar en TOOLS/LCD DESIGNER

Muestra código numérico

Reemplazamos ? por (0-7)

END
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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

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)

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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

LCD2
LM016L

RV1

VDD
VSS

VEE

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
E
R9

1
2
3

4
5
6

7
8
9
10
11
12
13
14
10k
5k
U1
9 22
C1 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
33p 26
PC4/TDO
X1 40
PA0/ADC0 PC5/TDI
27
39
CRYSTAL 28
C2 38
PA1/ADC1 PC6/TOSC1
29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
33p 35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/XCK/T0 PD5/OC1A
2 20
PB1/T1 PD6/ICP
C3 3
PB2/INT2/AIN0 PD7/OC2
21
100p R1 4
PB3/OC0/AIN1
10k 5
PB4/SS
6
PB5/MOSI
7 30
PB6/MISO AVCC
8 32
PB7/SCK AREF
ATMEGA16

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.
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

➢ 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
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA
INGENIERI
A
SISTEMAS MICROPROCESADOS I
ELECTRONI
CA

Potrebbero piacerti anche