PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 10-11-2008, 02:35 PM   #1
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
giao tiếp máy tính

nhờ các cao thủ xem dùm em,giao tiếp với pic18 cổng com như sau,sai chỗ nào,sao chương trình kô chạy
#include<18f4550.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#device PIC184550*=16 ADC=10
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#include<stdlib.h>
#include<lcd_lib_4bit.c>
#byte porta = 0x80
#byte portb = 0x81
#byte portc = 0x82
#byte porte = 0x84
char buffer[64],tam[5];
int i,j,j1;
float x5,x10,x15,x20;
int x1,x2,x3,x4,x6,x7,x8,x9,x11,x12,x13,x14,x16,x17,x1 8,x19;
int c=1;
int k=0;

void getvalue()
{
gets(buffer);
c=0;
k=1;
}


void main()
{
set_tris_b(0);
set_tris_e(0);
LCD_init();
delay_us(10);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"nhan du lieu");
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar,"hien thi mang ?");
delay_ms(1000);
while (1)
{

if(c==1)
{
getvalue();
}
if(k==1)
{
LCD_putcmd(0x01);
delay_us(10);
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar,"da ta ok");
delay_ms(500);
j=0;j1=0;

for (i=1;i<64;++i)
{
if (buffer[i]!="A") //nue khac a
{
tam[j]=buffer[i];
j=j+1;
}
else
{
//tam[j]='\0';
if (j1==0) x1=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x1:%u",x1);
delay_ms(1000);
if (j1==1) x2=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x2:%u",x2);
delay_ms(1000);
if (j1==2) x3=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x3:%u",x3);
delay_ms(2000);
if (j1==3) x4=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x4:%u",x4);
delay_ms(2000);
if (j1==4) x5=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x5:%f",x5);
delay_ms(2000);
if (j1==5) x6=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x6:%u",x6);
delay_ms(2000);
if (j1==6) x7=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x7:%u",x7);
delay_ms(2000);
if (j1==7) x8=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x8:%u",x8);
delay_ms(2000);
if (j1==8) x9=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
printf(LCD_putchar,"x9:%u",x9);
delay_ms(2000);
if (j1==9) x10=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x10:%f",x10);
delay_ms(2000);
if (j1==10) x11=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x11:%u",x11);
delay_ms(2000);
if (j1==11) x12=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x12:%u",x12);
delay_ms(2000);
if (j1==12) x13=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x13:%u",x13);
delay_ms(2000);
if (j1==13) x14=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x14:%u",x14);
delay_ms(2000);
if (j1==14) x15=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x15:%f",x15);
delay_ms(2000);
if (j1==15) x16=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x16:%u",x16);
delay_ms(2000);
if (j1==16) x17=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x17:%u",x17);
delay_ms(2000);
if (j1==17) x18=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x18:%u",x18);
delay_ms(2000);
if (j1==18) x19=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x19:%u",x19);
delay_ms(2000);
if (j1==19) x20=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x20:%f",x20);
delay_ms(2000);
if (j1==20) break; //j1 xac dinh so chuoi
j1=j1+1;
j=0;
}

}

}

}
}
em đã test với mạch thật mà kô nhận được dữ liệu,...hic hic?
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-11-2008, 03:02 PM   #2
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
i2c

Trích:
Nguyên văn bởi nguyenquoctoan View Post
nhờ các cao thủ xem dùm em,giao tiếp với pic18 cổng com như sau,sai chỗ nào,sao chương trình kô chạy
#include<18f4550.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#device PIC184550*=16 ADC=10
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#include<stdlib.h>
#include<lcd_lib_4bit.c>
#byte porta = 0x80
#byte portb = 0x81
#byte portc = 0x82
#byte porte = 0x84
char buffer[64],tam[5];
int i,j,j1;
float x5,x10,x15,x20;
int x1,x2,x3,x4,x6,x7,x8,x9,x11,x12,x13,x14,x16,x17,x1 8,x19;
int c=1;
int k=0;

void getvalue()
{
gets(buffer);
c=0;
k=1;
}


void main()
{
set_tris_b(0);
set_tris_e(0);
LCD_init();
delay_us(10);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"nhan du lieu");
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar,"hien thi mang ?");
delay_ms(1000);
while (1)
{

if(c==1)
{
getvalue();
}
if(k==1)
{
LCD_putcmd(0x01);
delay_us(10);
LCD_putcmd(0xc0);
delay_us(10);
printf(LCD_putchar,"da ta ok");
delay_ms(500);
j=0;j1=0;

for (i=1;i<64;++i)
{
if (buffer[i]!="A") //nue khac a
{
tam[j]=buffer[i];
j=j+1;
}
else
{
//tam[j]='\0';
if (j1==0) x1=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x1:%u",x1);
delay_ms(1000);
if (j1==1) x2=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x2:%u",x2);
delay_ms(1000);
if (j1==2) x3=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x3:%u",x3);
delay_ms(2000);
if (j1==3) x4=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x4:%u",x4);
delay_ms(2000);
if (j1==4) x5=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x5:%f",x5);
delay_ms(2000);
if (j1==5) x6=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x6:%u",x6);
delay_ms(2000);
if (j1==6) x7=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x7:%u",x7);
delay_ms(2000);
if (j1==7) x8=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x8:%u",x8);
delay_ms(2000);
if (j1==8) x9=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
printf(LCD_putchar,"x9:%u",x9);
delay_ms(2000);
if (j1==9) x10=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x10:%f",x10);
delay_ms(2000);
if (j1==10) x11=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x11:%u",x11);
delay_ms(2000);
if (j1==11) x12=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x12:%u",x12);
delay_ms(2000);
if (j1==12) x13=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x13:%u",x13);
delay_ms(2000);
if (j1==13) x14=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x14:%u",x14);
delay_ms(2000);
if (j1==14) x15=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x15:%f",x15);
delay_ms(2000);
if (j1==15) x16=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x16:%u",x16);
delay_ms(2000);
if (j1==16) x17=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x17:%u",x17);
delay_ms(2000);
if (j1==17) x18=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x18:%u",x18);
delay_ms(2000);
if (j1==18) x19=atol(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x19:%u",x19);
delay_ms(2000);
if (j1==19) x20=atof(tam);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
delay_us(10);
printf(LCD_putchar,"x20:%f",x20);
delay_ms(2000);
if (j1==20) break; //j1 xac dinh so chuoi
j1=j1+1;
j=0;
}

}

}

}
}
em đã test với mạch thật mà kô nhận được dữ liệu,...hic hic?
chắc là bạn chưa dùng 19f4550 bao giờ phải không.

#include<18f4550.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#device PIC184550*=16 ADC=10
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#include<stdlib.h>
#include<lcd_lib_4bit.c>
#byte porta = 0x80
#byte portb = 0x81
#byte portc = 0x82
#byte porte = 0x84
xem lại phần khai báo trên nhất là #fuses NOWDT,PUT,HS,NOPROTECT
phần khai báo fuses bạn nên xem lại trong file 18f4550.h của ccs.
PIC 18f không dùng porta = value mà là output_a(value);
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-11-2008, 06:34 PM   #3
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
cảm ơn sư huynh đã chỉ giáo,đệ đã tìm ra được lỗi sai và sữa rồi chạy ok,..
thanks alot
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-11-2008, 11:41 AM   #4
ketxanh
Đệ tử 3 túi
 
ketxanh's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 53
:
Smile

Trích:
Nguyên văn bởi nguyenquoctoan View Post
cảm ơn sư huynh đã chỉ giáo,đệ đã tìm ra được lỗi sai và sữa rồi chạy ok,..
thanks alot
minh cũng đang muốn làm giao tiếp máy tính với 18f4550. bạn cỏ thể post bài của bạn lên cho mọi người tham khảo không? Đặc biệt là mình, đang rất cần tài liệu tham khảo.
__________________
Hãy cho trước khi nhận
ketxanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2008, 01:59 PM   #5
nbb3i
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 45
:
Bạn cho mình xin file lcd_lib_4bit.c được ko?
nbb3i vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-11-2008, 08:03 PM   #6
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
ok kô thành vấn đề
File Kèm Theo
File Type: rar lcd_lib_4bit.rar (946 Bytes, 93 lần tải)
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-11-2008, 04:20 PM   #7
nhok12
Nhập môn đệ tử
 
Tham gia ngày: Nov 2008
Bài gửi: 1
:
mình khônh hiểu điều các bạn nói . Thông cảm có thể giải thích cho mình hiểu
nhok12 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2008, 11:01 PM   #8
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
giao tiếp máy tính với 18f4550 cũng giống như 16f877a bạn đã làm với con này chưa,bạn có thắc mắc ji,cứ hỏi mọi người ở đây có thể giúp bạn,con code thì đơn giản lắm
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-12-2008, 09:24 AM   #9
ketxanh
Đệ tử 3 túi
 
ketxanh's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 53
:
Nói thiệt là mấy vụ giao tiếp máy tình minh không thạo mấy. Tại mình chưa làm giao tiếp máy tính bao giờ hết. Bạn thông cảm. Bạn có thể cho mình it ý tưởng về giao tiếp máy tính không. Thanks a lot!
__________________
Hãy cho trước khi nhận
ketxanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-12-2008, 03:50 PM   #10
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
giao tiếp máy tính : truyền nhận giữa máy tính và vi điều khiển chủ yếu qua 3 cổng :com,lpt,usb, bạn nên làm cổng com trước vì loại này đơn giản
- trước tiên bạn cần có phần cứng: mạch vi điều khiển pic và phần giao tiếp (max 232 và 4 cái tụ)
- dùng c,vb, hay matlab có hỗ trợ oncom giao tiếp, dùng các chương trình này tao giao diện truyền và nhận dữ liệu,...
bạn nên thực hiện từng bước vướng mắc chỗ nào thì post bài lên đây mọi người sẽ giúp đỡ bạn
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-01-2009, 09:19 PM   #11
congnamppk
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 2
:
các huynh có tai liệu viết phần mềm truyền dữ liệu bằng delphi7 ra cổng COM ko, đệ đang mày mò mai mà không ra,mong các huynh giúp. đệ đã tìm nhưng lại phải sử dụng thư viện dll có sẵn nên nhiều chỗ chưa hiểu lắm.
congnamppk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 08:02 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam