Beruflich Dokumente
Kultur Dokumente
6
(MicroCode Studio - Virtual Serial Ports Driver XP4 y Virtual Serial Ports Emulator)
INTRODUCCION
En esta oportunidad presento lneas abajo la programacin en MATLAB el algoritmo de comunicacin directa con PROTEUS. Esta
comunicacin se realiza mediante el protocolo de comunicacin RS232 utilizando puertos creados virtualmente con alguno de estos
dos programas:
- Virtual Serial Ports Driver XP4 (Para sistemas Operativos de 32 bit)
- Virtual Serial Ports Emulator (Para sistemas Operativos de 64 bit).
MATLAB utiliza el puerto virtual 2 mientras que PROTEUS utiliza el puerto virtual 1. En el circuito electrnico implementado con
PROTEUS se debe tener en cuenta que deber utilizar el programa MicroCode Studio para confeccionar las lneas del algoritmo que
realizara el trabajo de que el microcontrolador PIC16F877A pueda recibir y enviar informacin con el protocolo RS232 segn un
cdigo de recepcin establecido de cuatro caracteres (AA00).
Solo deber copiar y pegar todas las lneas de programacin en el respectivo archivo de MATLAB y ejecutar la simulacin, este
proyecto comparado con el publicado con el ttulo ALGORITMO DE ENLACE VISUAL BASIC 6.0 CON PROTEUS 7.6 es ms fcil
de implementar puesto que si ya tiene ejecutado el proyecto en PROTEUS solo debe ejecutar MATLAB y este realizara
automticamente la comunicacin.
La idea es demostrar que mientras se tenga un hardware ya implementado (El microcontralador PIC16F877A ya programado)
cualquier programa que se implemente para su operacin y funcionamiento ser posible.
En el proyecto ALGORITMO DE ENLACE VISUAL BASIC 6.0 CON PROTEUS 7.6 se debi tener mucho cuidado en dar los valores
correspondientes de cada herramienta en la Ventana de Propiedades como por ejemplo cambiar los nombres de cada Command de
acuerdo las lneas programadas, el intervalo del Timer1, el intervalo del Timer2 y el intervalo del Timer 3 que debieron ser colocados
adecuadamente.
Para esta publicacin se anexan las respectivas figuras demostrando su aplicacin paso a paso.
Igualmente las lneas del algoritmo correspondiente al programa MicroCode Studio se publican en este trabajo, solo deber copiarlas
y pegarlas en el programa respectivo para ejecutar su compilacin tal como se explica en cada una de las figuras adjuntadas.
El tiempo que se pueda dedicar a este proyecto es muy importante, debe tener la idea de cmo hacerlo y espero que sirva para
ayudar a otros investigadores.
Posteriormente seguir publicando lneas de programacin en MATLAB de diversas aplicaciones como Sistema Gravitacional,
Interaccin de partculas, Cinemtica Directa y Cinemtica Inversa para robtica, y con mucha ms dedicacin la Comunicacin
RS232 con microcontroladores, etc.
En la siguiente publicacin estar comentando acerca de un programa desarrollado en SIMULINK de MATLAB sobre temas de
Control, toda una novedad, estar atentos.
INDICE
1.- Creacin de los puertos virtuales COM1 y COM2 con Virtual Serial Ports Driver XP4 (Para sistemas Operativos de 32 bit)
2.- Creacin de los puertos virtuales COM1 y COM2 con Virtual Serial Ports Emulator (Para sistemas Operativos de 64 bit)
3.- Implementacin del circuito electrnico con el puerto COM2 en PROTEUS.
4.- Presentacin del programa implementado en MATLAB con el puerto COM1.
5.- Inicio de la simulacin entre MATLAB (Puerto COM1) y PROTEUS (Puerto COM2).
6.- Presentacin del algoritmo implementado en MicroCode Studio para el mcrocontrolador PIC16F877A.
7.- Presentacin de los archivos implementados en MATLAB para la comunicacin RS232.
7.1.- Archivo SERIAL1.m
7.2.- Archivo SERIAL2.m
7.3.- Archivo CONTEO_1.m
7.4.- Archivo CONTEO_2.m
7.5.- Archivo CONTEO_3.m
8.- Presentacin de las lneas de algoritmo implementado en MicroCode Studio para el mcrocontrolador PIC16F877A.
9.- Presentacin archivo SERIAL_COM1 implementado en la Interfaz Grfica de Usuario (GUI) MATLAB para comunicacin RS232.
9.1.- Archivo SERIAL:COM1.m
1.- Creacin de los puertos virtuales COM1 y COM2 con Virtual Serial Ports Driver XP4 (Para sistemas Operativos de 32 bit)
Se muestra el programa VIRTUAL SERIAL PORT DRIVER XP4 que servir para la creacin de puertos virtuales RS232
Se apertura el programa VIRTUAL SERIAL PORT DRIVER XP4 y utilizamos el men para la creacin de puertos virtuales RS232
Una vez que se apertura el programa VIRTUAL SERIAL PORT DRIVER XP4 se crea los puertos virtuales RS232 (1 con 2)
Una vez establecido los puertos virtuales de comunicacin RS232 con el programa VIRTUAL SERIAL PORT DRIVER XP4 lo cerramos
2.- Creacin de los puertos virtuales COM1 y COM2 con Virtual Serial Ports Emulator (Para sistemas Operativos de 64 bit)
Se muestra el programa Virtual Serial Ports Emulator (VSPE) que servir para la creacin de puertos virtuales RS232
Se apertura el programa Virtual Serial Ports Emulator (VSPE) y utilizamos el men para la creacin de puertos virtuales RS232
Una vez que se apertura el programa Virtual Serial Ports Emulator (VSPE) se crea los puertos virtuales RS232 COM1 y COM2 (Paso 1)
Una vez que se apertura el programa Virtual Serial Ports Emulator (VSPE) se crea los puertos virtuales RS232 COM1 y COM2 (Paso 2)
Una vez que se apertura el programa Virtual Serial Ports Emulator (VSPE) se crea los puertos virtuales RS232 COM1 y COM2 (Paso 3)
Una vez que se apertura el programa Virtual Serial Ports Emulator (VSPE) se crea los puertos virtuales RS232 COM1 y COM2 (Paso 4)
Una vez que se apertura el programa Virtual Serial Ports Emulator (VSPE) se crea los puertos virtuales RS232 COM1 y COM2 (Paso 5)
Una vez establecido los puertos virtuales de comunicacin RS232 con el Virtual Serial Ports Emulator (VSPE) lo minimizamos
Aqu se muestra el circuito electrnico confeccionado en el programa PROTEUS 7.6, considerar el diseo en hardware tal como se
encuentra el circuito mostrado.
Aqu podemos visualizar la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS. Note que el
contador display 7 segmentos se encuentra en CERO y adems las ventanas de ingreso (derecha) y salida (izquierda) de informacin
en el protocolo RS232 se encuentran vacas.
Aqu podemos visualizar la ventana de MATLAB y en ella la del Command Window con la que deber seguir los pasos que se soliciten.
Visualizamos en MATLAB la ventana Editor en donde figuran las lneas del algoritmo desarrollado para la comunicacin RS232. Las
lneas en detalle figuran lneas abajo y se encuentran comentadas
5.- Inicio de la simulacin entre MATLAB (Puerto COM1) y PROTEUS (Puerto COM2).
Aqu podemos visualizar tanto la ventana Editor de MATLAB en el instante de iniciar la simulacin, en este caso no tengo mi carpeta
reconocida por MATLAB as que se inicie la comunicacin RS232 se debe ejecutar Add to Path.
Aqu podemos visualizar la ventana del Command Window que solicita ejecutar ENTER para que PROTEUS reciba la informacin
desde MATLAB.
Visualizamos solo la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso
de recibir la primera informacin numrica de confirmacin de inicio de la comunicacin desde MATLAB. Note que el contador display
7 segmentos se encuentra en ONCE y adems la ventana de ingreso (derecha) se encuentra codificado con AA000011.
Ahora visualizamos la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso
de recibir la segunda informacin numrica desde MATLAB.
Aqu podemos ahora visualizar la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS en
pleno proceso de recibir la tercera informacin numrica desde MATLAB. Note que el contador display 7 segmentos se encuentra en
DOS MIL CIENTO DOCE y adems las ventanas de ingreso (derecha) se encuentra codificado con AA002112 y salida (izquierda) de
informacin en el protocolo RS232 se encuentran codificado con $$2112.
Aqu podemos ahora visualizar la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS en
pleno proceso de recibir la ltima informacin numrica desde MATLAB de comprobacin de trmino de la comunicacin.
Aqu podemos ahora visualizar la ventana con el circuito electrnico del microcontrolador PIC16F877A del programa PROTEUS en
pleno proceso de un conteo automtico desde MATLAB.
Finalmente podemos visualizar la ventana del Command Window que informa Fin comunicacin RS232 con PROTEUS reciba la
informacin desde MATLAB.
6.- Presentacin del algoritmo implementado en MicroCode Studio para el mcrocontrolador PIC16F877A.
Se muestra el programa MicroCode Studio que servir para la creacin del algoritmo que deber ser grabado en el microcontrolador
PIC16F877A que se implement en PROTEUS..
Con la apertura el programa MicroCode Studio se puede visualizar las lneas del algoritmo implementado para ser grabado en el
microcontrolador PIC16F877A. Estas lneas de programacin tambin se encuentran publicadas en este documento.
Aqu se muestra el programa MicroCode Studio realizando la seleccin del microcontrolador a utilizar (PIC16F877A), una vez realizada
esta seleccin se deber de compilar las lneas del algoritmo pues se debe recordar que el microcontrolador solo entiende UNOS y
CEROS, no comprende las lneas escritas.
En este paso se muestra la compilacin de las lneas del algoritmo desarrollado, este proceso creara un archico del tipo ASM que se
muestra en la siguiente figura.
Aqu apreciamos que una vez que compilamos el archivo DME tipo ASM del programa MicroCode Studio se creara el archivo DME tipo
HEX que es el que deber ser grabado en el microcontrolador PIC16F877A
Aqu apreciamos el primer paso de la forma virtual de grabar el archivo DME del tipo HEX dentro del microcontrolador PIC16F877A
Aqu apreciamos el segundo paso de la forma virtual de grabar el archivo DME del tipo HEX dentro del microcontrolador PIC16F877A,
se selecciona el archivo y se da click en Abrir
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
SerPIC = serial('COM2');
set(SerPIC,'BaudRate',4800);
set(SerPIC,'DataBits',8);
serPIC.Terminator='CR';
set(SerPIC,'Parity','none');
%
%
%
%
%
Se selecciona el COM2
Define velocidad
Define numero de bits
Comunicacion constante sin caracter de terminacion
Sin paridad
set(SerPIC,'StopBits',1);
set(SerPIC,'FlowControl','none');
fopen(SerPIC);
fclose(SerPIC);
delete(SerPIC)
clear SerPIC
clear;
clc;
close all;
%
%
%
%
%
%
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;
close all;
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
SerPIC = serial('COM2');
set(SerPIC,'BaudRate',4800);
set(SerPIC,'DataBits',8);
serPIC.Terminator='CR';
set(SerPIC,'Parity','none');
set(SerPIC,'StopBits',1);
set(SerPIC,'FlowControl','none');
fopen(SerPIC);
%
%
%
%
%
%
%
%
Se selecciona el COM2
Define velocidad
Define numero de bits
Comunicacion constante sin caracter de terminacion
Sin paridad
Numero de bits de stop 1
Sin control de hardware, o software
Abre el puerto RS232
fclose(SerPIC);
delete(SerPIC)
clear SerPIC
clear;
clc;
close all;
%
%
%
%
%
%
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
SerPIC = serial('COM2');
% Se selecciona el COM2
set(SerPIC,'BaudRate',4800);
% Define velocidad
set(SerPIC,'DataBits',8);
% Define numero de bits
serPIC.Terminator='CR';
% Comunicacion constante sin caracter de terminacion
set(SerPIC,'Parity','none');
% Sin paridad
set(SerPIC,'StopBits',1);
% Numero de bits de stop 1
set(SerPIC,'FlowControl','none');
% Sin control de hardware, o software
%Send (RTS) and Clear to Send (CTS) pins to control data flow.
fopen(SerPIC);
% Abre el puerto RS232
fprintf('\n Presiona Enter para iniciar la transmision RS232\n')
pause
% La pausa se levantara al presionar ENTER
fprintf(SerPIC,'AA000003')
pause(0.1)
fprintf(SerPIC,'AA000004')
pause(0.1)
fprintf(SerPIC,'AA000005')
pause(0.1)
fprintf(SerPIC,'AA000006')
pause(0.1)
fprintf(SerPIC,'AA000007')
pause(0.1)
fprintf(SerPIC,'AA000008')
pause(0.1)
fprintf(SerPIC,'AA000009')
pause(0.1)
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
la
de
la
de
la
de
la
de
la
de
la
de
la
de
fprintf(SerPIC,'AA000025')
pause(0.1)
fprintf(SerPIC,'AA000026')
pause(0.1)
fprintf(SerPIC,'AA000027')
pause(0.1)
fprintf(SerPIC,'AA000028')
pause(0.1)
fprintf(SerPIC,'AA000029')
pause(0.1)
fprintf(SerPIC,'AA000030')
pause(0.1)
fprintf(SerPIC,'AA000031')
pause(0.1)
fprintf(SerPIC,'AA000032')
pause(0.1)
fprintf(SerPIC,'AA000033')
pause(0.1)
fprintf(SerPIC,'AA000034')
pause(0.1)
fprintf(SerPIC,'AA000035')
pause(0.1)
fprintf(SerPIC,'AA000036')
pause(0.1)
fprintf(SerPIC,'AA000037')
pause(0.1)
fprintf(SerPIC,'AA000038')
pause(0.1)
fprintf(SerPIC,'AA000039')
pause(0.1)
fprintf(SerPIC,'AA000040')
pause(0.1)
fprintf(SerPIC,'AA000041')
pause(0.1)
fprintf(SerPIC,'AA000042')
pause(0.1)
fprintf(SerPIC,'AA000043')
pause(0.1)
fprintf(SerPIC,'AA000044')
pause(0.1)
fprintf(SerPIC,'AA000045')
pause(0.1)
fprintf(SerPIC,'AA000046')
pause(0.1)
fprintf(SerPIC,'AA000047')
pause(0.1)
fprintf(SerPIC,'AA000048')
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
pause(0.1)
fprintf(SerPIC,'AA000049')
pause(0.1)
fprintf(SerPIC,'AA000050')
pause(0.1)
fprintf(SerPIC,'AA000051')
pause(0.1)
fprintf(SerPIC,'AA000052')
pause(0.1)
fprintf(SerPIC,'AA000053')
pause(0.1)
fprintf(SerPIC,'AA000054')
pause(0.1)
fprintf(SerPIC,'AA000055')
pause(0.1)
fprintf(SerPIC,'AA000056')
pause(0.1)
fprintf(SerPIC,'AA000057')
pause(0.1)
fprintf(SerPIC,'AA000058')
pause(0.1)
fprintf(SerPIC,'AA000059')
pause(0.1)
fprintf(SerPIC,'AA000060')
pause(0.1)
fprintf(SerPIC,'AA000061')
pause(0.1)
fprintf(SerPIC,'AA000062')
pause(0.1)
fprintf(SerPIC,'AA000063')
pause(0.1)
fprintf(SerPIC,'AA000064')
pause(0.1)
fprintf(SerPIC,'AA000065')
pause(0.1)
fprintf(SerPIC,'AA000066')
pause(0.1)
fprintf(SerPIC,'AA000067')
pause(0.1)
fprintf(SerPIC,'AA000068')
pause(0.1)
fprintf(SerPIC,'AA000069')
pause(0.1)
fprintf(SerPIC,'AA000070')
pause(0.1)
fprintf(SerPIC,'AA000071')
pause(0.1)
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
fprintf(SerPIC,'AA000072')
pause(0.1)
fprintf(SerPIC,'AA000073')
pause(0.1)
fprintf(SerPIC,'AA000074')
pause(0.1)
fprintf(SerPIC,'AA000075')
pause(0.1)
fprintf(SerPIC,'AA000076')
pause(0.1)
fprintf(SerPIC,'AA000077')
pause(0.1)
fprintf(SerPIC,'AA000078')
pause(0.1)
fprintf(SerPIC,'AA000079')
pause(0.1)
fprintf(SerPIC,'AA000080')
pause(0.1)
fprintf(SerPIC,'AA000081')
pause(0.1)
fprintf(SerPIC,'AA000082')
pause(0.1)
fprintf(SerPIC,'AA000083')
pause(0.1)
fprintf(SerPIC,'AA000084')
pause(0.1)
fprintf(SerPIC,'AA000085')
pause(0.1)
fprintf(SerPIC,'AA000086')
pause(0.1)
fprintf(SerPIC,'AA000087')
pause(0.1)
fprintf(SerPIC,'AA000088')
pause(0.1)
fprintf(SerPIC,'AA000089')
pause(0.1)
fprintf(SerPIC,'AA000090')
pause(0.1)
fprintf(SerPIC,'AA000091')
pause(0.1)
fprintf(SerPIC,'AA000092')
pause(0.1)
fprintf(SerPIC,'AA000093')
pause(0.1)
fprintf(SerPIC,'AA000094')
pause(0.1)
fprintf(SerPIC,'AA000095')
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
pause(0.1)
fprintf(SerPIC,'AA000096')
pause(0.1)
fprintf(SerPIC,'AA000097')
pause(0.1)
fprintf(SerPIC,'AA000098')
pause(0.1)
fprintf(SerPIC,'AA000099')
pause(0.1)
%
%
%
%
%
%
%
%
%
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
de
la
de
la
de
la
de
la
de
pause(0.1)
fprintf(SerPIC,'AA000118')
pause(0.1)
fprintf(SerPIC,'AA000119')
pause(0.1)
fprintf(SerPIC,'AA000120')
pause(0.1)
fprintf(SerPIC,'AA000121')
pause(0.1)
fprintf(SerPIC,'AA000122')
pause(0.1)
fprintf(SerPIC,'AA000123')
pause(0.1)
fprintf(SerPIC,'AA000124')
pause(0.1)
fprintf(SerPIC,'AA000125')
pause(0.1)
fprintf(SerPIC,'AA000126')
pause(0.1)
fprintf(SerPIC,'AA000127')
pause(0.1)
fprintf(SerPIC,'AA000128')
pause(0.1)
fprintf(SerPIC,'AA000129')
pause(0.1)
fprintf(SerPIC,'AA000130')
pause(0.1)
fprintf(SerPIC,'AA000131')
pause(0.1)
fprintf(SerPIC,'AA000132')
pause(0.1)
fprintf(SerPIC,'AA000133')
pause(0.1)
fprintf(SerPIC,'AA000134')
pause(0.1)
fprintf(SerPIC,'AA000135')
pause(0.1)
fprintf(SerPIC,'AA000136')
pause(0.1)
fprintf(SerPIC,'AA000137')
pause(0.1)
fprintf(SerPIC,'AA000138')
pause(0.1)
fprintf(SerPIC,'AA000139')
pause(0.1)
fprintf(SerPIC,'AA000140')
pause(0.1)
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
fprintf(SerPIC,'AA000150')
pause(0.1)
fprintf(SerPIC,'AA000151')
pause(0.1)
fprintf(SerPIC,'AA000152')
pause(0.1)
fprintf(SerPIC,'AA000153')
pause(0.1)
fprintf(SerPIC,'AA000154')
pause(0.1)
fprintf(SerPIC,'AA000155')
pause(0.1)
fprintf(SerPIC,'AA000156')
pause(0.1)
fprintf(SerPIC,'AA000157')
pause(0.1)
fprintf(SerPIC,'AA000158')
pause(0.1)
fprintf(SerPIC,'AA000159')
pause(0.1)
fprintf(SerPIC,'AA000160')
pause(0.1)
fprintf(SerPIC,'AA000161')
pause(0.1)
fprintf(SerPIC,'AA000162')
pause(0.1)
fprintf(SerPIC,'AA000163')
pause(0.1)
fprintf(SerPIC,'AA000164')
pause(0.1)
fprintf(SerPIC,'AA000165')
pause(0.1)
fprintf(SerPIC,'AA000166')
pause(0.1)
fprintf(SerPIC,'AA000167')
pause(0.1)
fprintf(SerPIC,'AA000168')
pause(0.1)
fprintf(SerPIC,'AA000169')
pause(0.1)
fprintf(SerPIC,'AA000170')
pause(0.1)
fprintf(SerPIC,'AA000171')
pause(0.1)
fprintf(SerPIC,'AA000172')
pause(0.1)
fprintf(SerPIC,'AA000173')
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
pause(0.1)
fprintf(SerPIC,'AA000174')
pause(0.1)
fprintf(SerPIC,'AA000175')
pause(0.1)
fprintf(SerPIC,'AA000176')
pause(0.1)
fprintf(SerPIC,'AA000177')
pause(0.1)
fprintf(SerPIC,'AA000178')
pause(0.1)
fprintf(SerPIC,'AA000179')
pause(0.1)
fprintf(SerPIC,'AA000180')
pause(0.1)
fprintf(SerPIC,'AA000181')
pause(0.1)
fprintf(SerPIC,'AA000182')
pause(0.1)
fprintf(SerPIC,'AA000183')
pause(0.1)
fprintf(SerPIC,'AA000184')
pause(0.1)
fprintf(SerPIC,'AA000185')
pause(0.1)
fprintf(SerPIC,'AA000186')
pause(0.1)
fprintf(SerPIC,'AA000187')
pause(0.1)
fprintf(SerPIC,'AA000188')
pause(0.1)
fprintf(SerPIC,'AA000189')
pause(0.1)
fprintf(SerPIC,'AA000190')
pause(0.1)
fprintf(SerPIC,'AA000191')
pause(0.1)
fprintf(SerPIC,'AA000192')
pause(0.1)
fprintf(SerPIC,'AA000193')
pause(0.1)
fprintf(SerPIC,'AA000194')
pause(0.1)
fprintf(SerPIC,'AA000195')
pause(0.1)
fprintf(SerPIC,'AA000196')
pause(0.1)
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
la
de
fprintf(SerPIC,'AA000197')
pause(0.1)
fprintf(SerPIC,'AA000198')
pause(0.1)
fprintf(SerPIC,'AA000199')
pause(0.1)
fprintf(SerPIC,'AA000200')
pause(0.1)
%
%
%
%
%
%
%
%
Envia
Pausa
Envia
Pausa
Envia
Pausa
Envia
Pausa
la
de
la
de
la
de
la
de
fclose(SerPIC);
delete(SerPIC)
clear SerPIC
clear;
clc;
close all;
%
%
%
%
%
%
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
SerPIC = serial('COM2');
set(SerPIC,'BaudRate',4800);
set(SerPIC,'DataBits',8);
serPIC.Terminator='CR';
set(SerPIC,'Parity','none');
set(SerPIC,'StopBits',1);
set(SerPIC,'FlowControl','none');
%
%
%
%
%
%
%
Se selecciona el COM2
Define velocidad
Define numero de bits
Comunicacion constante sin caracter de terminacion
Sin paridad
Numero de bits de stop 1
Sin control de hardware, o software
fopen(SerPIC);
fclose(SerPIC);
delete(SerPIC)
clear SerPIC
clear;
clc;
close all;
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
SerPIC = serial('COM2');
% Se selecciona el COM2
set(SerPIC,'BaudRate',4800);
% Define velocidad
set(SerPIC,'DataBits',8);
% Define numero de bits
serPIC.Terminator='CR';
% Comunicacion constante sin caracter de terminacion
set(SerPIC,'Parity','none');
% Sin paridad
set(SerPIC,'StopBits',1);
% Numero de bits de stop 1
set(SerPIC,'FlowControl','none');
% Sin control de hardware, o software
%Send (RTS) and Clear to Send (CTS) pins to control data flow.
fopen(SerPIC);
% Abre el puerto RS232
fprintf('\n Presiona Enter para iniciar la transmision RS232\n')
pause
% La pausa se levantara al presionar ENTER
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
fclose(SerPIC);
delete(SerPIC)
clear SerPIC
clear;
clc;
close all;
%
%
%
%
%
%
end
8.- Presentacin de las lneas de algoritmo implementado en MicroCode Studio para el mcrocontrolador PIC16F877A.
En estas lneas el lector podr ejecutarlas directamente desde el mencionado programa y luego grabarlas en el microcontrolador
acordado
'*******************************************************************************
'* Name : DME.BAS
'* Author : ING ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
'* Notice : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS]
'*
: All Rights Reserved
'* Date : 05/09/2013
'* Version : 1.0
'* Notes : Conteo 0 a 9999 con el PIC16F877A y cuatro decoder BCD a siete
'*
segmentos 74LS47 (Logica negativa)
'*
El codigo convenido esta dado por:
'*
AA00 abcd = Reset y AA01 abcd = Indicacion numerica
'*******************************************************************************
define osc 4
TRISB = 0
PORTB = 0
TRISC.6 = 0
TRISC.7 = %1
TRISD = 0
PORTD = 0
*
*
*
*
*
*
*
*
*
*
INICIO:
'Recepcion serial a 9600 Baudios (84)
'Recepcion serial a 4800 Baudios (188)
'Recordar: (y1=A); (y2=A); (y3=0); (y4=0 o y4=1) Son parametros rigidos de la trama
'Mientras y5, y6, y7, y8 representan caracteres numericos de la trama
SERIN2 PORTC.7,188,10,NO_DATO,[y1,y2,y3,y4,y5,y6,y7,y8,B1]
'Recordar Codigo ASCII en hexadecimal: $41=A; $30=0; $31=1
IF y1=$41 AND y2=$41 AND y3=$30 AND y4=$30 THEN RESET
IF y1=$41 AND y2=$41 AND y3=$30 AND y4=$31 THEN VARIABLES
GOTO INICIO
'Etiqueta para resetear el sistema a CERO
RESET:
'Trama: AA00
'Trama: AA01
'DATO4=0
'DATO3=0
'DATO2=0
'DATO1=0
'GOTO CALCULO
goto VARIABLES
'Etiqueta para asignar valores de la informacion numerica
VARIABLES:
if y5=$30 then DATO4=0
if y5=$31 then DATO4=1
if y5=$32 then DATO4=2
if y5=$33 then DATO4=3
if y5=$34 then DATO4=4
if y5=$35 then DATO4=5
if y5=$36 then DATO4=6
if y5=$37 then DATO4=7
if y5=$38 then DATO4=8
if y5=$39 then DATO4=9
if y6=$30 then DATO3=0
if y6=$31 then DATO3=1
if y6=$32 then DATO3=2
if y6=$33 then DATO3=3
if y6=$34 then DATO3=4
if y6=$35 then DATO3=5
if y6=$36 then DATO3=6
if y6=$37 then DATO3=7
if y6=$38 then DATO3=8
if y6=$39 then DATO3=9
if y7=$30 then DATO2=0
if y7=$31 then DATO2=1
if y7=$32 then DATO2=2
if y7=$33 then DATO2=3
if y7=$34 then DATO2=4
if y7=$35 then DATO2=5
if y7=$36 then DATO2=6
if y7=$37 then DATO2=7
if y7=$38 then DATO2=8
if y7=$39 then DATO2=9
9.- Presentacin archivo SERIAL_COM1 implementado en la Interfaz Grfica de Usuario (GUI) MATLAB para comunicacin RS232.
Se escribe el comando guide en el Command Window a fin de iniciar la creacin de la ventana de interface de usuario
Esta es la ventana en donde se creara la GUI nueva o caso contrario se abrir una ya existente
% eventdata
% handles
% varargin
% --- Outputs from this function are returned to the command line.
function varargout = Serial_COM1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
set(hObject,'BackgroundColor','white');
end
Espero que esta aplicacin sea de mucha utilidad y de seguro debera tener mejoras, las que posteriormente estare publicando.
Gracias.
Ingeniero Electronico Monteza Zevallos Fidel Tomas
V.J.M.J. // A.M.M.J.