Professional Documents
Culture Documents
http://www.instructables.com/id/MATLAB-to-PIC-serial-interface/
Author:leevonk
www.leevonk.com
author's website
http://www.instructables.com/id/MATLAB-to-PIC-serial-interface/
%run the program, so you have to restart MATLAB %NOTE 2: %the number must always be sent as a three digit number because for some reason I couldn't get my PIC to receive %the number when it wasn't of a specified length (see PIC code: DEC3) %========================================================================== %========================================================================== '########################################################################## '#############################--PIC16F877 CODE--########################### '########################################################################## 'This code assumes you have the PIC16F877 set up with one LED on each line of Port D (8 lines). 'This way the PIC will light up a different pattern of LEDs according to the number send via serial from MATLAB. 'Each LED should be in series with a 470 ohm resistor (see pic below) '_ '' ' '------LED---\ 470 ohm 'PIC' >------/\/\/\------GND ' '------LED---/ '---' ' 'This code also assumes that you have the TX line of the DB-9 serial port connected to pin 0 of port C (PORTC.0) Include "bs2defs.bas" 'has some useful stuff in it 'DEFINE OSC 4 'Oscillator speed in MHz, this isn't needed I guess SerI var PORTC.0 'make an easy name to refer to the serial pin TRISD = %00000000 'set PortD as an output port PortD = %00000000 'set LED port to all zeros GetGhost: Serin2 SerI, 84, (DEC3 B0) 'get a three digit number from serial pin and put it into B0 variabl PortD = B0 'set the lines of PortD according to this three digit number GOTO GetGhost '=========================================================================== '===========================================================================
File Downloads
Lee_PIC_To_MATLAB_serial_communication.txt (3 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Lee_PIC_To_MATLAB_serial_communication.txt']
http://www.instructables.com/id/MATLAB-to-PIC-serial-interface/
Related Instructables
Comments
15 comments Add Comment
annisajamali says:
Feb 23, 2011. 6:07 AM REPLY Hi.. My system has 6 servos and 1 dc motor. Value for servos to turn will always change according to the program i write in Matlab.So mean that i have to interface my servo motor to PIC16F877A by connecting servo controller to it right? And for DC motor i have to build H-bridge and attached them on PIC as usual? How to write program on this in matlab? how to send signal to move the motor? please help!!i have been looking for this about a month...hu hu
hani_aast says:
I want the complete circuit how we connect max232 with pic with serial
crapper says:
Sep 6, 2008. 10:33 AM REPLY thanks for the instructable. but i have problem. my laptop doesnt have a serial port, only usb. how can i connect to my laptop? i dont think i can use a usbserial converter since its +5v 0. helpppp Jan 21, 2008. 12:43 AM REPLY Help me with COM in Matlab! In Matlab command window,I type: set(COM1,'BaudRate',9600,'DataBit',8,'Parity','none','StopBit',1,'Flowcontrol','none'); fopen(COM1) then error: ??? Undefined function or variable 'COM1'. Some body can help me about that! I'm very new with Matlab and conputer interface! Thanks!
duyngdang says:
morteza.jalalat says:
my dear,you must type as below for creating a serial port object : s=('COM1','BaudRate',9600,'DataBit',8,'Parity','none','StopBit',1,'Flowcontrol','none'); fopen(s) where s is your object !!
duyngdang says:
Jan 21, 2008. 7:59 PM REPLY Now I can open port with Matlab. Now I have to put an hex file to Pic16F88? Would you please share for me the the hex file to put in the Pic16F877? I have programmer kit and soft for pic but I don't have any software to program and convert to hext files After that, I have to put some led to pins of pic16F877 for this command: fprintf(SerPIC, '%s', '003'); ? Would you please send me the schematic for that? I'm a mechanic guy,so I'm trying to know about computer interface. Please help me for that! Thanks! Jan 21, 2008. 7:07 AM REPLY
leevonk says:
uhm, how bout using my code that's staring you right in the face on the next page: SerPIC = serial('COM3'); %<--change this appropriately set(SerPIC,'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'none'); !!!!!!!! note the very important SerPIC = serial('COM3'); !!!!!!!!
BlessedtoknowHim says:
Apr 3, 2008. 9:43 PM REPLY I want to continuously send a x and y coordinate from Matlab via a USB-RS232 cable to a pan-tilt servo assembly controlled by an ooPIC-R. Does the ooPIC-R convert the RS232 +-10V to TTL +-5V? Should the concept of your code work for this application? I can send one value from Matlab and get a servo to react but the system acts up when I try to send values continuously. Sometimes I get a "timed out" error in Matlab.
http://www.instructables.com/id/MATLAB-to-PIC-serial-interface/
behrouz2007 says:
Apr 2, 2008. 1:47 AM REPLY I want use 9bit USART (9th bit set) for sending command to PIC and (9th bit zero) for sending data to PIC. So i want use Parity bit of serial port as 9th bit. But when i execute herein commands in MATLAB 6: >> e=serial('COM1') >> fopen(e) >> set(e,'Parity','mark') This error occured: ??? Error using ==> serial/set Parity could not be set to the specified value. Please help me. Why i can not change parity to 'mark' and 'space'.
duyngdang says:
Jan 22, 2008. 6:11 PM REPLY Now I can open port with Matlab. Now I have to put an hex file to Pic16F88? Would you please share for me the the hex file to put in the Pic16F877? I have programmer kit and soft for pic but I don't have any software to program and convert to hext files After that, I have to put some led to pins of pic16F877 for this command: fprintf(SerPIC, '%s', '003'); ? Would you please send me the schematic for that? I'm a mechanic guy,so I'm trying to know about computer interface. Please help me for that! Thanks! Nov 23, 2006. 9:04 PM REPLY
jnk101 says:
gr8 begining chk out : http://www.dspaceinc.com/ww/en/inc/home/products/systems/controld.cfm have u come across diy / open source for this stuff really keen on this stuff
finly says:
Jun 1, 2007. 1:59 AM REPLY Hello, that's a great tutorial. Do you have any tutorial about how to display signal generated by function generator and A/D converted by PIC ? The PIC will be connected to the PC using serial. Thank you.
ppsh04 says:
Apr 20, 2007. 4:56 PM REPLY Thank you for the experience you have shared here. This post is really effective for my program. :D Hope you can contribute more. Good Luck!
ferasmetib says:
would you please add this file bs2defs.bas and in what software enviromint is the pic code : mplap ide, picbasic,....?
leevonk says:
Mar 29, 2007. 7:46 AM REPLY I used MPLAB with PICBasic set as the compiler. If you have the PICBasic compiler you'll have the bs2defs.bas file, if you don't have PICBasic the file is useless so I won't post it (I'm not sure if it's legal to post it). It's not really an important file anyway, If you delete its include from my code, all you have to change is to declare your own variable in place of B0 (B0 is a predefined variable when using bs2defs.bas).
http://www.instructables.com/id/MATLAB-to-PIC-serial-interface/