Download pdf - Proyecto Con 8051

Transcript
Page 1: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 1/21

UNIVERSIDAD CENTRAL DE VENEZUELA

FACULTAD DE INGENIERÍA

ESCUELA DE INGENIERÍA ELÉCTRICA

DEPARTAMENTO DE ELECTRÓNICA, COMPUTACIÓN Y CONTROL

MICROPROCESADORES I

INFORME #2: TECLADO NUMERICO PARA EL MICROCONTROLADOR 8051

Realizado por:

 Vales Montes, Elena Esther C.I.:18836867

CARACAS 21/06/2010

Page 2: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 2/21

2

TABLA DE CONTENIDO Objetivo ............................................................................................................................................................... 3

Marco teorico ..................................................................................................................................................... 3

Dispositivos entrada-salida ........................................................................................................................... 3

  Teclado ............................................................................................................................................................ 3

Comunicaciones seriales ............................................................................................................................... 4

El Circuito MAX-232 .................................................................................................................................... 5

Metodologia ........................................................................................................................................................ 5

Proceso de diseño .............................................................................................................................................. 6

Hardware ......................................................................................................................................................... 6

Estructura. .................................................................................................................................................. 6

Funcionamiento. ........................................................................................................................................ 6Diagramas de Flujo. ................................................................................ ¡Error! Marcador no definido. 

Software ........................................................................................................................................................ 10

Descripción de cada proceso: ................................................................................................................ 10

Subprocesos: ............................................................................................................................................. 14

Proceso de almacenamiento en memoria RAM interna. ................................................................... 17

Proceso de comunicación entre el microcontrolador y el computador vía RS232: ....................... 17

Presentacion y Analisis de Resultados .......................................................................................................... 18

Conclusiones ..................................................................................................................................................... 19

Bibliografia ........................................................................................................................................................ 19

 ANEXOS (codigo en keil).............................................................................................................................. 20 

Page 3: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 3/21

3

OBJETIVOElaborar un teclado matricial de 16 teclas para ser conectado a uno de los puertos delmicrocontrolador 89S52 y diseñar todas las rutinas necesarias para que el microcontrolador seacapaz de mostrar cada una de las teclas introducidas en una pantalla a través de comunicación serial.

MARCO TEORICO

Dispositivos entrada-salidaEstos dispositivos son básicamente un conjunto de interfaces que permiten la comunicación entrediferentes bloques funcionales de un sistema. Estos dispositivos también son llamados dispositivosperiféricos.

Existen tres formas de realizar la entrada o salida de información a través de dispositivos periféricos:

1.  Por encuesta: Sondeo periódico de la unidad de control al dispositivo. Se pierde tiempo pero

es una forma sencilla.2.  Por interrupciones: el dispositivo indica el momento de una transferencia de datos. Ante un

evento se genera entonces la comunicación.3.   Acceso directo a memoria: el dispositivo opera directamente sobre la memoria si la unidad

de control se lo permite.

TecladoEl teclado es un periférico que permite a un usuario introducir datos, órdenes o instrucciones a unsistema.

Los teclados utilizados en las computadoras, celulares y otros dispositivos funcionan a través de unproceso de scaneo; la fabricación de los teclados se basa en una matriz de interruptores dispuestosen filas y en columnas las cuales mientras el interruptor esta en reposo no se tocan. Al pulsar unatecla se cierra un circuito eléctrico y se envía a la unidad de procesamiento una señal que contieneinformación acerca de la posición de la tecla presionada.

El microcontrolador responsable del funcionamiento del teclado se encuentra muestreandoperiódicamente la matriz para detectar cuando una tecla ha sido pulsada, a partir de la fila y columnaque ha sido pulsada entonces se reconoce la tecla pulsada. Cuando el controlador del tecladoreconoce que se ha pulsado una tecla genera un código asociado a ella, el cual es enviado a la unidadprocesadora después de solicitarle a la misma que atienda al dispositivo.

En los teclados de computadora existe el llamado código SCAN el cual es la señal enviada por elteclado a la computadora cuando se pulsa una tecla. Es en estos casos la CPU la que a partir de laposición determina cual tecla ha sido pulsada (código ASCII correspondiente) y lo hace por mediode rutinas de interrupción que son invocadas cuando el controlador del teclado genera una peticiónde interrupción. Estas rutinas leen el código enviado por el controlador y lo asocian con la teclapulsada por el usuario.

Page 4: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 4/21

4

Comunicaciones serialesEl puerto serial de las computadoras es conocido como puerto RS-232. Un puerto serie es unainterfaz física de comunicación en serie a través de la cual se transfiere información mandando orecibiendo un bit. En las siguientes figuras se tienen los esquemas del conector DB-9 utilizado enesta práctica:

Figure 2: Conector hembra

Figure 3: Conector Macho

Se tiene especial interés en las comunicaciones seriales asíncronos. En la comunicación serialasíncrona, no son necesarios los pulsos de reloj. La duración de cada bit está determinada por la

 velocidad con la cual se realiza la transferencia de datos.

Un resumen de las principales características del protocolo RS 232 es:

Figure 1: Descripción de los pines 

Page 5: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 5/21

5

•Los “1” lógicos se representan con niveles de tensión negativos.

•Los “0” lógicos se representan con niveles de tensión positivos.

•En una comunicación Asincrónica se necesitan bits de Start y de Stop.•Los bits de Paridad se utilizan para verificar la integridad de la información  

El Circuito MAX-232Este circuito soluciona los problemas de niveles de voltaje cuando se requiere enviar unas señalesdigitales sobre una línea RS-232. Este chip se utiliza en aquellas aplicaciones donde no se dispone defuentes dobles de +12 y  – 12 Volts. El MAX 232 hace conversiones de tensión del protocolo RS 232a tensiones TTL y viceversa. En la siguiente figura se tiene un esquema de la conexión entre elmicrocontrolador y la computadora a través del circuito Max 232

METODOLOGIA Proceso de diseño:

1.  Hardware: se decidió si se iba a utilizar la interrupción externa o no, se realizo en físico el

teclado utilizando interruptores de 4 terminales que facilitaron la construcción del circuitoimpreso.

2.  Software: se intentó que el programa principal solo consistiera de una instrucción de espera,de manera que cada tarea se realizara únicamente cuando fuese necesario o solicitado por undispositivo (teclado o puerto serial)

Page 6: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 6/21

6

PROCESO DE DISEÑO

HardwareEl diseño del teclado utiliza la interrupción externa del microcontrolador para determinar cuandouna tecla ha sido presionada y así evitar la comprobación cada vez que se realice el scaneo.

Estructura.

El teclado está constituido por un arreglo de de 4 filas y 4 columnas y por un total de 16interruptores los cuales al ser presionados cortocircuitan la fila y la columna correspondiente.

Las filas del teclado se comunican mediante 4 cables con el nible alto del puerto 1, así mismo sucedecon las columnas, las cuales a través de 4 cables se comunican con el nible bajo del puerto 1. Estos 4cables de las columnas también pasan por un Indicador, en nuestro caso una compuerta and. Lasalida de esta compuerta and llega al pin 2 del puerto 3 del microcontrolador.

Funcionamiento.

La disposición anteriormente hecha va a permitir realizar a través del microcontrolador un procesode escaneo, en el cual cada fila, por un tiempo de 5ms va a estar configurada como salida con unnivel de tensión bajo, mientras esto ocurre las demás filas tendrán un nivel de tensión alto(configuradas como entradas). Las columnas por su parte (nible bajo del puerto) siempre van a estarconfiguradas como entradas, de esta manera la salida del Indicador (compuerta and) será 1.

En el momento en el que se presione una tecla quedara en cortocircuito la fila con la columna

respectiva, y cuando se proceda a realizar el escaneo el nivel bajo colocado en la fila también será  visto en la columna, entonces un bit del nible bajo del puerto 1 habrá recibido un cero, y consecuentemente la salida de la compuerta and también será cero indicando que se ha presionadouna tecla.

Es necesario recordar que el pin 2 del puerto 3 es el responsable de atender interrupciones externas,de este modo, se le avisa al microcontrolador que una tecla se ha presionado y a partir de allícomienza una serie de procesos dirigidos por el microcontrolador como lo son:

Figure 6: Detalle fila  Figure 5: Detalle columna  Figure 4: Detalle conexión micropro

Page 7: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 7/21

7

1.  Eliminación del rebote.2.   Verificación de la tecla, búsqueda en memoria code del carácter presionado.3.  Espera a soltar la tecla.4.  Envío del carácter por vía serial a una computadora.

De acuerdo a lo anteriormente descrito podemos sintetizar el diseño del teclado en el siguientediagrama de bloques:

Figure 7: Diagrama de bloques del funcionamiento del teclado y microprocesador

Page 8: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 8/21

8

Figure 8: Esquemático de la conexión realizada entre el teclado y el microprocesador

Para construir el teclado se utilizaron 16 switches de 4 pines, los pines tienen continuidad de a pares,es decir los pines que están de un mismo lado se comportan como uno solo. El esquema circuital delos mismos así como el layout correspondiente realizados con el programa Eagle se presentan acontinuación:

Figure 9: Esquemático del circuito impreso del teclado

Page 9: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 9/21

9

Figure 10: PCB correspondiente con el teclado (EAGLE)

Page 10: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 10/21

10

Software

Descripción de cada proceso: 

a.  Programa principal : se inicializan los registros de forma convenientei.  PCON en 00h, no se duplica la velocidad de comunicación serial y no

configuramos el modo de baja energía.ii.    TCON en 00h, inicializamos los flag de over flow de los timer y configuramos la interrupción externa por nivel, después de cadainterrupción se resetea por programa IE1.

iii.  IP en 03h, se da alta prioridad a interrupción externa y para el timer, lainterrupción serial tiene baja prioridad.

iv.  SCON en 40h, se configura la comunicación serial en 8 bits uart y se borra elflag de interrupción IT.

 v.  DPH en 00h, el DPTR constituye el puntero de la tabla de memoria codeque contiene el código de la tecla que ha sido presionada, aquí se inicializa la

parte alta de este puntero. vi.   TMOD 21h, se configura el timer 0 en modo de 16 bits y el timer 1 en modo

de 8 bits con autorecarga. vii.   TL0 en 00h y TH0 en EEh, se configura la cuenta del timer cero para el

proceso de escaneo, este escaneo es de 5 ms. viii.  En Acc y B se guarda el inicio de de la tabla de memoria RAM en donde se

guardaran las teclas presionadas que no puedan enviarse inmediatamente.ix.  P1 en 7Fh, se inicializa el puerto 1 en un valor conveniente para el escaneo

del teclado.x.  F0 y PSW.1 en 0, F0 es un flag que indica que la función del timer 0 es la

espera del rebote, se coloca en cero para indicar que esa no es su funciónactual. Por su parte el registro PSW.1 indica que el timer está a la espera deque se suelte una tecla, se coloca en cero para indicar que el timer no estáejecutando esa función actualmente.

xi.  IE en 93h, se habilitan las interrupciones externa, la del timer 0 y la serial.xii.   TH1 y TL1 en FDh, se configura la comunicación serial a 9600 baudios.xiii.  Bits 4 y 6 del TCON a 1, para iniciar la cuenta de los timer.xiv.   Jmp $, el programa queda a la espera de algún suceso.

b.  Interrupción externa : Esta interrupción es habilitada cuando alguna de las columnastiene un valor lógico de cero (mas adelante explicaremos que el proceso de escaneoes realizado únicamente a las filas), de esta manera si alguna tecla es presionada lacolumna correspondiente tomará un valor lógico de cero, y al pasar todas lascolumnas por una and si alguna tecla es presionada y si el valor predeterminado deestas columnas es uno, entonces al presionarse cualquier tecla esta interrupción seactivará. Al entrar en esta interrupción se guardan en pila los valores de los punterosde la tabla de RAM interna, se inhabilitan las interrupciones y se detiene la cuenta deltimer, a continuación guardamos el valor presente en el puerto 1, y se procede a

Page 11: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 11/21

11

configurar una espera de 65ms correspondiente a una espera antirebote,seguidamente se activa la bandera F0 que indica que la función que estádesempeñando el timer es la de espera del rebote. Por último se sacan los registrosde la pila y se inicia la cuenta del timer. También se inhabilita la interrupción deltimer, esto para evitar que los rebotes originen falsos registros del puerto, es decir,

para no originar esperas consecutivas de rebote.c.  Interrupción del timer : el timer controla tres procesos, el escaneo, la comprobación de la

tecla (verificar y evitar el rebote), y comprobar que se suelte la tecla, a continuaciónse describe el proceso seguido: Se guardan en pila los punteros de la tabla de RAMinterna, se verifica el valor de las banderas, si F0 vale 1 entonces se salta a la etiquetaque se encarga de procesar el rebote, si PSW.1 vale 1 entonces se procede acomprobar si la tecla ha sido soltada, si ambas banderas valen cero entonces elproceso correspondiente es el escaneo.

i.  Proceso de escaneo: en primer lugar se detiene la cuenta del timer y seprocede a guardar en el registro Acc el valor del puerto 1 (recuérdese que enel programa principal se definió al bit más significativo como una salida de valor bajo y al resto de los bits como entradas) acto seguido se procede arotar a la derecha cada uno de los bits de Acc, esto trae como consecuenciaque paulatinamente se configura como salida alguno de los bits del puerto, esimportante recordar, que el teclado posee 4 filas y 4 columnas, de este modo,como se quiere que el escaneo se haga solo a las filas se conectaran porconveniencia las filas del teclado a los 4 bits más significativos del puerto 1,en tanto las columnas serán conectadas a los cuatro bits menossignificativos. Este proceso requiere además de preguntar periódicamente si

ya se terminaron de escanear las cuatro filas para así recomenzar el escaneodesde la fila cero. De este modo una vez guardado en Acc el valor presenteen el puerto (estado anterior) se procede a verificar si el bit que se estabaescaneando era el bit 4 (Acc.4=0), si es así se reinicia el valor del puerto en7Fh, de lo contrario se rotan los bits para así seguir con el escaneo de lasfilas subsecuentes. Se coloca el nuevo valor de Acc en el puerto y se activa lainterrupción externa (esto es por precaución, recordemos que esta fuedesactivada en la rutina de interrupción externa y dependiendo de cómo sedesarrollen los procesos y por fenómenos explicados más adelante serequiere garantizar que se active esta interrupción aunque no parezca

necesario). Después de esto se vuelve a iniciar la cuenta en 5 ms y se salta ala etiqueta FIN2 donde se sacan de la pila todos los registros y se habilitantodas las interrupciones (en otros procesos del timer estas se deshabilitan y es requerido habilitarlas nuevamente)

ii.  Proceso de verificación de tecla pulsada: Después de que una tecla espulsada y pasa el tiempo configurado para la espera antirebote se habilita lainterrupción del timer y entonces, después de verificar que el valor de la

Page 12: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 12/21

12

bandera F0 es 1 se salta a la etiqueta rebote, en la cual se inhabilitan todas lasinterrupciones (para seguir sugerencia de la practica), se borra el valor de labandera, se resetea nuevamente el bit que indica interrupción por nivel y seprocede a la verificación de la tecla. Como en la interrupción externa el valordel puerto fue guardado en una variable, ahora se compara el valor de está

con el valor actual del puerto, de ser diferentes se salta a la etiqueta FIN2 (eneste proceso se observa que es esencial reactivar todas las interrupcionesaunque en el anterior no parecía necesario). No obstante si lo que ve elpuerto a continuación es igual a lo que se vio hace 50 ms entonces seprocede a hacer la validación del código, se activa la bandera PSW.1 queindica que una tecla ha sido presionada. Ya que lo que llega del puerto es unindicador de la posición de la tecla pulsada es importante considerar variassituaciones, entre ellas que el usuario del teclado presione varias teclas a la vez, en este caso, se configura el teclado para que no escriba ningún carácter,para lo cual se tomo en consideración los posibles códigos generados siSOLO UNA TECLA es presionada, para ello se requiere manipular el valorproveniente del puerto, en tal sentido debemos recordar que en el nible altodel puerto esta la información referente a las filas y en el nible bajo lareferente a las columnas, por ello al multiplicar el valor del puerto(previamente guardado en Acc) por 10h se habrá separado la información dela fila de la de las columnas y se procede a hacer una verificación tomandoen consideración cual es el código generado si solo se presiona una tecla(este proceso se explicara con más detalle en el apartado donde se explica latabla de memoria code), de esta manera si se presiona más de una tecla el

código generado será diferente del que podría tomar si solo se presionarauna tecla (piense en un sistema de coordenadas, si se activan dos teclas a la vez se estará haciendo referencia a dos filas o columnas simultáneamente y alser esto detectado se salta inmediatamente a la etiqueta „FIN2‟ ). Si despuésde la confirmación resulta que solo se presiono una tecla entonces se guardaen el DPL el valor correspondiente a la coordenada de la fila y en Acc el dela columna, y a través de la instrucción movc A,@A+DPTR se tiene accesoa la tabla que contiene el valor correspondiente a la tecla presionada. Actoseguido se verifica si la tecla presionada fue la tecla borrar, de ser así se va auna rutina especial que se encarga de borrar, de no ser así se verifican los

punteros de la tabla RAM interna (para ello se sacan de pila los respectivos valores de la misma). Esta tabla RAM tiene como función servir de buffer,de este modo si existiese algún dato pendiente o en proceso de envío no seperderá el valor presionado a menos que se llene la memoria del buffer. Estatabla de memoria es necesaria en el proceso de borrado en el cual se requiereel envío de tres caracteres. De este modo se verifica que los punteros tenganigual valor, de ser así entonces no existe ningún dato pendiente y se puede

Page 13: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 13/21

13

enviar inmediatamente el valor de la tecla presionada enviando el valor de Acc al Sbuf y saltando a la etiqueta de „espera‟, en caso contrario se debeguardar en la posición correspondiente del buffer para lo cual se saltaría a laetiqueta „buf ‟, en la cual se incrementa el puntero B (dirección actual de latabla) mientras se deja fijo Acc (puntero de inicio de la tabla), el registro de

inicio de tabla siempre se mantiene vacio y esto es lo que permite saber si nohay datos pendientes (ya que esta comparación se hace a partir del valor delos punteros). Después de incrementar la dirección actual se verifica que elbuffer no esté lleno, de estarlo no se escribe nada y se salta a la etiquetaespera (para esperar soltar botón), sin embargo, si hay espacio suficiente seguarda en la posición correspondiente del buffer y se guarda el valor de losnuevos punteros. En el caso que la tecla presionada sea la tecla borrar se va ala etiqueta „borrara‟ donde se comprueba que hay espacio suficiente en elbuffer, acto seguido se llama a la subrutina „borrar‟ que comprueba si hay datos pendientes o no y envía los tres caracteres (atrás blanco y atrás) deacuerdo a lo requerido. Todo este proceso explicado anteriormente son losprocesos de Verificación de Tecla y Almacenamiento de Código de Tecla.Nótese que si estos procesos resultan exitosos o positivos según losrequerimientos ya explicados se va a la etiqueta „espera‟, en la cual seinhabilita la interrupción externa (para evitar problemas si el usuario decidejugar con el teclado) y se inicia una cuenta de espera después de la cual se verificará si se ha soltado la tecla, se lleva a 1 la bandera PSW.1 para indicarque la próxima función del timer es precisamente la Verificación de Teclaliberada, se inicia la cuenta y se salta a la etiqueta „FIN2‟. 

iii.  Verificación de Tecla liberada: después del proceso anterior y si se presionouna tecla, la siguiente interrupción del timer será verificar si una tecla se hasoltado, para lo cual se salta a la etiqueta „dejaron‟ una vez que se verifique el

 valor de la bandera PSW.1, ahí basta con verificar el nible bajo del puerto,para lo cual se lleva a Acc el valor del puerto 1, se complementan todos losbits de Acc (si la tecla ha dejado de presionarse entonces el nible bajo serácero), se multiplica Acc por 10h (ahora Acc será 00h si la tecla ha dejado depresionarse), de este modo si no se ha soltado la tecla se vuelve a la etiqueta„espera‟ de lo contrario se va a la etiqueta „solto‟ donde se reanuda la cuenta

para el escaneo, se habilita la interrupción externa y se borra la bandera

PSW.1, después de lo cual se salta a „FIN2‟. d.  Interrupción serial : una vez que un dato termina de enviarse vía serial se habilita lainterrupción serial, aquí se verifica si existen datos pendientes por enviarse, de ser asíse procede a hacer un corrimiento de los registros de la tabla de RAM internadespués de lo cual se salta a la etiqueta „trans‟ donde se borra la bandera TI y se

recupera el puntero de inicio de tabla, el puntero de posición actual es modificado en

Page 14: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 14/21

14

esta interrupción. De no haber dato pendiente se salta directamente a la etiqueta„trans‟.

Subprocesos: 

a.  Programación de los timer: 

i.  Escaneo: el escaneo se realiza cada 5 ms y se configura el timer 0 en modo de 16bits, de esta manera TL0 y TH0 serán 00h y EEh respectivamente.

ii.  Rebote y espera a liberación de tecla, se realiza cada 65 ms, TL0 y TH0 00h y 16h.iii.  Baud rate del timer 1: se configura según el set de instrucciones dado en clase a FDh

para los 9600 baudios.iv.  Se programa la interrupción externa por nivel, esto permite evitar problemas a la

hora de manipular el teclado.

b.  Con cada interrupción de tiempo: 

1.  Salida del código de fila y lectura del código de columna: en el caso

del proceso de escaneo la lectura de las columnas, si nadie presionauna tecla, se mantiene en 1 todo el tiempo (nible bajo en 1), por suparte, de manera recursiva las filas (bits del nible bajo)estaráncambiando a salidas 0, de manera grafica tenemos:

FILAS COLUMNAS  Acc.7 Acc.6 Acc.5 Acc.4 Acc.3 Acc.2 Acc.1 Acc.0

0 1 1 1 1 1 1 11 0 1 1 1 1 1 11 1 0 1 1 1 1 11 1 1 0 1 1 1 1

0 1 1 1 1 1 1 12.  Después de presionada una tecla, la lectura de las columnas

dependerá de cuál de ellas ha sido presionada. Una vez que la teclaha sido liberada la salida del código fila y lectura del código columnase corresponderá con la última fila escaneada antes de presionarse latecla.

3.   Actualización de banderas y memorización de códigos. Las banderasF0 y PSW.1 se activan o desactivan de acuerdo al proceso, cada vezque una tecla es presionada la bandera F0 pasa su valor lógico a 1,después de verificar el rebote se lleva a cero. Por su parte la bandera

PSW.1 siempre permanece en alto hasta que la tecla no sea soltada(se lleva a 1 una vez que se establece que la tecla presionada es válida)

4.   Variables: se definen la variable de 8 bits „valor‟ guarda el valor del

puerto cuando se activa la interrupción externa, se utiliza paraposterior comparación.

Page 15: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 15/21

15

5.  Definir tabla de memoria Code para la codificación del teclado y codificación de tecla pulsada:

Como se explico previamente, en esta práctica se valió de la posiciónde las teclas para su codificación, a continuación se presenta unesquema del valor que tendría el puerto si SOLO UNA de las teclas

fuese presionada de acuerdo con el esquema general del teclado:  Tecla F3 F2 F1 F0 C3 C2 C1 C0 ValorP1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

1 1 1 1 0 0 1 1 1 E72 1 1 1 0 1 0 1 1 EB3 1 1 1 0 1 1 0 1 ED+ 1 1 1 0 1 1 1 0 EE4 1 1 0 1 0 1 1 1 D75 1 1 0 1 1 0 1 1 DB6 1 1 0 1 1 1 0 1 DD- 1 1 0 1 1 1 1 0 DE7 1 0 1 1 0 1 1 1 B7

8 1 0 1 1 1 0 1 1 BB9 1 0 1 1 1 1 0 1 BD* 1 0 1 1 1 1 1 0 BEDel 0 1 1 1 0 1 1 1 770 0 1 1 1 1 0 1 1 7B= 0 1 1 1 1 1 0 1 7D/ 0 1 1 1 1 1 1 0 7E

Page 16: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 16/21

16

Es conveniente ahora repasar el proceso de búsqueda en la tabla dememoria code el valor de la tecla pulsada, en primer lugar se dijo queel valor del puerto se llevaba a Acc se intercambiaban los nibles (altocolumna, bajo filas) y luego se multiplicaba por 10, de este modo deacuerdo a la tecla presionada se tendrá:

  Tecla Acc(Filas) B(columnas)1 E0 072 E0 0B3 E0 0D+ E0 0E4 D0 075 D0 0B6 D0 0D- D0 0E7 B0 07

8 B0 0B9 B0 0D* B0 0E

Del 70 070 70 0B= 70 0D/ 70 0E

Puede observarse claramente que solo existen 4 valores de filas y 4columnas validos si solo se presiona una tecla, es bajo esta premisaque se resuelve el inconveniente de varias teclas presionadas a la vez,pues en el código se revisa primero el código de las filas, si lo que se

recibe del puerto es diferente de alguno de los valores „filas‟ entoncesse están presionando varias teclas a la vez y por lo tanto se decide noenviar nada por el puerto, una vez verificadas las filas se procede a  verificar las columnas, si lo que se leyó del puerto es diferente dealguno de estos datos entonces se presiono más de una tecla y por lotanto se decide no enviar nada al puerto (tecla no valida).Una vez establecido cuando una tecla es válida o no entonces seprocede a su búsqueda en tabla de memoria code, la tabla fuedefinida de la siguiente forma:

Page 17: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 17/21

17

De este modo justificamos la inicialización del DPH en 00h y elhecho de guardar en DPL el valor de la fila y en A el de la columna,puesto que con ello se hace uso de la instrucción movc A,@A+DPTR. Nótese que la posición de memoria correspondientea la tecla borrar (en el circulo) tiene como valor 00h, este valor es el

que se usa para discriminar si esta tecla ha sido presionada, es decir,se revisa si el valor obtenido de la tabla es 00h, si lo es entonces se vaa la etiqueta „borrara‟ y se realiza el proceso ya explicado. 

Proceso de almacenamiento en memoria RAM interna.

a.  Definir tabla en memoria Ram interna: esta tabla está localizada a partir de ladirección 60h, la tabla se llama buffer y tiene una longitud de 9 bytes (recuérdese queuno de ellos siempre permanece vacio por motivos prácticos).

b.   Acc y B son los punteros de la tabla en memoria RAM, Acc indica el inicio de latabla mientras que B indica la dirección actual, para guardar en la tabla simplemente

se incrementa el puntero de dirección actual y se escribe el valor de la tecla aalmacenar en dicha dirección. En el caso de la interrupción serial, una vez que seenvía el dato y se verifica si hay datos pendientes se procede a enviar el dato de ladirección 61h y se corre cada uno de los datos pendientes, después de lo cual ladirección actual se decremento. Este proceso se repite hasta que no quedan ya datospendientes por enviar.

Proceso de comunicación entre el microcontrolador y el computador vía RS232: 

El puerto serial del microcontrolador es un puerto “FULL DUPLEX”, lo cual significa que puedetransmitir y recibir datos simultáneamente (pines 10 y 11 del integrado). El receptor contiene un

“Buffer”, que le permite comenzar a recibir un segundo dato sin necesidad de que el primero hayasido completamente leído. Sin embargo si el primer byte permanece sin ser leído hasta el final de larecepción del segundo dato, éste se perderá. El dato de la Recepción y de la Transmisión seencuentra en el registro SBUF del SFR (espacio de funciones especiales).El registro SCON contiene todos los parámetros que permiten controlar el funcionamiento delpuerto serial y establecer su modo de trabajo. Como previamente se explicó la comunicación estáconfigurada en modo 1 a 9600 baudios.En el modo 1 se transmiten 10 bits por Tx o recibidos por Rx (en este caso solo es de interés latransmisión serial). Estos 10 bits son los 8 bits de información (del menos significativo al massignificativo), un bit de inicio en nivel 0 y un bit de parada en nivel 1(véase figura 0 del marco

teórico).Se inicia la transmisión de un dato por cualquier instrucción que escriba en el registro SBUF.La señal de escritura en SBUF, también carga un 1 dentro de la novena posición del registro decorrimiento de transmisión y establece en la unidad de Control Tx una demanda de transmisión.La transmisión comienza en el estado 1 en la primera fase del ciclo de máquina siguiente, en elprimer pulso proporcionado por el circuito divisor (%16 de la frecuencia dada por el Timer 1). Es

Page 18: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 18/21

18

decir, los datos de entrada están sincronizados por el circuito divisor %16, y no por la escritura enSBUF.La transmisión comienza con la activación de la señal SEND, la cual introduce el bit de START en TxD. Un periodo más tarde (segunda fase del estado 1) la señal DATA es activada, la cual permitela salida de los bits que se transmitirán por TxD. El primer pulso de corrimiento ocurre un

período después de esto.

Figure 11: Diagrama de estados de la comunicación serial del microcontrolador 8051 (manual del microcontrolador 8051 Alejandro Vega 1999)

El protocolo de transmisión RS232 fue explicado en el marco teórico, ahí se explica en quéconsisten los niveles de tensión del protocolo y como es el puerto DB-9 de la computadora.

PRESENTACION Y ANALISIS DE RESULTADOSDespués del proceso de programación y diseño se realizaron las pruebas correspondientes, las cualesconsistieron en conectar el teclado previamente construido al puerto del micro y a su vez este microse conecto a la computadora vía serial. A través del programa hyperterminal se visualizaron losresultados, se procedió a tocar cada una de las teclas y a hacer diversas combinaciones con las teclas.Se observó lo siguiente:

   Todas las teclas funcionaban y enviaban los respectivos caracteres al ser presionadas una auna (se debe presiona fuertemente para que la computadora reconozca el carácter, esto sepiensa es un problema de hardware).

  Al presionar mas de una tecla a la vez NO se escribe nada, es decir el micro no envía ningúncaracter vía serial.

   Al dejar una tecla presionada durante mucho tiempo esta solo se escribe una vez.

  Si se mantiene presionada una tecla, y mientras se hace esto se presiona otra tecla, entoncesel microprocesador no envía nada.

  El proceso de borrado se realizó con éxito.

Page 19: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 19/21

19

El programa resulto en 604 líneas de code (información suministrada por el Keil al compilar elprograma). Salvo el hecho que el programa quedó bastante grande y quizás pueda hacerse máseficiente, éste cumple con su función, es decir, envía caracteres desde un teclado numérico hacia lacomputadora vía comunicación serial de manera exitosa y según los requerimientos solicitados.

CONCLUSIONESSe logró cumplir el objetivo de la práctica, es decir se pudo elaborar exitosamente un tecladomatricial de 16 teclas para ser conectado a uno de los puertos del microcontrolador 89S52 y diseñartodas las rutinas necesarias para que el microcontrolador sea capaz de mostrar cada una de las teclasintroducidas en una pantalla a través de comunicación serial.

BIBLIOGRAFIA 

   Arellano, E. S. (Desconocido). Curso de microcontroladores I.

  desconocido. (s.f.). DB styles . Recuperado el 10 de Junio de 2010, dehttp://www.ve7ed.com/documents/db_style.html

  Pérez, E. L. (1998). INGENIERIA EN MICROCONTROLADORES Tutorial delProtocolo RS-232. Ciudad de Mexico.

   Vega, A. (Agosto-Dicieembre de 1999). Manual del microcontrolador 8051. Desconocida.

Page 20: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 20/21

20

 ANEXOS (CODIGO EN KEIL)

Page 21: Proyecto Con 8051

5/10/2018 Proyecto Con 8051 - slidepdf.com

http://slidepdf.com/reader/full/proyecto-con-8051 21/21

21