Autor Tema: rs-232  (Leído 3625 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
rs-232
« en: 20 de Junio de 2009, 20:05:59 »
Que tal amigos, tengo que hacer un proyecto para la facu. En ppio tengo que hacer un par de pruebas, recibiendo datos rs-232 y mostrandolos en un display.
Ej: por medio de algun programa en visual, envio el numero 2345 y lo visualizo en 4 displays.
Mis mayores dudas son, como armar la tabla de conversion BCD a 7 seg, y como recibo el dato. Estoy usando el 16f877 , es cual tiene USART por ende estoy usando el mismo. Como recibo los datos en el pic? (suponiendo la trama de 8 bits), donde se almacenan y como hago para sacar los datos y representarlos en 7 seg.
sds gonza

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: rs-232
« Respuesta #1 en: 20 de Junio de 2009, 20:10:53 »
Los datos que recibes trendiras que imprimirlos por los puertos, aqui como ya marcaste que usaras Displays y no una Lcd tendrias que hacer un multiplexado de los display para que asi te marque lo que necesitas

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #2 en: 20 de Junio de 2009, 20:19:57 »
Claro eso lo entiendo.Pero a lo que voy es , me llegan 8 bits, como los guardo, los convierto de bin a bcd y de bcd a 7 seg y los imprimo en el puerto. Tengo un grave problema conceptual con eso.

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #3 en: 20 de Junio de 2009, 20:38:08 »
En realidad me llega un dato en ascii, en 8 bits. Luego tengo que, de alguna manera, llevarlo a una representacion de 4 display de 7 segmentos. Ese es mi mayor problema, como armar la tabla de decodificación y representar en 4 displays, no se si logro explicarme bien. Por un lado tenemos un codigo totalmente distinto a lo que tengo q representar. Por eso a mi se me ocurrio en primer lugar convertir de ascii a bcd y luego bcd 7 segm.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: rs-232
« Respuesta #4 en: 20 de Junio de 2009, 20:38:20 »
Claro eso lo entiendo.Pero a lo que voy es , me llegan 8 bits, como los guardo, los convierto de bin a bcd y de bcd a 7 seg y los imprimo en el puerto. Tengo un grave problema conceptual con eso.

Es que en este caso podrias usar Casos, o Ifs, si es que estas usando CCS

un ejemplo es que en tu trama te manda el caracyer "R" asi que en tu programacion dirias

If(Recivir = 'R') (Creo que si es asi jeje no te confies solo es un ejemplo)
   el Codigo de la conmutacion
En si no se guarda a menos que tu generes la programacion y le digas al Pic Que lo guarde en la Eeprom, ya hay un tema sobre eso en si trata de un 4550 deja lo busco y te paso la liga

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #5 en: 20 de Junio de 2009, 20:58:49 »
mmm ok. Igual estoy programando en assembler, porque eso se me complica mucho. Esta es una pregunta para vos, porque estoy un poco confundido. Si yo en el programa escribo 2478, la pc enviara los sig datos en hexa, 02h04h (8bits)07h,08h(8bits). digamos que seran 2 tramas de 8 bits en la cual en la primera tendre el siguiente binario sino me equivoco 00100100-01111000, eso es correcto? . Pues si fuera asi, guardo dicha trama y de alguna manera(no se como) cada cuatro bits convierto en bcd, no se si entiende la logica?. Algo similar a lo que decis vos. Entonces la tabla se veria mas reducida. Pero aun asi tendria el problema de los pesos numericos, como saber el micro cual tiene mayor peso?

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #6 en: 20 de Junio de 2009, 21:06:51 »
quizas es mas facil, hacer la equivalencia hexa de ese numero entrante y hacer un contador no?.
Ejemplo llega el numero 79 ascii lo paso a hexa  (4f) y luego cuento de 00h a 4Fh y lo represento.
Eso sería una mejor idea?porque quizas imprimir en puertos, necesitaria 4 puertos en paralelos, uno para cada display y eso no es negocio. Se entiende?
Te estoy matando a preguntas, jajjaa. Gracias por la buena onda

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: rs-232
« Respuesta #7 en: 20 de Junio de 2009, 21:21:07 »
Si no te entedi mal, tu enviarías por ejemplo 2478 en Hexadecimal recibiendo 2 bytes de 0x24 y 0x78.

Para dividir este byte en 2 con un registro con la parte baja y el otro con la parte alta se puede hacer asi:

Código: ASM
  1. movfw   ByteRecibido  ;0x24
  2.    movwf   DatoBajo       ; DatoBajo=0x24
  3.    swapf    DatoBajo,w    ; W=0x42
  4.    movwf   DatoAlto        ; DatoAlto=0x42
  5.    movlw   0x0F
  6.    andwf    DatoAlto,1    ;DatoAlto=0x02
  7.    andwf    DatoBajo,1    ;DatoAlto=0x04

Aquí hay rutinas para la conversión a BCD

Aquí vas a encontrar información para manejar varios Display de 7 segmentos
No contesto mensajes privados, las consultas en el foro

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #8 en: 20 de Junio de 2009, 21:50:04 »
en realidad 2478 esta en ascii, seria asi como decis vos 0x24 y 0x78? o es: cada digito ocupa 4 bits? porque si fuera asi como digo yo seria 16 bits o sea 2 bytes. A ver si me explico mejor, cada numero ocupa 4 bits? o se agrupan cada 2 numeros?. Si yo lo pienso en funcion del teclado, para escribir ese numero apreto el 2 (0010) 4(0100) 7(0111) 8 (1000). Es asi como se manda la trama? oes como propones vos , esto seria dividir el numero en 2 partes alta:24 y baja:78. son dos cosas diferentes, es es otra duda q tengo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: rs-232
« Respuesta #9 en: 20 de Junio de 2009, 22:13:38 »
No, si el 2478 se envía en ascii, se envía un byte por cada numero, ósea:
2 = 0x32
4 = 0x34
7 = 0x37
8 = 0x38

Así que mucho mas sencillo, porque para obtener el numero binario solo le restas 0x30.
No contesto mensajes privados, las consultas en el foro

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #10 en: 21 de Junio de 2009, 17:09:13 »
Gracias por la ayuda suky. Si bien tengo algo de conocimiento acerca de esto, soy un novato en pics. Por otro lado estaba medio perdido con los codigos y la transmision asi que esto me viene de diez. Igual sigo teniendo una duda, la pc me envia los datos codificados en ascii? on hexa (binario al final y al cabo)?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: rs-232
« Respuesta #11 en: 21 de Junio de 2009, 17:21:54 »
Gracias por la ayuda suky. Si bien tengo algo de conocimiento acerca de esto, soy un novato en pics. Por otro lado estaba medio perdido con los codigos y la transmision asi que esto me viene de diez. Igual sigo teniendo una duda, la pc me envia los datos codificados en ascii? on hexa (binario al final y al cabo)?
Envía el binario codificado, ejemplo: la PC envía el numero 2, entonces el PIC recibe b'00110010'
No contesto mensajes privados, las consultas en el foro

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #12 en: 21 de Junio de 2009, 17:32:25 »
Excelente con eso ya estoy en el tema. Ahora viene el otro problema, como lo represento en el display, porque a mi me vienen los numeros por separados y yo indirectamente les doy un peso , mejor dicho orden (decena, centan unidad). Conviene llevar todo al numero en binario y luego contar para representar?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: rs-232
« Respuesta #13 en: 21 de Junio de 2009, 18:11:42 »
Excelente con eso ya estoy en el tema. Ahora viene el otro problema, como lo represento en el display, porque a mi me vienen los numeros por separados y yo indirectamente les doy un peso , mejor dicho orden (decena, centan unidad). Conviene llevar todo al numero en binario y luego contar para representar?
Tu recibes el primer byte, y lo identificas como unidad por ejemplo, a este le restas 0x30, y ya tienes el numero para la conversión a 7seg. Osea, PC envía "2", PIC recibe b'00110010', le restas 0x30, entonces te quedas con b'00000010' listo para ingresar a una tabla de conversión Binario a 7 Segmentos. En una de las respuestas anteriores te di un link donde hay varios ejemplos.
No contesto mensajes privados, las consultas en el foro

Desconectado gonza

  • PIC10
  • *
  • Mensajes: 10
Re: rs-232
« Respuesta #14 en: 21 de Junio de 2009, 18:33:15 »
ok, esta bien. Porque se me habia ocurrido de otro manera pero ya esta. Gracias de todos modos.