Sunteți pe pagina 1din 19

U

UN
NIIV
VE
ER
RSSIID
RA
RIIA
DA
AD
DD
DE
EL
LA
ASS PPA
AL
LM
MA
ASS D
DE
EG
GR
AN
NC
CA
AN
NA
AR
A

FACULTAD DE
INFORMTICA

ALUMNOS:
BARRIENTO GONZLEZ, HUMBERTO LUIS
CASTELLANO DAZ, MARIO

INDICE

1.- OBJETIVOS

pg. 3

2.- HARDWARE

3.- DESCRIPCIN DEL CDIGO FUENTE

4.- CONCLUSIONES

5.- ANEXO

pg. 5

pg. 9

. pg. 18

. pg. 19

1.-OBJETIVOS
El objetivo de esta prctica es establecer una comunicacin serie mediante RS232
entre el microcontrolador Micropic 16f84A y el controlador serie SMT3 de la pantalla
tctil Touchware 3M que tenemos disponible en el laboratorio de electrnica de la
facultad. La comunicacin se realiza con la configuracin serie a 9600 b, 8 bits de datos,
sin paridad, un bit de stop y sin control de flujo.
Para comprobar que el objetivo se ha alcanzado correctamente, se ha realizado la
parte de la prctica en la que el Micropic enva un comando al controlador de la pantalla
tctil, y otra parte en la que el Micropic recibe la posicin del eje x de la pantalla tctil.
El comando que se le enva al controlador de la pantalla es el comando FD, el
cual configura la pantalla para que devuelva la posicin que indica el punto en el que se
toca la pantalla con un conjunto de 9 bytes que representan caracteres ASCII:
1 Carcter de cabecera (01h)
2 Carcter ASCII que indica el primero de los tres dgitos del nmero que representa la
posicin del eje x.
3 Carcter ASCII que indica el segundo de los tres dgitos del nmero que representa la
posicin del eje x.
4 Carcter ASCII que indica el tercero de los tres dgitos del nmero que representa la
posicin del eje x.
5 Carcter de separacin, carcter ASCII que representa la coma (,).
6 Carcter ASCII que indica el primero de los tres dgitos del nmero que representa la
posicin del eje y.
7 Carcter ASCII que indica el segundo de los tres dgitos del nmero que representa la
posicin del eje y.
8 Carcter ASCII que indica el tercero de los tres dgitos del nmero que representa la
posicin del eje y
9 Carcter ASCII que representa el retorno de carro.
Al configurar el controlador con este formato, cada vez que se pulse la pantalla
tctil, y mientras se mantenga pulsada, el controlador enviar la posicin x,y
repetidamente, hasta que se deje de pulsar o se pulse en otra zona de la pantalla.
Una vez configurada la pantalla, el pic est continuamente recibiendo bytes que le
enva el controlador de la pantalla tctil. Cuando recibe el byte que indica el carcter
cabecera, el pic se prepara para recibir el primer byte que viene a continuacin, que
representa al primer dgito del valor del nmero que representa la posicin en el eje x de
la pantalla tctil. Si se divide con lneas verticales la pantalla tctil, se puede saber la zona
3

en la que se ha pulsado con el valor del byte que se ha recibido. Para hacer visual la
recepcin del valor por el pic, se hace uso de un led, que parpadea dependiendo de la
zona en la que se pulse. Si se pulsa en la zona con valor del eje x= 999-900, parpadea 9
veces, si se pulsa en la zona con valor del eje x= 899-800, parpadea 8 veces, y as hasta
que al pulsar en la zona con valor del eje x = 99-0 el led no parpadea.
Para realizar la prctica primero se consigui comunicar el controlador de la
pantalla tctil con el ordenador, utilizando el programa Hyperterminal y el puerto serie
rs232 del ordenador. Una vez que se haba probado que el pic enviaba al ordenador y
reciba correctamente desde el ordenador los datos, se pas a establecer la comunicacin
entre el pic y el controlador de la pantalla.

2.-HARDWARE
Para la realizacin de la prctica se ha empleado un circuito montado en una
protoboard, por lo que no se ha utilizado el entrenador para micropics que se suele
utilizar en esta asignatura. Se ha diseado para poderse usar con una fuente de
alimentacin de 5 0.5 voltios para que la comunicacin rs232 sea estable.
Los componentes utilizados han sido los siguientes:

Micropic 16F84A

Integrado Max232

Cristal de 4 Mhz XT

Interruptor

Leds

Condensadores 33 pF

Condensadores 0.1uF

Resistencias varias

Conector rs322 serie

Pantalla tctil y controlador de la misma.

El circuito que comprende el micropic se mont en la protoboard, conectado


como se indica en la siguiente figura, utilizando un cristal de 4 Mhz y dos condensadores
tipo lenteja de 33 pF cada uno. Se aadi un circuito de reset, con un led rojo que cuando
est encendido indica que el pic est en reset. Por ltimo este circuito dispone de un led
verde conectado a la patilla rba2 que se utiliza para mostrar al usuario la zona que se ha
pulsado de la pantalla, que es dependiente del parpadeo.

Para adaptar los valores de voltaje de las seales rs232 a los niveles de voltaje
TTL que acepta el micropic se utiliz un circuito integrado max232, que se conect a
dos pines del micropic, rb0 para el pin RX y ra0 para TX., y en el otro extremo se
conect el controlador de la pantalla, o el puerto serie del ordenador.

El controlador de la pantalla tctil se alimenta tambin con 5v, y como se indica


en la gua de referencia del usuario de la pantalla tctil dispone de 7 pines para la
comunicacin rs232, de los cuales hemos utilizado tan slo 3 pines, el RX, TX y el GND.
La pantalla tctil dispone de dos ejes virtuales, eje x y eje y, que en el formato
decimal van desde el valor 999 al valor 0 en cada eje, representando las coordenadas con
respecto a la esquina inferior derecha en caso de que el cable de conexin de la pantalla
est hacia la izquierda. Debajo de la pantalla tctil se ha colocado un folio que divide las
distintas franjas verticales, indicando en cada zona el nmero de parpadeos que tiene que
dar el led verde cuando se pulsa en cada zona.

A continuacin se muestran algunas imgenes del circuito:

Circuito completo, a la izquierda el conector rs232 para el ordenador montado en


la protoboard con el micropic, el integrado max232 y el controlador de la pantalla
tctil que est situada a la derecha de la imagen. En medio se observa la fuente de
alimentacin que en esta ocasin son cuatro pilas recargables de 1.2 voltios cada
una.

Vista en detalle del controlador de la pantalla tctil y el conector rs232 para la


comunicacin del micropic con el ordenador, se observa como cada cable de
comunicacin del controlador est marcado para saber a que seal corresponde
(segn gua de referencia de la pantalla tctil).
7

Vista en detalle del conexionado del micropic, a la izquierda, y del conexionado


del convertidor rs232-ttl max232 a la derecha.

Vista en detalle de la pantalla tctil dividida en las zonas a indicar por el led.

3.-DESCRIPCIN DEL CDIGO FUENTE


En el cdigo se definden los pines que sern de salida y entrada para la
comunicacin con el micropic con el controlador de la pantalla tctil: De los pines
disponibles en el puerto A definimos la el pin 0 como TX y en el pin 2 como salida para
el led verde. En el puerto B se utiliza slo el pin0 como pin RX, puerto que tambin es el
que activa la interrupcin.

#DEFINE BANK0 BCF STATUS,RP0


#DEFINE BANK1 BSF STATUS,RP0
TRUE EQU 1
FALSE EQU 0
CTRAN EQU 0XFE ; SOH NEGADO (ASCII), carcter cabecera negado (ctrl+a)
#DEFINE RX PORTB,0
#DEFINE TX PORTA,0
#DEFINE LED PORTA,2
DATO EQU 0x0C ;Dato a Transmitir o Recibido RS232
RET1

EQU 0x0D ;para retardo de bit RS232

RET2

EQU 0x0E ;para retardo de bit RS232

CONT8 EQU 0x0F ;Contador de bits en rutinas RX y TX


SOH

EQU 0x10 ; registro para guardar el byte y comprobar si es el carcter de cabecera

NUMORSOH EQU 0x11 ; registro para determinar si leer SOH o el NUMERO en la interrupcin

Nada mas iniciar se configuran las entradas del microprocesador PIC se


configuran las entradas de LED y TX como salida, y se configura la interrupcin que se
activar en flanco de bajada. Tambin se configura el bit 0 del registro NUMORSOH que
se utiliza como bandera para saber si leer el carcter de cabecera o el nmero cuando
ocurre una interrupcin.
INICIO
BANK1
BCF TX
BCF LED
BCF OPTION_REG, INTEDG
BANK0
BSF TX
BSF RX
BCF LED
BCF NUMORSOH,0

Despus se enva un comando al controlador de la pantalla tctil para que se


configure en formato decimal, pero antes se realiza una espera inicial, a la espera de que
el controlador de la pantalla tctil se haya iniciado despus de que se ha conectado la
alimentacin de +5v.

MOVLW 0FFh

;ESPERA INICIAL

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW

Se enva el comando para configurar la pantalla en formato decimal, se espera


unos milisegundos y se vuelve a enviar por si acaso que la pantalla no quede bien
configurada.
CALL FD
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
CALL FD

Despus se realiza un parpadeo para saber si el led funciona bien, para ello
encendemos el led un segundo y luego lo apagamos.
BSF LED
MOVLW 0FFh

;ESPERA ENCENDIDO

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh

10

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
BCF LED
MOVLW 0FFh

;ESPERA APAGADO

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW

Por ultimo, habilitamos la interrupcin INT y habilitamos las interrupciones


globalmente y nos metemos en un bucle infinito hasta que ocurra la interrupcin.

BSF INTCON,INTE
BSF INTCON,GIE
INFINITO
NOP
GOTO INFINITO

Ahora pasamos a describir cuando ocurre una interrupcin, nada mas empezar se
comprueba que ha sucedido dicha interrupcin, despus mira si el cdigo espera un SOH
o el primer dgito del valor de la coordenada x, esto se realiza con el bit 0 del registro
NUMORSOH.

INTERRUPCION
BTFSS INTCON,INTF
RETFIE
BTFSC NUMORSOH,0
GOTO NUMERO

11

Si se espera el carcter de cabecera se comprueba que el byte recibido es SOH y


se activa el bit que indica que la siguiente vez que se ejecute la interrupcin se espera un
nmero.
CALL RXSOH
XORLW TRUE
BZ MODESTADO
BCF INTCON,INTF
RETFIE
MODESTADO
BSF NUMORSOH,0
BCF INTCON,INTF ;BORRA BANDERA INT
RETFIE

Si el registro NUMORSOH indica que se espera el primer dgito de la coordenada


x, entonces llamamos a RXDATO para recibir el byte y si funciona correctamente se
preparan los registros para encender y apagar el diodo. Si no funcionara salimos de la
rutina de la interrupcin.
NUMERO
CALL RXDATO
XORLW TRUE
BZ USOLED
GOTO SALIRINT

Ahora que sabemos que es un nmero y lo vamos a mostrar, deshabilitamos el bit


0 del registro NUMORSOH para en la siguiente interrupcin espere el carcter de
cabecera. RXDATO ha almacenado en el registro DATO el carcter ASCII que
representa el primer dgito de la coordenada x. Puesto que el carcter ASCII del 0 es el
nmero 30 en hexadecimal, el carcter 1 es el nmero 31 en hexadecimal y as
sucesivamente hasta el 39, si borramos los cuatro bits de la izquierda obtenemos el valor
numrico del carcter, que es a su vez el nmero de parpadeos que tiene que dar el led
verde.
USOLED
MOVF DATO,0
MOVWF SOH
MOVF SOH,0
MOVWF DATO
BCF NUMORSOH,0
MOVF DATO,0
ANDLW b'00001111'
BZ SALIRINT
MOVWF DATO

12

Luego se ejecuta la rutina que muestra la zona que se ha tocado, haciendo


parpadear el led verde segn el valor que se encuentra en el registro DATO.
MOSTRAR
BSF LED
MOVLW 0FFh

;ESPERA ENCENDIDO

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
BCF LED
MOVLW 0FFh

;ESPERA APAGADO

CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
MOVLW 0FFh
CALL ESPERAW
DECF DATO,1
BZ SALIRINT
GOTO MOSTRAR
SALIRINT
BCF INTCON,INTF ;BORRA BANDERA INT
RETFIE

13

A continuacin se describen las rutinas del programa:

RXDATO recibe un byte por el RX y lo guarda en el registro DATO, si existe un


start bit al principio la funcin termina y devuelve verdadero en w, si no devuelve
w=falso. Se sincroniza esperando a la mitad del primer bit, para luego leer a la mitad de
cada bit que se supone que es cuando ms estable se encuentra la seal.
RXDATO
BTFSS RX
GOTO RXBYTE
RETLW FALSE
RXBYTE
CALL TIME2
MOVLW 8
MOVWF CONT8
BIT
CALL TIME
RRF DATO,F
BCF DATO,7
BTFSC RX
BSF DATO,7
DECFSZ CONT8,F
GOTO BIT
CALL TIME2
RETLW TRUE

RXSOH recibe un byte por RX, y comprueba que se recibe primero el starbit, y
luego el SOH, entonces devolver verdadero sino reportara falso. Recibe el byte de forma
similar a RXDATO.
RXSOH
BTFSS RX
GOTO RXBYTESOH
RETLW FALSE
RXBYTESOH
CALL TIME2
MOVLW 8
MOVWF CONT8
BITSOH
CALL TIME
RRF SOH,F
BCF SOH,7
BTFSC RX
BSF SOH,7
DECFSZ CONT8,F

14

GOTO BITSOH
CALL TIME2
MOVF SOH,0
BZ SALIRFALSE
ANDLW CTRAN
BZ SALIRTRUE
RETLW FALSE
SALIRTRUE
RETLW TRUE
SALIRFALSE
RETLW FALSE

TXDATO realiza la transmisin RS232 de un byte por la lnea TX, enviando el start bit,
los 8 bits de datos y el stop bit a una velocidad de 9600 baudios.
TXDATO
MOVLW 8
MOVWF CONT8
BCF TX
BIT2
CALL TIME
RRF DATO,F
BTFSS STATUS,C
BCF TX
BTFSC STATUS,C
BSF TX
DECON
DECFSZ CONT8,F
GOTO BIT2
CALL TIME
BSF TX
CALL TIME
RETURN

15

El procedimiento TIME2 realiza que el procesador espere unos 52us y el


procedimiento TIME realiza que el procesador espere 104us, son los retardos de medio y
de un bit respectivamente a una velocidad de 9600 baudios.

TIME2

TIME

MOVLW 1

MOVLW 1

MOVWF RET1

MOVWF RET1

T1

T3

MOVLW .14

MOVLW .28

MOVWF RET2

MOVWF RET2

T2

T4

DECFSZ RET2,F

DECFSZ RET2,F

GOTO T2

GOTO T4

DECFSZ RET1,F

DECFSZ RET1,1

GOTO T1

GOTO T3

NOP

NOP

RETURN

NOP
RETURN

El procedimiento ESPERAW espera el valor que se encuentra en W multiplicado


por 1040 us.
ESPERAW
MOVWF CONT8
BUCLEW
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
CALL TIME
DECF CONT8,1
BZ CONTINUARW
GOTO BUCLEW
CONTINUARW
RETURN

16

RET_CARRO enva un retorno de carro por la lnea RS232 y el procedimiento


FD es enva el comando FD que esta compuesto por cuatro bytes, uno es la cabecera
(SOH en ASCII) y los caracteres F, D y para finalizar un retorno de carro (CR en ASCII).

RET_CARRO

FD

MOVLW d'13'

MOVLW 0x01

MOVWF DATO

MOVWF DATO

CALL TXDATO

CALL TXDATO

MOVLW 0FFh

MOVLW "F"

MOVWF CONT8

MOVWF DATO

CALL TIME

CALL TXDATO

DECFSZ CONT8,F

MOVLW "D"

MOVLW d'10'

MOVWF DATO

MOVWF DATO

CALL TXDATO

CALL TXDATO

CALL RET_CARRO

RETURN

RETURN

17

4.-CONCLUSIONES
En esta prctica adems de aprender como conectar el micropic de forma
autnoma se ha aprendido a comunicar mediante rs232 un micropic con cualquier
dispositivo, tanto para enviar datos como para recibir datos.
Tambin se ha tenido que aprender a conectar el controlador de la pantalla tctil,
comprobando que los pines de comunicacin corresponden (algunos no) a lo que se
indica en el manual de referencia del controlador de la pantalla tctil. Con respecto a esto,
decir que si se hace caso a lo que se indica en el manual y se conecta uno de los pines de
comunicacin del controlador de la pantalla a +5v, el controlador se puede fastidiar, ya
que siguiendo el manual se conect as y una resistencia del controlador estuvo a punto
de quemarse, con lo que el controlador podra dejar de funcionar.
Otra incidencia durante la prctica fue la de que se deben elegir adecuadamente
los condensadores conectados al cristal para el reloj del micropic, puesto que al principio
se utilizaron unos condensadores que no eran de las capacidades indicadas por el
fabricante, y el pic no funcionaba.
La utilizacin de las cuatro pilas recargables de 1.2 voltios como fuente de
alimentacin tiene un funcionamiento extrao, puesto que funcionaba bien si se conecta
el circuito de tierra GND comn a una fuente de alimentacin, aunque la fuente est
desconectada, porque si no es as, el pic enva correctamente el comando al controlador
de la pantalla tctil, pero la pantalla tctil slo enva las coordenadas cuando se toca con
un dedo la cubierta de las pilas y con el otro la pantalla tctil.
Ya en las complicaciones software se comprob que usando rutinas que disponen
de los retardos aproximados segn el nmero de ciclos y de instrucciones ejecutadas por
el microcontrolador se puede llegar a establecer una comunicacin rs232 a 9600 baudios,
aunque posiblemente debido a esto hubo que utilizar la rutina de recepcin ayudados de
la interrupcin rb0 por flanco, para conseguir el sincronismo con el start bit del protocolo
de comunicacin serie rs232.
Esta prctica es fcilmente ampliable, aadiendo la capacidad de mostrar el
nmero de la zona pulsada con un display 7 segmentos. Una ampliacin ms complicada
de esta prctica podra ser utilizar un display matricial para mostrar la zona o leer las
coordenadas de los dos ejes imaginarios de la pantalla tctil.

18

5.-ANEXO
Documentos anexos a esta memoria:

pantallatactil.asm Fichero del cdigo fuente del programa.

microtouchguide.pdf Gua de referencia del controlador de la pantalla


tctil, utilizado para determinar las interfaces y comandos del controlador de la pantalla
tctil.

19

S-ar putea să vă placă și