|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
10-11-2008, 02:35 PM | #1 |
Đệ 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? |
11-11-2008, 03:02 PM | #2 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
i2c
Trích:
#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); |
|
11-11-2008, 06:34 PM | #3 |
Đệ 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 |
29-11-2008, 11:41 AM | #4 |
Đệ tử 3 túi
Tham gia ngày: Aug 2008
Bài gửi: 53
: |
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 |
16-11-2008, 01:59 PM | #5 |
Đệ 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?
|
16-11-2008, 08:03 PM | #6 |
Đệ 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 đề
|
29-11-2008, 04:20 PM | #7 |
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
|
30-11-2008, 11:01 PM | #8 |
Đệ 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
|
02-12-2008, 09:24 AM | #9 |
Đệ tử 3 túi
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 |
02-12-2008, 03:50 PM | #10 |
Đệ 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 |
24-01-2009, 09:19 PM | #11 |
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.
|
|
|