Вы находитесь на странице: 1из 17

Curso de Programación de Microcontroladores en C Página 1 de 17

Compartir 1 Más Siguiente blog» Crear un blog Acceder

Curso de Programación de Microcontroladores en C


Curso de Programación Descargar Programas VideoTutoriales a Medida Lecciones Personalizadas Autor Libros

Cursos Comprados

martes, 21 de agosto de 2012

Manejando LCD con Atmega8 en Basic


Esta es una de las ventajas de programar microcontroladores con un lenguaje de alto nivel, como es Basic, la
facilidad de manejar un LCD es tan simple que hasta un niño podria hacerlo. Veamos que con unas cuantas
lines de código podemos estar manejando un LCD de 2x16, lo más interesante es que podemos asignar
cualquier pin del microcontrolador para manejar el LCD, asi pues podemos utilizar pines del microcontrolador
que no tenga otra funcion principal, como el control de un comunicación serial, salida de un PWM, etc.

Esquema Electrónico:

Lecciones de Programación

1. Introducción de Aprende a
Programar PIC

2. Programación de led parpareando en


un PIC

3. Implementacion de Código Morse en


un PIC

4. Movimiento de leds controlado con


un PIC

5. Control de Display de 7 Segmentos


con PIC

Programa de Control: 6. Programando un Switch en un PIC

7. Sentencia de Control IF en un PIC

8.Programando un Atmel: Mi primer


Programa

9.Parpadeo de Leds con un Atmel

Seguidores

ANEXOS.
Google Friend Connect
1. Introducción.
Miembros (8)
Uno de los dispositivos electrónicos más usados en la industria para mostrar datos numéricos o palabras es el
LCD, este elemento es tan fácil de usar mediante un microcontrolador que lo pueda manejar, pues con
circuitos simples no se puede dotar de funciones tan importantes para interactuar con el mundo externo.

¿Ya eres miembro? Iniciar sesión

Todos desean aprender a manejar dicho dispositivo, pero pocos saben programar microcontroladores, que es
vital para manejar a gusto propio el LCD. Es por esa razón que ahora les enseñare a programar un LCD con
un Microcontrolador Atmega8, el programa estará escrito en Basic.

2. LCD (Liquid Crystal Display).

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 2 de 17

Una pantalla de cristal líquido o LCD es una pantalla delgada y plana formada por un determinado número de
pixeles monocromos o coloridos, colocados delante de una fuente luminosa. Una de las principales
características de las pantallas LCD es su bajo consumo de energía eléctrica.

Controlador de la pantalla JHD-162A, HD44780: El controlador HD44780 es el circuito que se encuentra en la


pantalla JHD-16ª y es el que controla el manejo del LCD, es recomendable revisar la hoja de datos del mismo
ya que explica los modos de manejo del LCD y las instrucciones de este.

Modelos:

LCD No-Backlit (2x16)

LCD Backlit (2x16)

LCD Terminal (2x8)

LCD (4x20)

LCD grafico VFD (112x16)

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 3 de 17

GLCD

Mini LCD A/V Color (3.5”).

Pines del LCD 2x16:

De esta tabla hay que conectar correctamente la alimentación del LCD.


Para la entrada de contraste (VEE), tenemos que hacer un circuito divisor de tensión, tal como se muestra a
continuación, esto para poder variar el brillo:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 4 de 17

Caracteres que se pueden mostrar en un LCD de 16x2:

Manejando el LCD:

El manejo de un LCD, se basa en una secuencia de comandos que deben ser enviados desde el
microcontrolador, durante un tiempo predeterminado por el fabricante. Pero cuando se trata de programación
en alto nivel, este proceso es realizado internamente por el compilador o por librerías que previamente están
hechas en el software.

LCD manejado por un Microcontrolador:

LCD manejado por un Microcontrolador que a su vez maneja el control de brillo del LCD:

Circuito completo para un buen uso del Microcontrolador:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 5 de 17

Modos de controlar el LCD:

Modo de 8 Bits:

Modo de 4 Bits:

"Ayudanos a crecer, dale un +1 de google"

Publicado por Gilberto Pascual Trujillo en 9:01 No hay comentarios:

+39   Recomendar esto en Google

lunes, 13 de agosto de 2012

PROGRAMANDO EN BASIC: Lenguaje de alto Nivel para


Microcontroladores.

Basic es un lenguaje de programación de alto nivel, este lenguaje nos proporciona herramientas, fácil de usar
al momento de interactuar con los elementos internos de un microcontrolador, es decir el código necesario
para poder utilizar el Timer, el LCD, el ADC, el RCT, entre otras herramientas internas que nos proporciona el
microcontrolador, es tan fácil de programar, que cualquier niño lo podría hacer.

Encendido y Apagado de un LED

El siguiente proyecto hará que un led se encienda y se apague con una frecuencia de 1Hz.

Esquema Electrónico:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 6 de 17

Programa del Microcontrolador:

Explicación del programa:

$regfile = M8def.dat
//con esta palabras reservadas del Bascom-AVR configuramos el tipo de microcontrolador a usar, para este
caso el Atmega8.

$crystal = 8000000
//Este comando es para definir el cristal, es decir el oscilador o nuestra frecuencia de trabajo, para este caso
vamos a usar un cristal de 8 Mhz.

Config PORTB.0 = Output


//Este comando nos permite configurar si los puertos van a ser entradas o salidas, para este ejemplo se
configura el PIN B0 del microcontrolador Atmega8, como salida.

Led alias PORTB.0


//con el comando Alias, se pone nombre a los puertos, para el ejemplo al PIN B0, le estamos dando el nombre
de Led.

Led=0
//Esta es una asignación de valor, es decir le estamos dando el valor de “0 lógico” a la variable Led, que en
definitiva es el PIN B0.

Do
Loop
End
//Esta es la parte más importante del programa, pues en el vamos a escribir todo nuestro programa, en este
caso el Bascom-AVR, nos proporciona un lazo indefinido con la palabra reservada DO. Es decir todo este
comando hace que todo su contenido se repita una u otra vez, es un lazo cerrado indefinido.

Toggle Led
//El comando Toggle, hace que se invierta el valor de la variable, o se aplique el complemento de la variable,
o más claramente, se aplica un operación not a la variable que engloba este comando.

Wait 1
//Con este comando, se establece los retardos de tiempo, para nuestro ejemplo estamos haciendo un retardo
de 1 segundo.

ANEXOS.

Anexo 1: Programando en Bascom-AVR.

Hacemos doble clic en el icono de Bascom-AVR:

Nos aparecerá la siguiente ventana de inicio del inicio del programa:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 7 de 17

Creamos una hoja nueva, para ello nos vamos a la pestaña FILE:

Le damos clic en new, nos generara una nueva hoja en blanco, esta nueva hoja tan simple como una hoja de
texto nos proporcionara todas las herramientas necesarias para programar microcontroladores de la fábrica
Atmel, pero utilizaremos para su programación el lenguaje de alto nivel como Basic.
Nos genera el documento en blanco, como se muestra a continuación:

Así que empecemos a escribir el programa, al final de redactar todo el programa nos quedara algo así:

Para terminar, debemos de compilar el programa, así que le damos clic en el icono del chip de color negro o
presionamos la tecla F7, nos presentara la siguiente ventana:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 8 de 17

Si no hemos tenidos errores en la escritura, no se presentara problemas en la compilación.


Para terminar con este anexo para la utilización del programa Bascom-AVR, solo déjenme mostrarles todos
los archivos generados por el programa después de compilar.

De esta listas los archivos más importantes son los archivos de extensión “. Bas” y el archivo de extensión
“.hex”, el archivo de extensión .bas, contiene el programa escrito en Bascom-AVR, este archivo puede ser
abierto por Notepad o WordPad.

El otro archivo de extensión .hex, es el más importante a la hora de pasar el programa escrito en Bascom-
AVR hacia el microcontrolador, es decir el archivo necesario para grabar el microcontrolador.
Anexo 2: Simulaciones en ISIS Profesional 7.7 SP2. (Proteus).

Dibujamos el esquema presentado en proteus, tal como se muestra a continuación:

Cargamos es programa hecho en Bascom-AVR, para ello hacemos doble clic en elemento del
microcontrolador Atmega8, nos presentara la siguiente ventana:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 9 de 17

En la sección donde dice: “Program File”, hacemos clic en el icono de la carpeta abierta, nos abrirá la ventana
de examinar, es allí donde seleccionaremos el archivo de extensión “.hex”, que nos a generado el programa
Bascom-AVR.

Para finalizar de cargar el programa, le damos clic en abrir, y luego en Ok.

Empezamos a simular nuestro programa, para medir el tiempo establecido en los cambios de valor, yo he
utilizado el Osciloscopio que incorporar Proteus en sus libreriras par medir dicho tiempo, veamos:

Activando los cursos del Osciloscopio, tomamos las medias:

Veamos que la señal de valor bajo (0 lógico), está activa por un tiempo de 1 Segundo, en frecuencia seria de
1Hz, lo mismo ocurre con el valor lógico alto (1 lógico).

NOTA:

Para poder implementar este pequeño ejemplo de programación hecho en lenguaje Basic para
microcontroladores Atmel, debemos añadir al circuito electrónico una resistencia de 220 Ohmios, a la hora de

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 10 de 17

grabar el programa al microcontrolador debemos de configurar el reloj a usar que es de 8Mhz, recuerden que
el microcontrolador Atmega8, de fábrica viene configurado con un cristal interno de 1Mhz.

Publicado por Gilberto Pascual Trujillo en 18:24 No hay comentarios:

Recomendar esto en Google

jueves, 28 de junio de 2012

Parpadeo de Leds en un Atmega


Resumen:

En esta segunda leccion de programacion de microcontroladores de la fabrica Atmel con lenguaje C, vamos a
realizar un programa que haga que una fila de leds, tengan un parpadeo que nos da la sensacion del
movimiento de una luz que se desplaza.

Esquema Electronico:

Programando en C:

1. Abrimos el programa Atmel Studio 6.0, nos mostrara la siguiente pantalla:

2. Hacemos clic en New Proyect, nos aparece la pantalla en cual vamos a especificar, el nombre del proyecto,
el tipo de lenguaje de programación que vamos a utilizar (tenemos dos lenguanje C++ y C), así que
escribimos y seleccionamos la ruta donde se guardaran los archivos que nos genere al compilar el programa,
todo lo dejamos tal como nos muestra la siguiente imagen:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 11 de 17

3. Le damos OK, luego nos aparece el cuadro en el cual vamos a seleccionar el microcontrolador Atmel que
vamos a utilizar, vamos a utilizar el microcontrolador Atmega8, tal como se muestra a continuación:

4. Finalmente le damos OK, y nos aparecerá la pagina principal, en el cual vamos a escribir todo nuestro
programa en lenguaje C, la imagen que nos presenta es la siguiente:

5. Empecemos con la programación, así que les presento el programa elaborado, que posteriormente se
explicara paso a paso, cada una de las funciones y palabras reservadas usadas.

6. Analizando el código del programa:

//Se utiliza para introducir comentarios.

#include <avr/io.h>
/*Llamamos a nuestra hoja la librería que contiene las funciones para la configuración y manejo de los
puertos de entrada y salida del microcontrolador*/

#include <util/delay.h>
/*Llamamos a nuestra hoja la librería que contiene todas las funciones para el control de retardos de tiempo,
entre las funciones mas usadas son: _delay_ms(), _delay_loop_1(), delay_loop_2(), entre otras funciones que
miden el tiempo de retardo que deseemos dar al realizar una acción.*/

int main(void){
}
/*Función principal, en el se encuentra todo lo que va ha realizar nuestro microcontrolador*/

DDRD = 0xFF;
/*Con la función DDRD, le decimos que vamos a configurar el puerto D, si fuera DDRB, configuramos el
puerto B, etc.
El valor 0xFF, el un valor Hexadecimal, 0x...Significa que vamos a escribir un valor Hexadecimal,
0xb..,significa que vamos a escribir un valor binario, para este caso FF = 255, es decir que todos los pines del
puerto D, van ha ser configurados como salidas (0 = entrada; 1 = salida).*/

while(1){
}

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 12 de 17

/*Es una sentencia de control, es decir, esta función proviene del lenguanje C, lo que dice es que mientras
sea 1, hacemos todo lo que esta dentro, para este caso al introducir en su parámetro (1), esto siempre sera
verdadero y por lo tanto se ha creado un lazo cerrado, siempre se va ha repetir todo lo que esta dentro de
esta función de control.

for(int i=1; i<=128; i=i*2){


}
/*Esta es otra función de control, el cual hace uso de una variable llamada i de tipo int (valor de 8 bits), bueno
lo que dice esta función es que configuramos a la variable i con int(valor de 0 a 255), todo lo que este dentro
se va ha repetir mientras i<=128, y cada vez que se repita i va ha tomar el valor de i*2, es decir cada vez que
el bucle se repita la variable i se va ha multiplicar por 2 (i=i*2) y esto se va ha repetir hasta que i sea menor o
igual a 128 (i<=128).*/

PORTD = i;
/*A todos los pines del puerto D, o mejor aun todo el puerto D va ha tomar el valor de i, es decir cada pin del
puerto D, va ha funcionar como un dígito de una numero de 8 bits.*/

_delay_loop_2(30000);
/*Esta función hace que el proceso anterior se repita por el tiempo que engloba su parámetro, para este caso
es de 30000, recuerde que _delay_loop_2(), es una función que genera tiempo cortos, es decir en el orden de
los micro segundo (us) así que cuando decimos _delay_loop_2(30000), le estamos dando 30000us de
retardo.*/

for( int i=128; i>=1; i-=i/2){


}
/*En esta parte del programa vamos a hacer una lectura inversa, si se han dado cuenta en el primer for, el
puerto D toma los valores de 1, 2, 4, 8, 16, 32, 64, 128, estos valores en forma física son los valores que tiene
por separado cada pin del puerto D, en este for se hace el proceso inverso, es decir empezamos del valor
mas alto 128, 64, 32..., 1; y así logramos el efecto del encendido o mejor dicho del recorrido de un led en toda
una fila de 8 leds.

7. Finalmente compilamos el programa, si no tenemos errores, nos mostrara la siguiente ventana, al compilar:

Lo que nos importa es que al final, en la parte de la salida nos muestre la siguiente frase:

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Esto nos indica que se ha creado correctamente nuestro archivo hexadecimal, así como nos muestra la
siguiente imagen:

Bueno eso es todo, espero que lo simulen en proteus e intente modificar el código, para que se familiaricen
con la programación de microcontroladores Atmel, con lenguanje C.

Publicado por Gilberto Pascual Trujillo en 20:00 No hay comentarios:

Recomendar esto en Google

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 13 de 17

martes, 26 de junio de 2012

Programando un Atmel: Mi primer programa


Resumen:

Todos los que nos enseñan a programar microcontroladores empiezan haciendo un programa que hace que
un Led se prenda y se apague, y esto es lo que nosotros vamos realizar, pero de una forma didactica y super
facil de enterder.

Esquema Electrónico a utilizar:

Programando en C:

Para aprende a programar microcontroladores de la fábrica Atmel, vamos a utilizar el Atmel Studio 6.0
que lo pueden descargar se su pagina web.

Empecemos:

Iniciando el programa Atmel Studio 6.0, nos mostrara la siguiente página de Bienvenida:

El programa esta en ingles, además es un poco pesado, pero no importa al final a cabo solo es un único
instalador, porque las versiones anteriores teníamos que instalar primero el núcleo o que diga el compilador,
luego el programa para escribir en el lenguaje C, era todo un problema instalarlo, porque el programa
trabajaba bien, pero a la hora de compilar, no generaba el archivo .HEX, que al final cabo es lo único que vale
para llevar nuestro esquema al mundo real.

Así que empecemos a crear nuestro primer proyecto, le damos: New Proyect, en la pagina inicial y nos
mostrara la siguiente imagen:

Elegimos en primer lugar el lugar en el cual vamos a crear el nuevo proyecto, para no hacernos problemas,
creamos una carpeta y allí es donde vamos a guardar el proyecto.

Name: Ejem1
Location: C:\Documents and Settings\Administrador\Escritorio\Ejem1\ (Creamos una carpeta en el escritorio).
Solution name: Ejem1

Finalmente y lo más importante elegimos como lenguaje de programación en la primera opción:

GCC C Executable Project C/C++ (Es la mejor opción para iniciara programar microcontroladores de la
Fabrica Atmel, nos creara una hoja para ser programado en lenguaje C y al compilar nos creara el
archivo .HEX, que lo único que nos sirve para grabar el programa físicamente en el microcontrolador).

Le damos Ok, y nos aparecerá la siguiente imagen:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 14 de 17

En esta parte hay que seleccionar el microcontrolador a utilizar, para ello escribiremos atmega8 en el cuadro
de búsqueda, este microcontrolador es ideal para aprender a programar microcontroladores de la fabrica
Atmel, tiene buenas características y el costo para mi es mas barato que un microcontrolador Microchip.

Bueno, al hacer la búsqueda, nos muestra la siguiente imagen:

Después de tantos pasos para crear nuestro primer programa en lenguaje C para microcontroladores Atmel,
así que le damos Ok, y nos presentara la siguiente imagen:

Veamos que la hoja presenta ya códigos, que por defecto nos ha sido creador por el programa, así que
explicaremos un poco del código, para empezar a entender como es el lenguaje C para los
microcontroladores Atmel, empecemos:

// Es el símbolo para introducir comentarios, pero de una sola linea.


/* Representa a un comentario más largo, solo recuerde que debe cerrarce con */

#include<avr/io.h>
/* Esta es llamada a una librería, en este caso llamaremos la librería que hace referencia a todas las palabras
reservadas, para el control de los puertos de entrada y salida.*/

int main (void){


/*Bueno esta es la función principal, en el escribiremos todo el código necesario para manejar nuestros
sistemas electrónicos, teniendo como cerebro un microcontrolador Atmel.*/
}

while(1){
/*Esta palabra reservada del C, significa "mientras", en este caso while(1), hace que todo lo que este dentro
se repita y otra vez.*/
}

Ya dejemos de explicaciones, así empecemos con el programa para el siguiente sistema electrónico que se
debe de programar en un microcontrolador Atmel.

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 15 de 17

Para explicar las palabras reservadas, vamos a ampliar el código generado:

Veamos:

#include <avr/io.h>
/*llama a nuestro hoja todas las funciones, para manejar los puertos de entrada y salida */

#include <util/delay>
/*Libreria que contiene todas las funciones para manejar los retardos de tiempo*/

int main (void){


/*Función principal, es todo lo que ejecutar nuestro microcontrolador*/
}

DDRB = 0x00;
/*La palabra reservada DDRB, hace referencia al puerto B, es decir le dice que vamos a configurar al los
registros del puerto B, en este caso con un valor "0", le decimos que entrada, con el valor "0x00", le decimos
que todos lo pines del puerto B, serán entradas.*/

DDRD = 0xFF;
/*Configuracion de registros, pero con "1", le decimos que vamos a configurar al puerto D como salida, con el
valor "0xFF", le decimos que todos los pines del D van ha ser salidas.*/

if(PINB==0x01)
{}
/*Esta condicional dice que: si el el PINB0=1, entonces se ejecuta su contenido, tenga presente que estamos
trabajando con valores hexadecimales y que cada valor binario hace referencia a cada PIN del
microcontrolador*/

PORTD = 0x01;
/*Escribimos en el el puerto D el valor Hexadecimal de 01, en binario: 0000 0001, en los pines seria:
D7D6D5D4 D3D2D1D0=0000 0001*/

_delay_ms(150);
/*Hacemos un pequeño retardo de tiempo que nos indicara cuanto tiempo estará prendido después de
presionar el Push Button.*/

PORTD = 0x00;
/*Hacemos de prender el led se apagué, es decir regrese a su estado inicial*/

Después de escribir nuestro código, solo nos queda compilar para genera el archivo de extensión .HEX, para
eso hacemos clic en Build:

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 16 de 17

Hacemos clic en Buil Ejem1:

Luego en la parte inferior del programa empezara a compilar, y no hay error nos presentara la siguiente
imagen:

Y en la carpeta que crearon su proyecto se habrán generado los siguiente archivos:

Y en la carpeta Debug:

En esta carpeta se encuentra un archivo de extensión .hex (Ejem1.hex), este archivo es lo único que
necesitamos para grabar el programa en un microcontrolador, veamos su contenido con el editor de texto y
nos mostrara la siguiente imagen:

Bueno creo nadie podría entenderlo, pues solo es código hexadecimal, son valores Hexadecimales, que no
nos dan referencia de que es lo que hace nuestro programa.

Finalmente cargamos este archivo en proteus, para comprobar su funcionamiento.

Publicado por Gilberto Pascual Trujillo en 19:25 10 comentarios:

Recomendar esto en Google

Página principal Entradas antiguas

Suscribirse a: Entradas (Atom)

http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 17 de 17

Plantilla Awesome Inc.. Con la tecnología de Blogger.

http://comoprogramarpic.blogspot.mx/ 31/05/2014

Вам также может понравиться