PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

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

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-11-2009, 12:06 PM   #16
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Question new problem !!!

Sau khi đã truyền lên pc okie, e lại tiếp tục chuyển sang nghiên cứu phần truyền từ pc xuống com. Em định thiết lập 1 form VB như sau :


Em sẽ lập trình để khi mình nhập từ bàn phím vào Text 1 số kí tự, sau đó press Send thì ở LCD4bit của em cũng sẽ nhận được tương ứng.
Em có tham khảo trên 4rum mình và tiến hành lập trình vb tương tự như sau;
Code:
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim DataToSend As String
DataToSend = KeyAscii
MSComm1.Output = DataToSend
End Sub
Private Sub Form_Load()
With MSComm1
.Settings = "9600,N,8,1"
.RThreshold = 1
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeText
.ParityReplace = ""
.CommPort = 6 ' using com6
End With
End Sub
Và ở CCS thì em viết chương trình cho pic16f88 của mình như sau :
Code:
#include <16f88.h>
#include <def_88.h>
#device *=16 ADC=10
#fuses NOWDT, HS, PUT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#include <LCD_4BIT16F88edit.C> // Thu vien ham cho LCD
void main()
{
trisB=0x00;
lcd_init();
lcd_putcmd(0x80);
getc();
}
Về hardware của e thì đã okie hết, nhưng có điều e chưa chắc về chương trình VB và CCS( vì e nạp và chạy thử rùi nhưng o thấy trăng sao j cả ). Với lại e cũng chưa thiết lập code cho command send của mình, các bác cho e ý kiến nhá !!
Về phần VB chắc code gửi data của e vẫn chưa được : vẫn còn hoài nghi cái chỗ mscomm1.output=datatosend.
Về phần CCS chắc code nhận data chắc cũng o ổn : e nghi ngờ cách dùng hàm getc() của mình, hehe.
Các tiền bối chỉ giáo cho kẻ hậu bối này với nhá !!!
Thanks nhìu nhìu !!!
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2009, 10:54 AM   #17
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Question

các cao nhân đi đâu hết rùi !! Chỉ giáo dùm e 1 cái...
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-12-2009, 10:58 AM   #18
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Thumbs up Continue with your new problem!

Hey boy,

Trích:
Về phần VB chắc code gửi data của e vẫn chưa được : vẫn còn hoài nghi cái chỗ mscomm1.output=datatosend.
Có một vài chia sẻ với bạn.
Thứ nhất: vấn đề của bạn hỏi không ai có thể bỏ công ra ngồi viết form VB rồi làm mạch test cho bạn được. Điều quan trọng là bạn nên tự tìm hiểu và làm. Khi nào gặp lỗi gì thì post code lên hỏi. Cứ làm rồi sẽ bắt được lỗi thôi! (Không dc thì nhờ!)

Thứ hai: Bạn có dùng phần mềm tạo các cặp cổng COM ảo (Virtual Serial Port Driver) không?
Nó rất hữu ích cho việc test các phần mềm lập trình truyền nhận qua cổng COM.
Nếu bạn chưa có thì tải file mình gửi kèm nhé. Rồi cài đặt và lập trình test xem mình lập trình VB đã truyền nhận được chưa. (Có thể dùng form bạn lập trình gắn cho COM ảo 3 truyền dữ liệu lên Terminal gắn cho COM ảo 4 chẳng hạn)

Thứ ba: Sau khi truyền nhận VB đã ổn.
Bạn tiếp tục nghía đến CCS. Làm sao để nhận 1 chuỗi từ VB gửi xuống.
Theo mình, khi gửi bạn nên đánh dấu bằng các kí tự bắt đầu và kết thúc chuỗi gửi.
Ở CCS, viết code sao cho khi gặp kí tự bắt đầu của 1 chuỗi gửi xuống thì getc().
Và cứ getc() cho đến bao giờ gặp kí tự kết thúc thì thôi.
Và put cái chuỗi nhận được đấy lên LCD.

Chúc bạn thành công!
File Kèm Theo
File Type: rar Virtual Serial Port Driver v.6.0.1.115.rar (2.81 MB, 86 lần tải)
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.

thay đổi nội dung bởi: Delfy_Coltech, 01-12-2009 lúc 10:59 AM. Lý do: Nothing
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-12-2009, 12:19 PM   #19
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Smile

Bác hỉu sai ý em rùi, ko phải là e nhờ các bác viết dùm mà là nhờ các bác tư vấn dùm cái đoạn code vb và ccs e đã post ở trên.
Các bác chỉ dùm e cái điểm dc và chưa đc để e rút kinh nghiệm. Vì e vẫn chưa làm dc việc gửi 1 kí tự từ vb xuống và hiể thị lên lcd. Mong các bác nhiệt tình giúp e
Thân !!
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-12-2009, 04:44 PM   #20
phuocxin
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 3
:
ở vb bạn phải viết là
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim DataToSend As String
datatosend="a"
MSComm1.Output = DataToSend
End Sub
phuocxin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-12-2009, 12:32 PM   #21
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Question plus !!!!

Mình đã làm theo cách của bạn tuy nhiên vẫn chưa dc. Mình nghĩ vấn đề của mình nằm ở chương trình ccs. Bởi vì mình thấy mún hiển thị lên LCD thì cần có lệnh LCD_PUTCHAR hay PRINTF(LCD_PUTCHAR,"....") nhưng ở ccs của mình thì chỉ có GETC() mà không có các lệnh hiển thị lên LCD >> vậy thì làm sao mà hhiển thị dc các bác nhỉ !!! Theo chủ quan của e là như vậy, các bác cho e hồi âm nhé
Thanks !!!
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-12-2009, 09:03 PM   #22
8051topic
Đệ tử 4 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 71
:
Ý của bạn Delfy_Coltech là bạn nên viết hoàn chỉnh từng phần, chắc chắn VB đúng rồi mới viết tiếp CCS (hay ngược lại cũng được).
Mình thấy trang này chỉ rất cơ bản phần VB, có cả file chạy sẵn nữa, bạn có thể làm theo để biết lỗi sai do chương trình trên VB hay CCS.
http://www.rentron.com/sending_data.htm
8051topic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-12-2009, 12:44 AM   #23
khaivinh_plc
Đệ tử 1 túi
 
khaivinh_plc's Avatar
 
Tham gia ngày: Feb 2009
Bài gửi: 12
:
Minh gop y chut:

vi du ban tao ra mot o text và dat ten la text1 thi ban phai viet la :
VB:
MSComm1.Output = text1.Text ' noi dung text1 se truyen xuong


O phan vdk thi ban viet code nhan 1 ky tu do, luu vao bien nao do roi tha ho ma xu ly...chu y la pc gui xuong la ky tu.
khaivinh_plc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2009, 09:08 PM   #24
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Smile ???

Cái mình cần là cái chô chương trình ở C để nhận kí tự mà bạn nói đó, mình đag kẹt chỗ đó nên mới nhờ mọi người tư vấn. Bạn có thể đưa ra 1 ít code cho mình tham khảo dc o ? Mình cũng đã làm bằng cách dùng hàm getc() tuy nhiên vẫn chưa dc !!
Thân !!
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-12-2009, 01:42 AM   #25
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Ủa vấn đề của meopic vẫn chưa giải quyết được hả!
Tại sao bạn không làm theo cách mình đã nói ở trên nhỉ!
Ví dụ đơn giản: Truyền kí tự "A"--> Getc()--> Putchar lên LCD.

Nhưng muốn get được ký tự đó. Không phải là cứ viết hàm getc() trong void main() là được. Mà phải cần sử dụng đến ngắt RDA (Nếu chưa biết bạn có thể đọc thêm trong CCS_Manual_2k9).

- Khi truyền một ký tự hoặc một chuỗi xuống PIC. (Thường mình dùng 2 chân RC6 và RC7 để truyền-nhận), sẽ xảy ra ngắt RDA (ngắt xảy ra khi có sự nhận dữ liệu qua giao thức RS-232).

Lúc này bạn sẽ khai báo hàm ngắt và viết câu lệnh nhận dữ liệu truyền xuống trong hàm ngắt này.
Rồi trong void main(). Enable ngắt là OK.

Code sẽ như sau:
Code:
//1. PIC setting
....
//2. Interrupts Program 
INT_RDA
VOID GET_CHAR()
{
   char c;
   c=getc();
   putc(c);// Gửi lại ký tự vừa nhận được lên PC
}

VOID main()
{
    enable_interrupts(global);
    enable_interrupts(int_rda);
    while(true)
         {
            
         }

}
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 10:34 AM   #26
meopic
Đệ tử 1 túi
 
meopic's Avatar
 
Tham gia ngày: Sep 2009
Bài gửi: 18
:
Thumbs up okie !!!

Thanks các bác nhìu, special with Delfy mem, hehe ! Nhờ có sự chỉ bảo tận tình của các bác mà em đã hiểu thêm dc nhìu thứ !!
Thân !!
__________________
ALWAYS BE U !! HEHEHE
meopic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-01-2010, 06:43 PM   #27
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
4-rum là nơi để trao đổi, học hỏi lẫn nhau mà bạn.
Let's share to be share!
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-07-2011, 01:16 AM   #28
hangocminh1989
Đệ tử 6 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 132
:
oh, các bác ơi, em gửi chuỗi kí tự xuống pic từ pc, sau đó xuất ra lcd là sao lcd chỉ xuất có 1 kí tự vậy ạ?
em gửi lại pc kĩ tự vừa nhận thì đầy đủ, mà gửi lên lcd thì chỉ được 1 kí tự thui.
ví dụ em gửi chữ "bc" từ pc xuông pic mà chỉ nhận được mỗi chữ "c" trên lcd thui, trong khi em gửi ;lại liền pc chuỗi kí tự đó lại đủ cả, hic, mong các bác giải thích cho em.
hangocminh1989 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2011, 02:46 AM   #29
hein_ts
Đệ tử 6 túi
 
Tham gia ngày: Feb 2011
Bài gửi: 156
:
Mình cũng xin post thêm ít kinh nghiệm của mình nhé. Lần đó mượn được cái mạch của anh khóa trên về nạp code chạy thử, giống hệt hiện tượng như trên, tức là lúc được lúc không, <0>... Akay quá, đi làm hẳn một modul Max232 mới ghép vào chạy không sai lấy một bit, tưởng con max on board hỏng thay con khác vẫn bị. Cuối cùng phát hiện ra là thiếu nguồn mã chân 15 của max. Hic!
hein_ts vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 12:44 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