MICROCONTROLADORES AVR ATMEGA8/16 AT89C51 PIC16F877A PIC 18F2550 PROGRAMACION PROGRAMACION EN BASIC PROGRAMACION EN SYSTEM 1. Intr Introdu oducc cció ión n 2. Arquitectura 3. Software de programación BASCOM AVR 4. Software de simulación, esquemático, PCB(PROTEUS) 5. Temas: manejo de entradas salidas(pulsadores, leds, buzzer. display de siete segmentos(caja turno) display matricial 8x8(mensajero1) temporizador programable calculadora basica display HDSP-2112(mensajero2) control de acceso alarma digital control de temperatura utilizando el conversor analógico a digital y el circuito integrado LM35 de National Semiconductor voltímetro digital(adc interno) voltímetro digital(adc0831) termómetro digita(ds1820) medidor de temperatura humedad relativa(SHT15) real time, horario escolar (DS1307) comunicación RS232, RS485(programa en Visual Basic) comunicación SPI, shift(74HC595) motores pasos motores de corriente continua(PWM) motores de inducción monofasicos. control de intensidad luminosa(control de fase) encoder de posición fuente digital control de acceso con tarjeta RF(formato wiengan) manejo de módulos RF433(control remoto) Temporizador Y contador interno(fruencímetro) interno(fruencímetro) Generador de onda cuadrada(notas musicales) potenciómetro digital(MPC401010) ibutton(ds1991) data flash(AT45DB161) grabador reproductor de voz ISD2560 generador de audio wav • •
• • •
• • •
•
• • • •
• •
• • •
• • •
• • • • • • • • • •
•
• •
• •
• •
• • • •
• • •
•
generador de funciones control vía telefónica sensor ultrasonico lcd grafico(trazador de curvas) lcd grafico Nokia 3130 lcd grafico color Nokia 6100 protocolo MODBUS MMC(memory multimedia card) USB (universal serial bus) TCP/IP GSM HDD(Disco duro) GPS Bluetooth Biometricos
1. introducción Los microcontroladores se han ido introduciendo en nuestro medio por el avance tecnológico que el país ha alcanzado en los últimos años. Con lo cual me siento agradecido por el interés de ustedes sobre el tema el cual voy a tratar de ser lo más explicito posible. Un comentario adicional es la siguiente frase que recuerdo y que un día me hizo pensar de otra manera respecto al conocimiento. “no es mas sabio el que tiene mayor conocimiento, sino que hace con el conocimiento”
2. introducción a los microcontroladores Los microcontroladores son dispositivos integrados en un solo chip de entradas salidas las cuales pueden ser programadas según la necesidad.
La arquitectura de un microcontrolador normalmente es la siguiente: • • • • •
unidad central de proceso memoria RAM de datos volátil memoria EEPROM de datos no volátil memoria FLASH de programa entradas/salidas
• • • • • • • • • •
puerto serial conversores analógico digital conversores digital analógico temporizadores PWM modulación de ancho de pulso RTC reloj en tiempo real SPI I2C USB Y otros manejadores de periféricos
Existen dos tipos de artiquitecturas: arquitectura harvard con tecnología RISC (reducción de instrucciones) y la arquitectura Vonn Neumann con tecnología CISC (instrucciones complejas). La tecnología RISC se basa en la arquitectura Harvard, la cual el dato mas la instrucción ingresan en forma paralela al bus de datos. Utilizada en los computadores MAC. La tecnología CISC se basa en la arquitectura Von Neumann, la cual envía el dato luego la instrucción e ingresan al bus de datos en forma serial. Utilizados en los computadores PC. Con lo cual se saca una conclusión importante, que los microcontroladores con arquitectura Harvard serán los más utilizados de hoy en adelante por ser más rápidos en procesar la información. Algo en particular es que los primeros microcontroladores con memoria flash son los AVR de ATMEL.
Característica de algunos microcontroladores utilizados en nuestro medio. AT89S51 I/O 32 FLASH 4K RAM 128 BYTE EEPROM ND PWM ND ADC ND TIMER 8BITS ND TIMER 16BITS 2 PRESCALER ND IN CIRCUIT SI UART 1 SPI 1 I2C ND CM F/12 1K$ 1
PIC16F877 33 8K 368 BYTE 256 BYTE 2 10BITS 2 1 SI SI 1 1 1 F/4 4
ATMEGA16 32 16 K 1 KBYTE 512 BYTE 4 10 BITS 2 1 SI SI 1 1 1 F 3
Y podríamos innumerar más características para poder decidir el uso del microcontrolador que se adecue a nuestro proyecto.
BASCOM AVR Software desarrollado por la empresa MCS para programar los microcontroladores AVR de la empresa ATMEL. Los cuales son de tecnología RISC. El programa BASCOM AVR tiene el objetivo de realizar sus proyectos de microcontroladores en un menor tiempo posible con lo cual utiliza la herramienta Basic por su fácil entendimiento y aplicación.
Forma de definir una variable: Dim A as bit Byte Word Long Integer Single String Array Double
0a1 0 a 255 2^8 0 a 65535 2^16 -2147483648 a 2147483647 ( 2^32)/2 -32768 a 32767 (2^16)/2 1.5 x 10^–45 a 3.4 x 10^38 Cadena de caracteres maximo 254 matriz 65535 5.0 x 10^–324 a 1.7 x 10^308
Operadores matemáticos: Suma: a=b+c Resta: a=b-c Multiplicación: a=b*c División: X = a \ b : residuo = a MOD b
Operadores de relación = <> < > <= >=
igual X no es igual X menor que X mayor que X menor igual mayor igual
=Y <> Y
Y X <= Y X >= Y
Operadores lógicos NOT AND OR XOR
complemento lógico Conjunción Disyunción or exclusive
Funciones Basic.
Do LOOP Do ’inicio del lazo instrucciones Loop ’regreso al inicio del salto
DO LOOP-UNTIL Do A=a+1 Loop until a=2 ’Cuando a=2 entonces sale del lazo
FOR NEXT For a=inicio to fin step pasos instrucciones Next a
SELECT CASE Select case variable Case 1:instruccion Case 2:instruccion Case n:instruccion End select
WHILE WEND While condicion Instrucciones Wend
WAIT tiempo en segundos WAITMS tiempo en milisegundos WAITUS tiempo en microsegundos SET RESET
poner un 1 al pin poner un 0 al pin
Las demas instrucciones las explicaremos con los siguientes programas.
Configuración del cristal: $crystal=1000000 (en hertz) Configuración del puerto serial: $baud=2400 Configuración de los pines: Los pines del microcontrolador avr tienen 3 registros los cuales son: Registro ddr, port, pin. El registro ddr nos configura al pin como entrada salida, port es el registro de salida y pin es el registro de entra.
Ddrb.0=0 entrada alta impedancia Portb.0=0
Ddrb.0=0 entrada pull up Portb.0=1 Ddrb.0=1 salida a cero 20 mA Portb.0=0 Ddrb.0=1 salida a uno 20 mA Portb.0=1
USO DEL LCD 16x2 Primeramente abrimos el BASCOM AVR y entramos en option, compiler, lcd como se muestra en la figura 1
Para poder definir el lcd y los pines a ser conectados en el hardware como se muestra en la figura 2
Ejemplo para manejar un LCD 16x2 ‘defino la velocidad del cristal $crystal=1000000 ‘defino la variable A Dim A as byte ‘borrar pantalla Cls ‘apago el cursor Cursor off ‘inicio lazo infinito Do ‘posición fila 1, columna 1 Locate 1,1 ‘escribo en el lcd Lcd “juan galarza 2006” ‘posicion fila 2, columna 1 Locate 2,1 Lcd “apm atmel” Espero 2 segundos
Wait 2 ‘enciende el cursor Cursor on Wait 2 ‘tilila cursor Cursor blink Wait 2 ‘deja de titilar cursor Cursor noblink Wait 2 ‘apago el cursor Cursor off ‘hago un lazo finito de 1 a 16 For A=1 to 16 ‘desplazo una localidad al lcd hacia la derecha Shiftlcd right,1 Wait 1 Next For a=1 to 16 ‘desplazo una localidad al lcd hacia la izquierda Shiftlcd left,1 Next Loop
Para generar un carácter que no exista en el ascci del LCD se procede de la siguiente manera. Ingresamos a tools, lcd designer y generamos el símbolo que deseamos, como se muestra en la figura 3
Y ponemos uno o ceros para dar la forma como se indica en la figura 4
Con lo cual se genera el código deflcdchar, para visualizar en el LCD utilizamos la instrucción: Locate 1,15 lcd char(0) Y se imprime en el LCD en la posición fila 1 columna 15 el carácter generado.
CONFIGIGURACION DE LOS ADC(10 bits 0 - 1023) Utilizamos la siguiente configuración: Siempre y cuando el microcontrolador tenga conversores. $regfile = "m8def.dat" $crystal = 1000000 Config Adc =Single,Prescaler=Auto,reference=internal/external Start Adc ‘inicio de conversion de los ADC Dim analogico As Word, canal As Byte Channel = 0 Do Analógico= Getadc(channel) Locate 1,1 Lcd "Canal " ; Canal ; " valor " ; analogico;” ” Incr Canal If Canal > 7 Then Canal = 0 Wait 2 Loop End 'INTERNAL : voltaje de referencia interno es 2.56 V
‘EXTERNAL: voltaje que se encuentra en el pin VREF de 0 a 5V.
COMUNICACIÓN RS232 La función de envío es print, y la de recepción es inkey, input.
BARRIDO DE TECLADO: Utilizando un teclado matricial, que consiste en pulsadores unidos en forma horizontal y vertical como se muestra en la siguiente figura.
Para la lectura se procede de la siguiente manera: definimos el puerto por ejemplo el portb de forma que los primeros 4 bits sean salidas a 1 y los otro 4 bits más significativos sean entradas pull up. DDRB=&B00001111 PORTB=&B11111111 Luego designamos sobrenombres a los pines: X1 alias portb.0 X2 alias portb.1 X3 alias portb.2 X4 alias portb.3 Y1 alias pinb.4 Y2 alias pinb.5 Y3 alias pinb.6 Y4 alias pinb.7 Por ultimo barremos las filas para leer las columnas: Dim tecla as byte do
Tecla=16 Reset X1 If Y1 = 0 then If Y2 = 0 then If Y3 = 0 then If Y4 = 0 then Set X1
tecla tecla tecla tecla
= = = =
0 1 2 3
Reset X2 If Y1 = 0 If Y2 = 0 If Y3 = 0 If Y4 = 0 Set X2
then then then then
tecla tecla tecla tecla
= = = =
4 5 6 7
Reset X3 If Y1 = 0 If Y2 = 0 If Y3 = 0 If Y4 = 0 Set X3
then then then then
tecla tecla tecla tecla
= = = =
8 9 10 11
Reset X4 If Y1 = 0 If Y2 = 0 If Y3 = 0 If Y4 = 0 Set X4
then then then then
tecla tecla tecla tecla
= = = =
12 13 14 15
Utilizamos un eliminador de rebotes por software: If tecla<16 then waitms 200 Locate 1,1 Lcd tecla;”
”
loop End ‘fin de programa
PROTEUS: Es un programa desarrollado para realizar esquemáticos, simulación, y pcb.
MANEJO DE ENTRADAS PARLANTES, BUZZER)
SALIDAS(PULSADORES,
Blink.bas $crystal = 1000000
'cristal a ser ultilizado
Ddrb.2 = 1 Portb.2 = 0
'activo Portb.2 como salida a 0
led Alias Portb.2
'sobrenombre del Portb.2
Do Set Led Wait 1 Reset Led Wait 1
'pone 1 al pin led 'espera de 1 segundo 'pone 0 al pin led 'espera de 1 segundo
LEDS,
Loop
Led_sw.bas
Los códigos fuentes y diagrama circuital se encuentran en formato .bas y .dsn respectivamente adjunto en el cd. Mayor información no dude en enviarme al email. Gracias por su acogida sus sugerencias serán bien recibidas.
ALL POWER MICROCONTROLLER Juan Galarza Jefe de diseño Email: [email protected]