Ir al contenido


Delphi, TComPort y El 8051 Micro.


  • Por favor identifícate para responder
38 respuestas en este tema

#1 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 24 diciembre 2008 - 04:55

Hola Amigos.

  Hoy les quiero traer un mini-tutorial de como interconectar una PC con un Micro 8051 via Serial Port.Para ello usaremos el Componente TComPort y desde luego ejemplos creados en Delphi.

Imagen Enviada

Aqui tenemos el esquematico de la conecion:

Continuara....

Un Saludo.

#2 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 24 diciembre 2008 - 05:27

Bueno continuamos con el tutorial:

  Les dire que existen diferentes componentes para el puerto serie.Pero en esta oportunidad hablaremos del componente TComPort de Dejan Crnila.Este componente es gratis y funciona para el Delphi 3, 4, 5, 6 y 7.

Para aquellos que aun no lo tengan aqui les pongo un enlace para que lo puedan obtener:
1)
http://suncoastmicro.../cport-3.10.zip

Ahora como ejemplo les dare una demostracion de como instalarlo en Delphi 6.0

Despues de bajar el file cport-3.10.zip

2) Lo descomprimimos y obtendremos estos files:


Imagen Enviada
Files despues de descomprimido cport-3.10.zip

3) Descomprimimos la carpeta sources.zip

4) Buscamos  el file CPortLib6.dpk le damos doble click y se habrira una ventana en Delphi como esta:

Imagen Enviada

5) Le damos click al boton "Compile" y se generaran otros files como estos:

Imagen Enviada
Tendremos estos files despues de compilar CPortLib6.dpk

6) Copiamos todos estos nuevos files en la carpeta Lib donde tenemos instalado Delphi(i.e.

c:\Program Files\Borland\Delphi6\Lib\ )

7) Cerramos Delphi y buscamos en la carpeta "sources" el file DsgnCPort6.dpk le damos doble click y
Delphi habrira otra ventana Package window.

Imagen Enviada
Tendremos esta ventana despues de darle doble click a DsgnCPort6.dpk

8) Le damos al boton Compile y luego a Install . El TComPort Componente quedara instalado en la Paleta de componentes de nuestro Delphi.
Si miramos en la paleta de componentes de nuestro Delphi, podremos ver una pestaña llamada CPort.La habrimos
y tendremos algo asi:

Imagen Enviada

Si encontramos esta pestaña en la paleta de componentes, entonces nuestra instalacion a sido un exito. (y)

Cualquier duda al respecto, aqui estamos para ayudar. ;)

Un Saludo.
Continuara....

#3 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 25 diciembre 2008 - 11:14

Hola Amigos.

Continuamos con el tutorial:

Una de las cosas mas importantes es estar bien familiarizados con el conector DB9 (serial port)

Imagen Enviada

El conector mas comun para el puerto serie es el de 9 pines (DB9), aunque algunas PCs tambien estan equipadas con conectores de 25 pines para el puerto serie.
En la imagen anterior resaltamos los pines #2 y #3.
El Pin #2 es por el cual el computador estara recibiendo la data del exterior y por el Pin #3 estara transmitiendo data al exterior.(estos dos pines son los que estaremos usando en nuestro proyecto)
Los demas pines tienen su funcion tambien y a continuacion mostrare una imagen que nos mostrara sus nombres y la direcion de sus señales:

Imagen Enviada
En esta imagen podemos observar los nombres de los 9 pines y la direcion de sus señales.

Para conectar el puerto serial del computador al microcontrolador, se usara un cable como este:

Imagen Enviada

En la siguiente imagen mostraremos los tres pines que en realidad nos importan de este cable:

Imagen Enviada

Un Saludo.

Continuara...

#4 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 25 diciembre 2008 - 05:59

Bueno continuando...

  Tenemos ya claro lo del cable BD9 (para el puerto serie) Pero entre el Com del PC y el Micro podemos ver un chip
Max232.Esto se debe a que el voltage de los pines de un puerto serie en nuestro computador, es un voltage muy elevado para conectarlo directamente a los pines de un uC.
El voltage del puerto serie va desde -15V <----> +15V y el maximo de voltage que permite los pines de un uC es 5V ya que es una estructura TTL.
   Esta tabla nos muestra los voltages en un puerto serie, el valor despues de convertido en el max232 y su valor (logico)
Imagen Enviada


Ya sabiendo el porque de la presencia de un chip MAX232 en nuestro proyecto, quiero mostrar una imagen de como es un chip max232.

Imagen Enviada

La siguiente imagen nos muestra como conectar un Max232:
Imagen Enviada

Bueno dejamos por el momento la parte del hardware y en el proximo paso nos adentramos en Delphi y el componente TComPort.

Alguna pregunta al respecto ya saben estamos a la orden para contestarla. ;)


Continuara....

Un Saludo.

#5 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 25 diciembre 2008 - 09:51

Pues sí, tengo una duda, al realizar la placa, ¿debo colocar un conector macho DB9?, ¿qué tipo de componentes son J10 y J9?, ¿Diodos, resistencias y qué valores?.

Saludos.
  • 0

#6 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 26 diciembre 2008 - 05:10

Pues sí, tengo una duda, al realizar la placa, ¿debo colocar un conector macho DB9?, ¿qué tipo de componentes son J10 y J9?, ¿Diodos, resistencias y qué valores?.

Saludos.


Hola enecumene, Para la placa se coloca un DB9 hembra, ya que la parte del cable que quedara para la placa es macho. ;)

Aqui te dejo dos imagenes de este conector:
Imagen Enviada

Imagen Enviada

Por otra parte te comento que J9 y J10 son jumpers.Estos solo se colocan si quieres redirecionar el micro a otro max232 o similar.Pero en el caso de solo contar con un max232 no hacen falta y pues se puede conectar esos pines directo pin con pin.

Un Saludo.

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 26 diciembre 2008 - 07:06

¡Excelente!, lo que me preocupa es conseguir ese conector hembra, mmm, no lo he visto aquí, pero en algún lado aparecerá :D, gracias José.

Saludos.
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 26 diciembre 2008 - 07:10

si tienes algun cable serial de esos que traen las gavetas de dinero o las impresoras COM, puedes utilizarlos, necesitaras un soldador para armar la configuración.
  • 0

#9 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 26 diciembre 2008 - 07:12

si tienes algun cable serial de esos que traen las gavetas de dinero o las impresoras COM, puedes utilizarlos, necesitaras un soldador para armar la configuración.


Pues de Soldar/Desoldar no me preocupo, tengo equipos para eso, lo que me preocupa es conseguir esos componentes :(, pues no tengo al alcance Impresoras COM o Cajones de Dinero.

Saludos.
  • 0

#10 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 26 diciembre 2008 - 07:14

en una tienda de electronica, o en alguna tienda de computacion seria no deberia ser problemas encontrarlo.
  • 0

#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 26 diciembre 2008 - 07:16

en una tienda de electronica, o en alguna tienda de computacion seria no deberia ser problemas encontrarlo.


Pues siendo éste país (RD) deberías dudarlo :s


  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 26 diciembre 2008 - 07:27


en una tienda de electronica, o en alguna tienda de computacion seria no deberia ser problemas encontrarlo.


Pues siendo éste país (RD) deberías dudarlo :s



jeje, no te quejes ... no te quejes compadre ... *-)

que este intento de socialismo....
  • 0

#13 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 26 diciembre 2008 - 09:25

¡Excelente!, lo que me preocupa es conseguir ese conector hembra, mmm, no lo he visto aquí, pero en algún lado aparecerá :D, gracias José.

Saludos.

Eso es muy comun y en cualquier lugar de electronica serio lo encontraras. ;)

Un Saludo.

#14 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 26 diciembre 2008 - 09:29



en una tienda de electronica, o en alguna tienda de computacion seria no deberia ser problemas encontrarlo.


Pues siendo éste país (RD) deberías dudarlo :s



jeje, no te quejes ... no te quejes compadre ... *-)

que este intento de socialismo....


jajajajajaja Dios los libre chamo.Mira que me toco sacar resistencias de equipos viejos y enderesar sus patitas cuando estaba en Cuba.Cuando llegue aca y mire una tienda de electronica estaba como niño mirando juguetes.

Un Saludo.

#15 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 26 diciembre 2008 - 06:24

Bueno retomando el tutorial.
    Aqui tenemos un programita que nos ayudara un poco a entender y manipular este componente TComPort:

Imagen Enviada

Imagen Enviada

Aqui esta el codigo:


delphi
  1. uses
  2.   Windows, Messages, SysUtils, Variants, Classes, Graphics,
  3. Controls, Forms, Dialogs, StdCtrls, CPort, Buttons;
  4.  
  5. type
  6.   TForm1 = class(TForm)
  7.     ComPort: TComPort;
  8.     Memo1: TMemo;
  9.     Edit1: TEdit;
  10.     Enviar: TBitBtn;
  11.     Salir: TBitBtn;
  12.     Puerto: TBitBtn;
  13.     Limpiar: TBitBtn;
  14.     Boton1: TBitBtn;
  15.     Boton2: TBitBtn;
  16.     Boton3: TBitBtn;
  17.     Label1: TLabel;
  18.     Label2: TLabel;
  19.     Boton4: TBitBtn;
  20.  
  21.     procedure ComPortRxChar(Sender: TObject; Count: Integer);
  22.     procedure EnviarClick(Sender: TObject);
  23.     procedure SalirClick(Sender: TObject);
  24.     procedure PuertoClick(Sender: TObject);
  25.     procedure LimpiarClick(Sender: TObject);
  26.     procedure Boton1Click(Sender: TObject);
  27.     procedure Boton2Click(Sender: TObject);
  28.     procedure Boton3Click(Sender: TObject);
  29.     procedure Boton4Click(Sender: TObject);
  30.     procedure FormCreate(Sender: TObject);
  31.    
  32.   private
  33.     { Private declarations }
  34.   public
  35.     { Public declarations }
  36.   end;
  37.  
  38. var
  39.   Form1: TForm1;
  40.  
  41. implementation
  42.  
  43. {$R *.dfm}
  44. //Esto te permite que en el memo puedas ver hex y ascii.
  45. procedure AddHexString(S : String; Lines : TStrings );
  46. var AddS, HexS, CopyS : String;
  47.     i : Integer;
  48. const SLen = 8;
  49. begin
  50.   while Length(S) > 0 do
  51.     begin
  52.       AddS := Copy(S,1,SLen);
  53.       HexS := '';
  54.       Delete(S,1,SLen);
  55.       for i := 1 to SLen do
  56.         begin
  57.           CopyS := Copy(AddS,i,1);
  58.           if CopyS <> '' then
  59.             HexS := HexS + ' ' + Format('%2.2x',[Byte(CopyS[1])]) //
  60.           else
  61.             HexS := HexS + '  ';
  62.         end;
  63.       while Length(AddS) < SLen do
  64.         AddS := AddS + ' ';
  65.       for i := 1 to SLen do
  66.         case AddS[i] of
  67.           #0..#31 : AddS[i] := '.';
  68.           #127    : AddS[i] := '.';
  69.         end;
  70.       Lines.Add(HexS+' : '+AddS);
  71.     end;
  72.     end;
  73. // este es el procedure para recibir por el serial port
  74. //(recuerda en el comport Events poner el procedure  OnRxChar
  75. procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
  76. var
  77.   Str: String;
  78. begin
  79.   ComPort.ReadStr(Str, Count);
  80.   AddHexString(Str,Memo1.Lines);
  81. end;
  82.  
  83. procedure TForm1.EnviarClick(Sender: TObject);
  84. var
  85.   Valor: integer;
  86.   Str: string;
  87. begin
  88. Valor := StrToIntDef(Edit1.Text,-1) ;
  89.   if Valor in [0..255] then
  90.   begin
  91.     Str := Chr(Valor);
  92.     ComPort.WriteStr(Str);
  93. end
  94.     else
  95.     ShowMessage('El valor ingresado no esta en el rango permitido...');
  96. end;
  97. // salir de la aplicacion
  98. procedure TForm1.SalirClick(Sender: TObject);
  99. begin
  100. Close;
  101. end;
  102. //aqui puedes cambiar los parametros del comport
  103. procedure TForm1.PuertoClick(Sender: TObject);
  104. begin
  105. ComPort.ShowSetupDialog;
  106. end;
  107. // limpiar el Memo
  108. procedure TForm1.LimpiarClick(Sender: TObject);
  109. begin
  110. Memo1.text := '';
  111. end;
  112.  
  113. // aqui esta el primer boton
  114. procedure TForm1.Boton1Click(Sender: TObject);
  115. begin
  116. if not ComPort.Connected then
  117. ComPort.Open;
  118. Comport.WriteStr(#01);//cambia este byte a enviar si quieres
  119. end;
  120.  
  121. // aqui esta el segundo boton
  122. procedure TForm1.Boton2Click(Sender: TObject);
  123. begin
  124. if not ComPort.Connected then
  125. ComPort.Open;
  126. Comport.WriteStr(#02); //puedes cambiar este byte si quieres
  127. end;
  128.  
  129. // aqui esta el tercer boton
  130. procedure TForm1.Boton3Click(Sender: TObject);
  131. begin
  132. if not ComPort.Connected then
  133. ComPort.Open;
  134. Comport.WriteStr(#03); // tambien puedes cambiar su valor
  135. end;
  136.  
  137. // aqui esta el cuarto boton
  138. procedure TForm1.Boton4Click(Sender: TObject);
  139. begin
  140. if not ComPort.Connected then
  141. ComPort.Open;
  142. Comport.WriteStr(#04); // tambien puedes cambiar su valor
  143. end;
  144.  
  145. procedure TForm1.FormCreate(Sender: TObject);
  146. begin
  147. Memo1.text := '';
  148. end;
  149.  
  150. end.



Aqui dejo el codigo fuente:


Continuara.....

Un Saludo.

Archivos adjuntos

  • Archivo adjunto  144_.zip   263,15KB   15 descargas


#16 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 27 diciembre 2008 - 08:31

Hola Amigos.
Continuando, tenemos ya un programita para hacer pruebas y poder practicar.Una forma de poder probar este programita y ver los valores que estamos transmitiendo.Es poder recivirlos de retorno al puerto serie.Esto es facil si unimos los pines 2 y 3 del puerto serie.

Podemos usar un alligator clips como se muestra en esta imagen:
Imagen Enviada
aqui estamos uniendo los pines 2 y 3 con el alligator.


Tambien podemos usar un DB9 hembra y soldarle unidos los pines 2 y 3 como se muestra en esta otra imagen:
Imagen Enviada
Esta es la forma que yo personalmente uso.Siempre tengo al alcance en mi banco de trabajo un db9 hembra con los pines 2 y 3 soldados.

La idea es unir el pin #2 del puerto serie que es por donde se recive la data, con el pin #3 que es por donde se transmite la data.(creamos un retorno de la misma.) ;)

Un Saludo.

Continuara.....


#17 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 diciembre 2008 - 08:52

yo para ver que se transmite tengo un cable cruzado asi puedo unir dos pc por el puerto serie.
  • 0

#18 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 27 diciembre 2008 - 08:58

yo para ver que se transmite tengo un cable cruzado asi puedo unir dos pc por el puerto serie.

Si eso es otra forma de poder monitorial el puerto.Pero ya estas usando dos PC, mientras que de esta forma lo puedes hacer con la misma PC y estar reciviendo en el mismo programita. ;)

Este programita es un tutorial para el componente TComPort y pues en el se encuentra procedimientos para enviar y para recivir.Lo mas correcto es poder recivir en el mismo lo que se esta enviando. :p

Un Saludo.

PD:¿Capiche?

#19 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 diciembre 2008 - 09:00

es que se me olvido decir que por lo general tengo que esperar una respuesta especifica a un comando enviando, por eso tengo que hacer el transmisor y el escucha
  • 0

#20 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 27 diciembre 2008 - 09:06

es que se me olvido decir que por lo general tengo que esperar una respuesta especifica a un comando enviando, por eso tengo que hacer el transmisor y el escucha

Ok  ya entiendo, tienes que simular un protocolo de comunicacion.Eso tiene remedio y pues me gustaria poder entre los dos hacer un buen programita con esas nececidades y pues si estas usando mas que los pines 2 y 3 (si ocupas otra de las señales pues tambien creamos ese conector) ;) Asi tendras en una sola PC la forma de probar.

Un Saludo.




IP.Board spam blocked by CleanTalk.