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 Bài Trong Ngày 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 23-12-2010, 08:59 AM   #1
thoneybeet
Nhập môn đệ tử
 
Tham gia ngày: Dec 2010
Bài gửi: 1
:
Sử dụng RS232 điều khiển các cơ cấu chấp hành được gắn với board vi điều khiển.

Mình đang học về RS232. Mình có 1 vấn đề như sau:

Sử dụng chuẩn truyền RS232, thiết kế mạch giao tiếp giữa cổng COM máy tính và vi điều khiển.
Máy tính: Viết chương trình xuất/nhập dữ liệu để điều khiển các cơ cấu chấp hành được gắn với board vi điều
khiển.
Vi điều khiển: Vi điều khiển được gắn với 01 màn hình LCD và 01 bàn phím 16 nút.
Nguyên tắc hoạt động:
1. Khi user gõ vào 1 chữ hoặc 1 chuỗi k í tự trên máy tính và bấm nút Send thì chữ hoặc chuỗi kí tự này sẽ hiện lên trên LCD.
2. Khi user nhấn 1 phím bất kì trên bàn phím 16 nút thì kết quả phím nào được nhấn sẽ được hiển thị trên LCD và trên giao diện của chương trình trên máy tính.

Các bạn có thể giúp mình hướng giải quyết cũng như cách giải bài tập này không? Bài tập này mình dùng chương trình gì để mô phỏng? Cảm ơn các bạn rất nhiều
thoneybeet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2010, 09:38 AM   #2
nhanconan030789
Đệ tử 3 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 49
:
đầu tiên bạn phải tìm hiểu chuẩn truyền rs232 nó như thế nào đã,mức logic của nó có khác gì với chuẩn cmos hay ttl không?rồi dùng các chương trình mô phỏng quá trình truyền nhận dữ liêu,dùng protues ,phần mềm tạo cổng com ảo test cổng com,bạn lên google tìm nhé!!
nhanconan030789 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-12-2010, 04:17 PM   #3
thanh_nam1977
Đệ tử 2 túi
 
thanh_nam1977's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Ho Chi Minh
Bài gửi: 27
:
Send a message via Yahoo to thanh_nam1977
Để giải quyết bài toán này, nên tách làm các bài toán nhỏ sau :
-Giao tiếp giữa PIC với PC bằng RS232 qua cổng COM. Hiện nay, đa số các máy tính đều không có cổng COM, vậy phải dùng một thiết bị chuyển đổi USB ra COM. Lưu ý là o dùng cổng chuyển đổi USB ra COM mua ở Phong Vũ nhé, cái đó nó không chuyển mức Logic điện áp để có sự tương thích giữa CMOS và TTL. Tham khảo làm cái cổng COM đó hoặc mua ở Thiên Minh.
-Thứ 2 là dùng đối tượng COM trong Visual Basic viết giao tiếp với PIC qua RS232. Dùng CCS cho dễ. Quá trình này gồm truyền và nhận
-Thứ nữa, viết giao tiếp giữa PIC và LCD để hiển thị
Và cuối cùng tổng hợp lại sẽ giải quyết được bài toán của bạn

Thử nghiệm: Sợi đen mua ở Phong Vu. Soi trắng tự làm. Cà sơi đều dùng chuyển USB sang COM
Ở logic 1, sợi Phong vu gần 7 Volt, trong khi sợi trắng 5 Volt



Viết chương trình nhấn nút ấn, vi điều khiển sẽ
cho sáng đèn tương ứng, đồng thời gửi lên hiển thị ở mành hình máy tính:




Đoạn Code chương trình :
#include <16f877A.h>
#FUSES HS
#use delay (clock=8000000)
#use rs232(baud = 9600, parity = n , xmit = pin_c6 , rcv = pin_c7 , bits = 9 )
int8 z ;
BOOLEAN NGAT ;
CHAR CHU ;
int1 b0, b1, b2, b3, b4, b5, b6, b7 ;
void daobit0() ;
void daobit1() ;
void daobit2() ;
void daobit3() ;
void daobit4() ;
void daobit5() ;
void daobit6() ;
void daobit7() ;
#INT_RDA
VOID HAMTRUYENTHONG()
{
CHU = GETCH() - 48 ;
SWITCH(CHU)
{
CASE 0: DAOBIT0() ; BREAK ;
CASE 1: DAOBIT1() ; BREAK ;
CASE 2: DAOBIT2() ; BREAK ;
CASE 3: DAOBIT3() ; BREAK ;
CASE 4: DAOBIT4() ; BREAK ;
CASE 5: DAOBIT5() ; BREAK ;
CASE 6: DAOBIT6() ; BREAK ;
CASE 7: DAOBIT7() ; BREAK ;
}
NGAT = FALSE ;
}
void main()
{
b0 = b1 = b2 = b3 = b4 = b5 = b6 = b7 = 0 ;
OUTPUT_D(0) ;
set_tris_b(0xff) ;
set_tris_d(0x00) ;
ENABLE_INTERRUPTS(INT_RDA) ;
ENABLE_INTERRUPTS(GLOBAL) ;


while(true)
{
NGAT = TRUE ;
putc(b0 + 48) ;
putc(b1 + 48) ;
putc(b2 + 48) ;
delay_ms(3) ;
putc(b3 + 48) ;
putc(b4 + 48) ;
putc(b5 + 48) ;
delay_ms(3);
putc(b6 + 48) ;
putc(b7 + 48) ;
z = 0 ;
while(bit_test(input_b(),z) && NGAT) // quet phim
{
z++ ;
if(z == 8) z = 0 ;
delay_ms(5) ;
}
while(!bit_test(input_b(),z)) // cho nha phim
{
}

IF(NGAT)
{
switch(z)
{
case 0: daobit0() ; break ;
case 1: daobit1() ; break ;
case 2: daobit2() ; break ;
case 3: daobit3() ; break ;
case 4: daobit4() ; break ;
case 5: daobit5() ; break ;
case 6: daobit6() ; break ;
case 7: daobit7() ; break ;
}
}
output_bit(pin_d0,b0) ;
output_bit(pin_d1,b1) ;
output_bit(pin_d2,b2) ;
output_bit(pin_d3,b3) ;
output_bit(pin_d4,b4) ;
output_bit(pin_d5,b5) ;
output_bit(pin_d6,b6) ;
output_bit(pin_d7,b7) ;
}
}

void daobit0()
{
if(b0)
{
b0 = 0 ;
}
else
{
b0 = 1 ;
}
}
void daobit1()
{
if(b1)
{
b1 = 0 ;
}
else
{
b1 = 1 ;
}
}
void daobit2()
{
if(b2)
{
b2 = 0 ;
}
else
{
b2 = 1 ;
}
}
void daobit3()
{
if(b3)
{
b3 = 0 ;
}
else
{
b3 = 1 ;
}
}
void daobit4()
{
if(b4)
{
b4 = 0 ;
}
else
{
b4 = 1 ;
}
}
void daobit5()
{
if(b5)
{
b5 = 0 ;
}
else
{
b5 = 1 ;
}
}
void daobit6()
{
if(b6)
{
b6 = 0 ;
}
else
{
b6 = 1 ;
}
}
void daobit7()
{
if(b7)
{
b7 = 0 ;
}
else
{
b7 = 1 ;
}
}

Ở Visual Basic:

Dim VT As Integer

Private Sub Form_Load()

With rs232
.CommPort = 3
.Settings = " 9600 , n , 8 , 1"
.InBufferSize = 1024
.OutBufferSize = 512
.InputLen = 0 'Gia tri nay = 0 la doc ca chuoi tu buffer, bang 1 se doc tung ky tu
.InputMode = comInputModeText
.PortOpen = True
End With
VT = 0


End Sub



Private Sub rs232_OnComm()
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()
Label5.Caption = rs232.Input
Timer1.Enabled = False
Timer2.Enabled = True
End Sub

Private Sub Timer2_Timer()
If Mid(Label5.Caption, VT + 1, 1) = 1 Then
Shape1(VT).BackColor = &HFF&
Else
Shape1(VT).BackColor = &H0&
End If
VT = VT + 1
If VT = 8 Then
VT = 0
Timer2.Enabled = False
End If
End Sub

Tùy theo máy tính mà vào phần Hadware/Comport để xác định chính xác cổng Com cần mở Port

thay đổi nội dung bởi: thanh_nam1977, 23-12-2010 lúc 08:44 PM.
thanh_nam1977 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-12-2010, 10:28 AM   #4
nhanconan030789
Đệ tử 3 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 49
:
Bác thật là vip quá,mong được bác chỉ giáo nhiều!!
nhanconan030789 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à 10:06 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