Академический Документы
Профессиональный Документы
Культура Документы
Cursos Comprados
Esquema Electrónico:
Lecciones de Programación
1. Introducción de Aprende a
Programar PIC
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.
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.
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.
Modelos:
LCD (4x20)
http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 3 de 17
GLCD
http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 4 de 17
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 que a su vez maneja el control de brillo del LCD:
http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 5 de 17
Modo de 8 Bits:
Modo de 4 Bits:
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.
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
$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.
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.
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
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).
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.
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:
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.
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:
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.
#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.
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.*/
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.
http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 13 de 17
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.
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
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).
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.
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:
#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.*/
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
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*/
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
Luego en la parte inferior del programa empezara a compilar, y no hay error nos presentara la siguiente
imagen:
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.
http://comoprogramarpic.blogspot.mx/ 31/05/2014
Curso de Programación de Microcontroladores en C Página 17 de 17
http://comoprogramarpic.blogspot.mx/ 31/05/2014