Home

CAN-076, Utilización de displays LCD gráficos (SED1335)

image

Contents

1. Salidas en alto P2PINCFG6 0xE4 Rxx00x00 P2 0 1 3 4 output LCD_WriteStrCmd init_stringl sizeof init_stringl LCD_WriteStrCmd init_string2 sizeof init_string2 LCD_WriteStrCmd init_string3 sizeof init_string3 LCD_WriteCmd 0x4C CSRDIR_RIGHT LCD_WriteStrCmd init_string4 sizeof init_string4 LCD_WriteStrCmd init_string5 sizeof init_string5 LCD_WriteStrCmd init_string6 sizeof init_string6 Rutinas de soporte de alto nivel sumamente simples void LCD_cursor unsigned int address LCD_WriteCmd 0x46 LCD_Write addresss0xFF LCD_Write address gt gt 8 8 0xFF pattern unsigned int w while height LCD_cursor address LCD_WriteCmd 0x42 w width while w LCD_Write pattern address 40 define LCD_cleargfx LCD_fill 1200 40 240 0 define LCD_cleartxt LCD_fill 0 40 30 CSRW direcci n del cursor LSB MSB void LCD_fill unsigned int address unsigned char width unsigned char height unsigned char MWRITE escribe patr n void LCD_printat unsigned char row unsigned int col char ptr LCD_cursor row lt lt 5 row lt lt 3 col LCD_WriteCmd 0x42 while ptr CAN 076 40 y col setea direcci n MWRITE CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 LCD_Write ptr void LCD_plot unsigned int x unsigned char y unsigned char strip bt dat unsigned int
2. CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 Cika Nota de Aplicaci n CAN 076 T tulo Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 7 o Electr nica autor Sergio R Caprile Senior Engineer Revisiones Fecha Comentarios 0 19 03 07 port de CAN 005 con modificaciones Nos interiorizaremos ahora en el desarrollo de una interfaz para conectar un m dulo LCD gr fico inteligente Powertip PG320240 a un m dulo Rabbit 2000 Se trata de un display de 320x240 pixels basado en chips controladores compatibles con el SED1335 de S MOS y su clon de Epson Analizaremos m s tarde el software de control y un simple programa demostraci n que sirve para comprobar el correcto funcionamiento de los m dulos LCD que tengamos en stock y de paso demostrar sus capacidades A fin de probar la mayor parte posible del hardware la interfaz ser de 8 bits y realizar lectura y escritura del controlador LCD Hardware El SED1335 presenta una interfaz con dos posibles modos de trabajo tipo Motorola E RS R W o tipo Intel RD WR A0 El PG320240FRS de Powertip Ramtron LCD lo utiliza en esta ltima modalidad Para la interfaz con el micro deberemos tener en cuenta el controlador que posee Ea Gins a el display Dado que el micro es de 3 3V y 5V tolerant podemos usar displays PO2 no D2 basados en S1D13305 y SED1335 sin problemas dado que stos toleran los ni
3. Ss HGuWO void LCD_Write unsigned char dat S1D13305 Ons address setup 120ns data setup 120ns strobe width PO dat write data POPINCFG 0 PO Outputs data en bus P2 amp 1 lt lt LCD_WR 1 lt lt LCD_CS Baja WR CS _asm DA A 100ns a 40Mhz _endasm P2 1 lt lt LCD_WR 1 lt lt LCD_CS 5 Sube WR CS _asm DA A DA A 400ns a 40Mhz DA A RET agrega m s delay DA A _endasm CAN 076 2 CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 void LCD_WriteCmd unsigned char cmd P2 1 lt lt LCD_A0 5 Sube A0 Cmd LCD_Write cmd P2 1 lt lt LCD_A0 Baja A0 Data void LCD_WritesStrCmd unsigned char cmd unsigned char len LCD_WriteCmd cmd while len LCD_Write cmd unsigned char LCD_Read S1D13305 Ons address setup 50ns data delay 120ns strobe width unsigned char dat POPINCFG 0xXxFF PO Inputs P28 1 lt lt LCD_RD 1 lt lt LCD_CS Baja RD CS _asm DA A 100ns a 40Mhz _endasm dat P0 lee del bus P2 1 lt lt LCD_RD 1 lt lt LCD_CS Sube RD CS _asm DA A DA A 400ns a 40Mhz DA A RET agrega m s delay DA A _endasm return dat unsigned char LCD_ReadData unsigned char dat P2 1 lt lt LCD_A0 Sube AO Read Data dat LCD_Read P2 amp 1 lt lt LCD_A0Q0 Baja A0 return dat Veamos ahora la funci n de inicializaci n la cual
4. _line 0 120 319 120 horizontal LCD_line 160 0 160 239 5 vertical LED_icon 1200 40 50 152 8 20 ramtron 4 conos en cuadrantes LCD_icon 1200 21 40 42 152 8 35 powertip LCD_icon 1200 40 150 152 8 61 pdm LCD_icon 1200 21 40 170 152 8 20 ramtron LCD_rectangle 0 0 319 239 borde MsDelay 6000 6 segs LCD_cleargtfx LCD_dump goku pantalla LCD_printat 0 0 Texto y graficos LCD_printat 1 2 superpuestos LCD_fi11 1200 8 40 2 12 8 0xFF invierte texto MsDelay 5000 5 segs LCD_cleargfx LCD_printat 12 9 Cika Electronica S R L LCD_printat 15 9 Master distribuidor de LCD_printat 18 8 componentes electronicos CAN 076 6
5. a En el modo gr fico los pixels se agrupan horizontalmente en bytes correspondiendo el primer byte de memoria a los primeros ocho pixels de la primera l nea de arriba a la izquierda y el ltimo byte a los ltimos ocho pixels de la ltima l nea de abajo a la derecha El bit m s significativo del primer byte de memoria corresponde al punto situado en la pantalla arriba a la izquierda y el bit menos significativo del ltimo byte de memoria corresponde al punto situado en pantalla abajo a la derecha El direccionamiento del byte a leer o escribir en memoria se hace mediante comandos especificando el offset desde la primera direcci n correspondiente a la pantalla que nos ocupa Tiene adem s un contador autoincrementado el cual apunta a la direcci n siguiente luego de una lectura o escritura Esto resulta ptimo para enviar los datos byte por byte hasta completar una pantalla CAN 076 1 CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 Una caracter stica interesante del display es que puede funcionar a una alta velocidad de acceso simplemente da prioridad a la interfaz con el procesador e interrumpe el display Si nuestra aplicaci n requiere que no haya parpadeo flicker al momento de escritura podemos primero chequear el flag de ocupado busy y realizar nuestra escritura en el momento que el controlador no accede a la RAM para refrescar el LCD Si por el contrario toleramos el flicker o como en nuest
6. addr strip unsigned char x gt gt 3 strip x 8 bt unsigned char x amp 0x07 bit remainder addr y lt lt 5 y lt lt 3 40 y addr 1200 strip LCD_cursor addr direcciona byte LCD_WriteCmd 0x43 MREAD dat LCD_ReadDatal lee byte dat 0x80 gt gt bt setea punto MSB a la izquierda LCD_cursor addr direcciona otra vez LCD_WriteCmd 0x42 MWRITE LCD_Write dat escribe void LCD_icon unsigned int address unsigned char width unsigned char height __ code unsigned char imgdata unsigned int w while height LCD_cursor address LCD_WriteCmd 0x42 MWRITE w width while w LCD_Write imgdata address 40 define LCD_dump x LCD_icon 1200 40 240 x Tambi n hemos portado la rutina de impresi n de l neas basada en el algoritmo de Bresenham la cual puede observarse en los archivos que acompa an a esta nota de aplicaci n Utilizaci n Inicializamos el display llamando a la funci n LCD_init Limpiamos las pantallas de texto y gr fica con las siguientes macros LCD_cleartxt LCD_cleargfx que en realidad utilizan la funci n LCD_fill que puede utilizarse para borrar un cono o un rea de texto LCD_fill addr 40 54 0 o resaltar invertir un texto LCD_printat 1 2 superpuestos LCD_fi11 1200 8 40 2 12 8 0xFF invertir los par metros de esta funci n son la direcci n en memoria el ancho en b
7. es algo extensa dadas las prestaciones del SED1335 y su inherente complejidad void LCD_init __ code const static unsigned char init_stringl 0x40 INIT 0x30 32 char CGRAM 8 pixel chars LCD normal 0x87 0x7 8x8 chars 39 59 320 pixels cracteres de 8 pixels 40 por l nea 239 240 l neas 30 de texto 40 0 virtual screen display screen y __ code const static unsigned char init_string2 1 0x44 SCROLL 0 SADIL direcci n de inicio screen 1 0x0000 0 SAD1H texto 239 SL1 l neas de pantalla screen 1 239 OxBO SAD2L inicio screen 2 1200 0x4b0 0x04 SAD2H gr ficos CAN 076 3 CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 239 LI SD2 l neas de pantalla screen 2 0 SAD3L 0 SAD3H 0 SAD4L 0 SAD4H __ code const static unsigned char init_string3 0x5D CSRFORM 0x04 CRX tama o horizontal del cursor 4 pixels 0x86 CRY tama o vertical del cursor 6 pixels CM block y __ code const static unsigned char init_string4 Ox5A HDOT_SCR 0x5a 0 1 pixel scroll y __ code const static unsigned char init_string5 1 Ox5B OVLAY layered screens text graphics 0x01 MX0 MX1 text graphics overlay XOR y __code const static unsigned char init_string6 0x59 DISP_ON 0x16 cursor flash rate 2 Hz SAD1 2 no flash SAD3 off y PO 0 P2 0x1B
8. r lo que la imagen se ve espejada verticalmente BMP usa el 0 para el negro y el 1 para el blanco si el display es STN 1 corresponde a un punto negro Adem s BMP incluye un encabezado de 62 bytes Por consiguiente para adaptar una imagen debemos llevarla a la resoluci n deseada espejarla verticalmente invertir sus colores salvarla en formato BMP y por ltimo descartar los 62 bytes del comienzo con alg n editor hexa En el caso de conos si la cantidad de bytes por l nea no es par BMP agregar bytes de padding y seg n el programa que utilicemos para salvar puede que la inversi n de colores no funcione puesto que s lo invierte la paleta que no utilizamos Dado que luego generaremos un header file es bueno tener una opci n en el programa de conversi n para invertir el contenido de los bytes Para imprimir textos calculamos simplemente la posici n de memoria a partir de fila y columna de modo similar address 40 fila columna para 40 caracteres por fila matriz de caracteres de 8x8 Desarrollo Desarrollamos a continuaci n el software de base para manejo del display Definiremos dos pantallas una gr fica de 320x240 y una de texto de 40x30 con caracteres de 8x8 usando el generador interno por lo que se ver n caracteres de 5x7 en una trama de 8x8 Para una mejor comprensi n dada la complejidad del SED1335 se recomienda consultar su manual t cnico fdefine LCD_RD fdefine LCD_AO fdefine LCD_WR fdefine LCD_CS
9. ro caso hacemos una escritura muy r pida que el mismo no se nota podemos obviar un paso y escribir directamente sobre el controlador sin chequear el busy flag Algoritmos Si bien el display tiene muchas formas de utilizaci n en esta nota de aplicaci n desarrollaremos algoritmos en base a las m s simples Para direccionar un punto debemos traducir sus coordenadas a una direcci n lineal para ello deberemos multiplicar la coordenada vertical y por la cantidad de bytes en sentido horizontal de la pantalla 40 si utilizamos la totalidad de 320 pixels 40 bytes y sumarle la coordenada horizontal x dividida por 8 pixels por byte El resto de dividir x 8 es el n mero de pixel dentro del byte Dado que el MSB se halla a la izquierda el pixel O corresponde al bit 7 y el pixel 7 al bit 0 es decir address 40 y x 8 bit 7 resto x 8 Para graficar funciones debemos tener en cuenta que la coordenada 0 0 se halla en el extremo superior izquierdo de la pantalla Para mostrar pantallas deberemos agrupar los datos de modo tal de poder enviarlos de forma que aproveche de manera eficiente los contadores autoincrementados y la estructura de memoria dada la estructura lineal esto se reduce simplemente a enviar todos los bytes corridos Si comparamos la estructura de memoria del display con la forma de guardar im genes blanco y negro en formato BMP ver amos que son muy similares por ejemplo BMP va de abajo a arriba y el display de arriba a abajo po
10. veles P0 3 D3 de tensi n del VRS51L3074 PO 4 D4 El port PO hace las veces de bus de datos mientras que algunos pines del port P2 Ea AO A generar n por software las se ales de control POZA ini D7 El circuito de contraste de este display es totalmente interno el mismo puede ajustarse mediante un preset ubicado en la parte posterior del display P2 0 RD El display dispone adem s de un pin de reset el cual podemos controlar a a A IR voluntad o conectar al reset del circuito Para el desarrollo de esta nota de P24 en CS aplicaci n simplemente lo conectamos mediante un pull up a la tensi n de alimentaci n Software Breve descripci n del display gr fico Estos displays son sumamente vers tiles la memoria puede ser dividida en diferentes pantallas las cuales a su vez pueden definirse como gr ficas o de texto habilitarse y o superponerse independientemente Para el caso del modo texto el SED1335 dispone de un generador de caracteres y una ROM de caracteres de 5x7 aunque es posible utilizar una ROM externa o la misma RAM del display Al momento de definir cada pantalla definimos tambi n en qu posici n de memoria comienza y c mo se asigna la memoria La estructura de memoria de cada pantalla es lineal tanto en modo gr fico como en modo textol En este ltimo modo el primer byte corresponde al caracter ubicado arriba a la izquierda y el ltimo byte corresponde al ubicado abajo a la derech
11. ytes pixels 8 la altura en l neas y el patr n a escribir Mostramos un cono en pantalla con la siguiente funci n LCD_icon addr 40 54 cika CAN 076 5 CAN 076 Utilizaci n de displays LCD gr ficos SED1335 con Ramtron VRS51L3074 los par metros de esta funci n son la direcci n en memoria el ancho en bytes pixels 8 la altura en l neas y la direcci n en flash de la imagen correspondiente Para mostrar una pantalla completa podemos tratarla como un cono o utilizar la siguiente macro LCD_dump goku Para trazar l neas utilizamos LCD_line 0 120 319 120 5 los par metros de esta funci n son las coordenadas x e y del primer punto y las coordenadas x e y del segundo punto Para generar un rect ngulo LCD_rectangle 0 0 319 239 los par metros de esta funci n son las coordenadas x e y del v rtice superior izquierdo y las coordenadas x e y del v rtice inferior derecho El siguiente es un ejemplo de un simple programa que muestra algunos conos y texto en pantalla tinclude goku h tinclude powertip h tinclude ramtron h tinclude ramtronb h tinclude pdm h tinclude lowlevel h tinclude highlevel h main LCD_init while 1 LCD_cleartxt LCD_cleargtfx MsDelay 1000 1 seg LCD_fi11 1200 40 240 0xFF 5 negro MsDelay 3000 3 segs LCD_cleargtfx LCD_icon 1200 40 99 40 42 ramtronb MsDelay 3000 3 segs LCD_cleargtfx LCD

Download Pdf Manuals

image

Related Search

Related Contents

Zenith 206-3923 User's Manual  Cancer Analysis Service User Guide - Support  GENUINE PARTS INSTALLATION INSTRUCTIONS CAUTION  Haier HSU-12HQA03/R2(DB) User's Manual  Operating Instructions SilverSchmidt & Hammerlink  取り付けと接続 - MiniDisc Community Page    Stack N Grab  Digital Voice Processor  Inventum PC12  

Copyright © All rights reserved.
Failed to retrieve file