Vous êtes sur la page 1sur 51

SESIN VIII-X

CCS PARA
MICROCONTROLADORES PIC

POR: EULER DEZA FIGUEROA


EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

SHIFT REGISTER que son y cmo se usan?


El pinout del 74HC595 es el siguiente:

Los pines marcados como Q0-Q7

son salidas y reflejan el estado


interno de cada bit cuando es
activado poniendo a nivel alto el
pin 12 (STCP), los datos ingresan
de forma serial por el pin 14(DS)
cada vez que el pin SHCP pasa de
estado bajo a alto ( de 0v a 5v).

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

SHIFT REGISTER que son y cmo se usan?


Tambin se pueden enlazar varios integrados

iguales de modo que ampliamos la cantidad de


bits. para ello agregamos un segundo integrado y
conectamos la patilla DS(14) a la patilla Q7(9)
del primero.
La secuencia seria la siguiente:
1.Se pone el pin DS(14) en el estado del bit
que se quiera ingresar
2.Pin SHCP(11) en bajo /RETARDO
3.Pin SHCP(11) en alto
4.Se repite el proceso hasta enviar los 8 bits
5.Se coloca el pin STCP(12) en bajo
6.Se coloca el pin STCP(12) en alto
Y de esa forma aparece el byte en las salidas.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

SHIFT REGISTER que son y cmo se usan?


El pinout del 74HC165 es el siguiente:

De manera similar funciona el 74HC165

solo que a los bit los "lee" todos juntos.


Aqu las entradas son D0 a D7 y la salida

es Q7, PL es el Load y cuando pasa a


estado bajo carga los valores de las patas
D0-D7 en "memoria" y dandole pulsos
altos y bajos a CP los datos van saliendo
bit a bit.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

SHIFT REGISTER que son y cmo se usan?


El pinout del 74HC165 es el siguiente:

Para encadenar varios basta

con conectar Q7 de un
integrado con DS del
siguiente y leer la pata Q7
del ltimo.
Este

es el diagrama de
conexin para leer 16 bits
(2bytes) con dos integrados
enlazados:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

SHIFT REGISTER que son y cmo se usan?


El pinout del 74HC165 es el siguiente:

La forma de proceder sera as:


Se pone en bajo el Load para tomar el estado de todas las

entradas (b0 a b15) luego se enva la seal de reloj poniendo en


bajo y luego en alto Clk y se lee el estado de DI (Data-In). Recordar
que en DI aparecer primero el bit mas significativo (MSB).
Esta tcnica es vlida para controlar un display LCD, o multiplexar

cualquier dato.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 10: Manejo de SHIFT REGISTER 74HC165


En el ejemplo, Clock se conectara al pin 0, Load al pin 1 y DI al pin 2 del

Puerto A. Este programa solo leer de b8 a b15

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 10: Manejo de SHIFT REGISTER 74HC165

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 10: Manejo de SHIFT REGISTER 74HC165


En el ejemplo, Clock se conectara al pin 0, Load al pin 1 y DI al pin 2 del Puerto A. Pero

este programa solo leer de b8 a b15, para leer b0 a b15 se deber usar Int de 16 bits
para guardar los datos o dos de 8 bits y guardarlos en variables diferentes. Aparte de
todo esto se deber hacer un bucle de 16 ciclos en lugar de los 8 para leer 1 byte.
Con este circuito el nico pin exclusivo para el funcionamiento del registro es el pin A2

(Data in) ya que los otros se pueden conectar a otros circuitos sin que afecten a este.
SiLMuP (todava en construccin) utiliza un 74HC595 para controlar el display LCD y por

el mismo bus controlar las teclas de funcin y un 74HC165 para leer el estado de los
sensores de lneas.
De esta forma controla un display LCD, 4 teclas de funcin, 8 sensores siguelineas, y

proximamente mas sensores y bumpers para obstaculos con 6 pines del pic y solo 3 son
exclusivos

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 11: Manejo de SHIFT REGISTER 74HC164 [CONTADOR 0-99]


En el ejemplo, Clock se conectara al pin 0, Data al pin 1 del Puerto B. Este

programa solo leer de b8 a b15

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 11: Manejo de SHIFT REGISTER 74HC164 [CONTADOR 0-99]

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 11: Manejo de SHIFT REGISTER 74HC164 [CONTADOR 0-99]

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 12: Manejo de SHIFT REGISTER 74HC595 [CONTADOR 0-99]


En el ejemplo, se tiene las siguientes conexiones:
#define SH_CP Pin_B0 / #define DS Pin_B1 / #define ST_CP

Pin_B2

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 12: Manejo de SHIFT REGISTER 74HC595 [CONTADOR 0-99]

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 12: Manejo de SHIFT REGISTER 74HC595 [CONTADOR 0-99]

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 12: Manejo de SHIFT REGISTER 74HC595 [CONTADOR 0-99]

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Conexin y funciones de un mdulo LCD


Una pantalla de cristal lquido o LCD (Liquid Cristal Display) es un dispositivo para la

presentacin de imagenes o caracteres. En este caso usaremos uno basado en el


Controlador Hitachi 44780 o compatible, que muestra 16 o 20 caracteres en 1, 2 o 4
lneas. Las funciones de control son iguales para todos los modelos.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


CONEXIONADO:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


CONEXIONADO:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


Bueno, la operacin del display es bastante sencilla ya que el Controlador interno, hace

casi todo el trabajo, para comandarlo debemos saber como funcionan sus pines.
Para enviar un comando o un dato deberemos primero indicar que es lo que estamos
enviando para eso se usa el pin RS, cuando este pin esta en 0 el LCD interpretar la
informacin que esta presente en sus pines D0 a D7 como un comando, si est en 1
significa que estamos envindole un carcter, en cuyo caso se imprimir donde est
actualmente el cursor.
Asimismo en lugar de enviar informacin puede llegar el momento en que queramos leer
algo de su memoria, para eso se utiliza el pin R/W, en 0 el LCD estar en modo escritura y
en 1 en modo lectura.
El pin E es el que le indica al display que ejecute la operacin que estamos envindole,
cuando este pin esta en 0 cualquier modificacin que hagamos en sus otros pines ser
ignorada. Entonces la forma de proceder ser asi:
-Se colocan los pines RS en 1 o 0 dependiendo si vamos a enviar un caracter o una

direccin.
- R/W a 0 si queremos enviar un caracter o un comando y en 1 si queremos leer
algun dato del display.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


- Ponemos D0 a D7 Con el valor del caracter que queremos

imprimir, o con el comando que deseamos ejecutar en el


display ( si R/W es 1 estos pines se convertiran en salidas y
solo podremos leer el estado)
- Por ultimo se pone en alto el pin E y el display ejecutar la
funcin.
Ahora bien, como veremos, el R/W no lo usaremos, ya que como nosotros

escribiremos en el display no necesitaremos obtener ninguna informacin de


el, para hacer esto basta con conectar el pin 5 (R/W) directamente a GND y el
LCD estar siempre en modo escritura.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


Para enviar un carcter simplemente ponemos RS en 1 y el valor binario del carcter

en los pines D0 a D7 y aparecer nuestro carcter en pantalla. luego pasamos a 1 el


pin E

IMPRESIN DE CARACTERES

Pero esto solo nos permite escribir un caracter al lado de otro, para seleccionar

donde escribir, borrar pantalla etc debemos hacer el mismo procedimiento pero con
el pin RS en 0 y los pines D0 a D7 con el valor del comando correspondiente a la
operacin que queramos hacer:

CLEAR DISPLAY

Borra el contenido de la pantalla


EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


HOME

Coloca el cursor en el primer espacio de la primera lnea sin modificar el contenido

de la pantalla

ENTRY MODE SET

Especifica el modo en que se imprimirn los caracteres.

I/D = 0 Incrementa el cursor


I/D=1 Decrementa el cursor
S=0 Desplaza el cursor
S=1 Desplaza el display
EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


DISPLAY ON/OFF CONTROL

Control de encendido y apagado de la pantalla.

D=0 Pantalla apagada


D=1 Pantalla encendida
C=0 Oculta el cursor
C=1 Muestra el cursor
B=0 Cursor esttico
B=1 Cursor parpadeante

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


CURSOR OR DISPLAY SHIFT CORREGIR

Mueve el display o el cursor

S/C=0 Mueve el cursor


S/C=1 Mueve el display
R/L=0 Mueve a la derecha
R/L=1 Mueve a la izquierda

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


FUNCTION SET

Establece el bus de datos, cantidad de lneas y modo de caracteres

DL=0 Bus de datos de 4 bits (D4 a D7)


DL=1 Bus de datos de 8 bits (D0 a D7)
N=0 LCD de 1 lnea
N=1 LCD de 2 lneas
F=0 Caracteres de 5 x 7 pixeles
F=1 caracteres de 5 x 10 pixeles

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

CONEXIN Y FUNCIONES DE UN MDULO LCD


SET CG RAM ADDRESS

Ingresando de este modo la direccin de la CG RAM, indica que cuando usemos el

comando para escribir en el display, lo que enviaremos sern caracteres


personalizados, se necesitan 7 instrucciones por carcter.

SET DD RAM ADDRESS

Cuando escribimos en el display lo que en realidad estamos dicindole al mdulo

que haga es almacenar X carcter en Y posicin de memoria, con este comando


indicamos en que lugar de la DD RAM se guardar el prximo carcter que
enviemos. 80-8F corresponde a la memoria para la primera lnea y C0-CF a la
segunda..
EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C


Partiendo de saber la Conexin y funciones de un mdulo LCD ahora veremos

como se utiliza en la prctica. Para empezar veamos el diagrama de la conexin


mas bsica para poder comenzar a utilizar el display

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C


En el diagrama utilizamos el Pin 0 del puerto A para la seal Enable del display y el

Pin 1 del mismo puerto para la seal RS.


R/W lo conectamos directamente a GND ya que en este proyecto no leeremos el

estado del display en ningn momento.


El puerto B lo dedicaremos enteramente al bus de datos del LCD.
Todos los puertos que no utilizaremos, asi como el RESET del PIC, los conectamos

a 5V por medio de un resistor.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C


Pero si se arma el circuito y graban el PIC con la rutina, vern que pueden

modificar la frase, pero siempre aparecer en la primer lnea. Si volvemos a


Conexin y funciones de un mdulo LCD y consultamos dichas funciones, veremos
que hay una que se llama SET DD RAM ADDRESS; La memoria DD RAM es la que
contiene los caracteres que estn en pantalla. De modo que esa funcin se llama
Establecer la direccin de la DD RAM, o sea, que lo que hace es cambiar la
posicin donde se almacenar el prximo caracter, por lo tanto, lugar donde
aparecer en pantalla.
Para hacer que escriba donde queramos, antes de escribir, deberemos ejecutar un
SET DD RAM ADDRESS. Continuando con nuestra rutina lo podemos hacer del
siguiente modo:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C


Pero si se arma el circuito y graban el PIC con la rutina, vern que pueden

modificar la frase, pero siempre aparecer en la primer lnea. Si volvemos a


Conexin y funciones de un mdulo LCD y consultamos dichas funciones, veremos
que hay una que se llama SET DD RAM ADDRESS; La memoria DD RAM es la que
contiene los caracteres que estn en pantalla. De modo que esa funcin se llama
Establecer la direccin de la DD RAM, o sea, que lo que hace es cambiar la
posicin donde se almacenar el prximo caracter, por lo tanto, lugar donde
aparecer en pantalla.
Para hacer que escriba donde queramos, antes de escribir, deberemos ejecutar un
SET DD RAM ADDRESS. Continuando con nuestra rutina lo podemos hacer del
siguiente modo:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C (Prog 2)


Escribiendo en las dos filas

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C (Prog 2)

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C (Prog 2)

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Control de un mdulo LCD con PIC y CCS C (Prog 2)

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD [ LIBRERA PIC C CCS ]


Las salidas digitales sirven para interfazar el microcontrolador con diferentes dispositivos

externos como motores, LEDs, interfaces de potencia ,etc.


Una herramienta muy til para visualizar datos es el display LCD, en este caso, el de 16x2
nos permite mostrar caracteres ASCII.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


Se acostumbran ha utilizar LCD del tipo HD44780, con un numero de lneas
variable y un numero de lneas variable y un numero de caracteres por lnea
tambin variable (por ejemplo, con 2x16) se trabaja con dos lneas de 16
caracteres cada una)

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


El bus de datos es de 8 bits, aunque tambin existe la posibilidad de trabajar

con 4 bits (con un menor numero de caracteres).


El compilador C incluye un fichero (driver) que permite trabajar con un LCD.
El archivo LCD.c y debe llamarse como un #INCLUDE. Dispone de varias
funciones ya definidas:
Lcd_init();

// Es la primera funcin que debe ser llamada


// Borra el LCD y lo configura en el formato de 4 bits, con dos lneas y con caracteres
de 5x8 puntos, en modo encendido, cursor apagado y sin parpadeo
// Configura el LCD con autoincremento del puntero de direcciones y sin
desplazamiento del display real
Lcd_gotoxy(byte x, byte y)
// Indica la posicin de acceso al LCD. Por ejemplo, (1,1) indica la primera posicin de
la primera lnea y (1,2) indica la primera posicin de la segunda lnea.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


Lcd_gotoxy(byte x, byte y)

// Indica la posicin de acceso al LCD. Por ejemplo, (1,1) indica la primera posicin de
la primera lnea y (1,2) indica la primera posicin de la segunda lnea.
Lcd_getc(byte x, byte y);

// Lee el carcter de la posicion (x,y).


Lcd_putc(char s);
// S es una variable de tipo char. Esta funcion escribe la variable en la
posicion correspondiente. Si, ademas, se indica
\f se limpia el LCD.
\n el cursor va a la posicion(1,2)
\b el cursor retrocede una posicion
// El compilador de C ofrece una funcion mas versatil para trabajar con el
LCD:

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


// El compilador de C ofrece una funcin mas verstil para trabajar con el
LCD:
Printf (string)
Printf (cstring, value )
Printtf (fname, cstring, values )
// String es una cadena o un array de caracteres, values es una lista de
variables separadas por comas y fname es una funcin
El formato es %nt, donde n es opcional y puede ser:
1-9: para especificar cuantos caracteres se deben especificar.
01-09: para indicar la cantidad de ceros a la izquierda.
1.1-9.9: para coma flotante.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


t puede indicar:
c
s
u
d
Lu
Ld
x
X
Lx
LX
f
g
e
w

Carcter.
Cadena o carcter.
Entero sin signo.
Entero con signo.
Entero largo sin signo.
Entero largo con signo.
Entero Hexadecimal (minsculas)
Entero Hexadecimal (maysculas).
Entero largo Hexadecimal (minsculas).
Entero largo Hexadecimal (maysculas).

Flotante con truncado


Flotante con redondeo.
Flotante en formato exponencial.
Entero sin signo con decimales insertados.

La 1 cifra indica el total, la 2 el numero de decimales


EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


A continuacin se presenta algunos ejemplos de los distintos formatos

Formato

Valor = 0X12

Valor = 0XFE

%0.3u

018

254

%u

18

254

%2u

18

%5

18

254

%d

18

-2

%x

12

Fe

%X

12

FE

%4X

0.012

00FE

%3.1w

1.8

25.4
EULER DEZA FIGUEROA
Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


A continuacin se presenta algunos ejemplos de aplicacin

El driver LCD.c esta pensado para trabajar con el PORTD o el PORTB. Por
defecto utiliza el PORTD a menos que le indiquemos lo contrario mediante:
#define use_portb_lcd TRUE, se comenta o descomenta
Por defecto, este driver usa siete terminales para la comunicacin entre el
LCD y el PIC.

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


En la siguiente figura se observa el fichero LCD.C

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

MANEJO DE PANTALLA LCD


En la siguiente figura se observa el fichero LCD.C

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 10: Manejo de pantalla LCD de 2 x 16


Mostrar un mensaje en la pantalla LCD

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Programa 10: Manejo de pantalla LCD de 2 x 16 .

EULER DEZA FIGUEROA


Euler_df28@hotmail.com

PROGRAMAS EN CCS COMPILER

Bibliografa
CCS C Compiler Manual PCD CCS INC FEBREO 2015
CCS C Compiler Manual PCB/PCM/PCH CCS INC FEBREO 2015
Compilador C CCS y simulador PROTEUS para Microcontroladores PIC

Eduardo Garca Breijo


Diseo y simulacion de Sistemas microcontrolados en lenguaje C Juan
Ricardo Clavijo Mendoza
Programacion en CCS para Microcontroladores PIC Aaron Castro Bazua
Datasheets

ING. EULER DEZA FIGUEROA


euler_df28@hotmail.com
EULER DEZA FIGUEROA
Euler_df28@hotmail.com

Vous aimerez peut-être aussi