PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 07-05-2008, 01:42 PM   #31
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Nói về cái mạch : mạch dùng ICMax232, các chân nguồn, chân nối tụ bạn nối giống y hết như trên. Hai chân RC6 và RC7 là 2 chân truyền nhận của PIC6f877a, bạn cứ vẽ layout nối vào 2 chân 9 10 của MAX232 giống như hình trên là được hoặc bạn nối jupm cũng OK.
Về layout : mình thường vẽ trực tiếp trên layout luôn chứ vẽ trên capture cis rồi chuyển qua nó hay báo lỗi do kiểu chân khai báo bên capture cis ko có bên layout. Nên mình vẽ trực tiếp bên layout luôn. Cần chân linh kiện nào thì lấy nó ra. Bạn đọc thêm các tài liệu hướng dẫn để vẽ layout.
Bạn tải file bên dưới về rồi add vào thư viện layout, nó có gần như đầy đủ các linh kiện thông dụng.
Chúc bạn thành công.
File Kèm Theo
File Type: rar LAYOUT LIBRARY MANUAL.rar (47.0 KB, 267 lần tải)

thay đổi nội dung bởi: uydanh, 07-05-2008 lúc 01:48 PM. Lý do: Upload file
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2008, 10:04 PM   #32
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Code:

Trích:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7, bits=9)
char t;
void main()
{
printf("danh vao ky tu de hien thi");
do
{
t=getc();
putc(t);
}while(1);
}.

Anh ơi , với code này nếu em nạp vào pic và sau đó em cho vào mạch tét như hôm trước anh gừi thì khi mình gõ ký tự từ bàn phím thì máy tính (chương trình giao tiếp) sẽ nhận và hiển thị đc ký tự mình gửi đúng không anh?
Nhưng khi em mô phỏng trên Protues thì nó hiển thị không giống như ký tự mình gửi anh ạ, anh xem dùm em
Cảm ơn anh!
File Kèm Theo
File Type: rar rs232.rar (11.8 KB, 158 lần tải)

thay đổi nội dung bởi: tyhon, 09-05-2008 lúc 02:51 AM.
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2008, 02:42 AM   #33
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Anh ở đâu rồi, lâu không thấy anh lên diễn đàn
Anh cố xem hộ em đi ạ
Rất mong thư!
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2008, 09:53 AM   #34
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Mình không có viết kiểu này. Mình dùng ngắt để nhận ký tự trên máy tính truyền xuống. Với đoạn code trên , nếu là mình thì sẽ viết như sau :
Code:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7, bits=9)
char t;
#INT_RDA
void rda_isr()
{
t=getc()            ;
}
void main()
{
enable_interrupts(INT_RDA)       ;        
enabled_interrupts(GLOBALS)     ;
while(1)
{
putc(t)                                  ;
}
}
Khi trên máy tính truyền xuống hết 1 byte thì ngắt INT_RDA xảy ra. Chương trình ngắt được thực hiện, biến t sẽ nhận 1 byte truyền xuống đó. Sau đó nó thoát ra chương trình ngắt và lặp vòng trong lệnh while(1).
Bạn thử viết kiểu này được không.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-05-2008, 07:58 AM   #35
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Anh ơi cho em hỏi
EM có đoạn code đơn giản sau và em test bằng chuơng trình của anh NHB đã gửi cho nhưng sao không đúng , em không biết do lổi gì nhờ anh xem hộ em
Rất mong thư!
File Kèm Theo
File Type: rar New Folder.rar (282.3 KB, 236 lần tải)
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-05-2008, 02:53 PM   #36
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Cái này thì mình cũng pó tay thôi. Chương trình của bạn thiếu parity, bạn thêm vào thử có được không ? Một điều nữa : bạn xem lại thạch anh của bạn có đúng là 20Mhz như khai báo không ?
Bạn truyền thử 1 ký tự xem có OK không? Sau đó mới truyền chuổi.
Chúc thành công.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2009, 04:54 PM   #37
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
giao tiếp cổng Com bằng VB

bạn nào rành giao tiếp cổng com bảng VB thì giúp mình với.
mình tập viết chương trình VB giao tiếp với cổng com. chương trình truyền và nhận chuỗi kiểm string thì bình thường. nhưng khi gửi kiểu byte (0 -> 255) hay kiểm interger thì chương trình chỉ gửi mã dạng ASCII của số đó. ví dụ mình gửi số 1 xuống VDK thì nó phản hồi lại mã ASCII lã9 , gủi số 12 thì phản hồi lại 67, gủi 115 thì phản hồi lại 2 số là 50 và 51.
mình muốn chương trình gửi xuống số 1 thì phản hồi lên số 1, gửi 115 thì phản hồi lên 115
bạn nào biết giúp mình với nhé
thanh you!
File Kèm Theo
File Type: rar comm.rar (1.8 KB, 102 lần tải)
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2009, 07:31 PM   #38
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
Trong VB, khi giao tiếp thì mặc định là gởi mã accii của ký tự, nếu bạn muốn gởi số như bạn nói, ví dụ bạn muốn gởi số 115(1 byte) bạn có thể viết như sau:
MSComm1.output=chr(115)

hàm chr() đổi 1 byte từ số sang ký tự có mã accii là số đó, như vậy, bạn sẽ gởi được số 115.
Nếu bạn giao tiếp với PIC, gởi 1 số lên lại máy tính, bạn có thể viết như sau (CCS):
printf('%u',115);

Chúc bạn thành công.
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2009, 12:35 PM   #39
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
//Nếu bạn giao tiếp với PIC, gởi 1 số lên lại máy tính, bạn có thể viết như sau (CCS):
printf('%u',115);//



ủa chứ không phải là lệnh : putc(x); hả bạn?
nếu không phải thì sẳn bạn cho mình hỏi luôn là lệnh putc() dùng để làm gì?

Bác nào rành phần cứng thì xem giúp phần mạch bên dưới có đúng không ? sao mà mình chỉ truyền được dữ liệu từ máy tính xuống còn từ pic lên thì không được(không thấy sự kiện on_comm().

các bác mod cho mình hỏi muốn post trực tiếp file hình lên thì làm như thế nào ? thank.
Hình Kèm Theo
File Type: bmp a.bmp (48.5 KB, 46 lần tải)

thay đổi nội dung bởi: lequocbao, 24-03-2009 lúc 12:57 PM.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-03-2009, 10:07 PM   #40
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
Lệnh putc() theo mình hiểu là gởi ký tự.
Gởi bạn mạch mình đã làm và chạy thành công, mạch đơn giản lắm, bạn tham khảo nhé.
File Kèm Theo
File Type: rar RS232.rar (9.7 KB, 320 lần tải)

thay đổi nội dung bởi: npbaoduy, 24-03-2009 lúc 10:14 PM.
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 05:50 PM   #41
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
printf(); // là để gửi một chuỗi hay số lên PC
putc(c); // tức là khi máy tính gửi xuống 1 byte nào đó thì lệnh này sẽ phản hồi lại byte đó cho máy tính.
lệnh printf(); có thể dùng ở bất cứ vị trí nào trong chương trình còn lệnh putc(c); chỉ dùng trong ngắt sau dòng lệnh c = getc();
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 06:25 PM   #42
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
các bác giúp em với, nghĩ mãi mà chưa làm được , chương trình của em nó chỉ nhận thôi, nhưng khi nhận xong thì PIC lại không thấy hiển thị, còn truyển ngược lại thì chưa đươc
code trong Pic:
#include <16F877a.h>
#include <DEFS_16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,parity=n, xmit=PIN_C6, rcv=PIN_C7)
unsigned char dulieu;
#INT_RDA
void data_receive(void)
{
dulieu = getc();
putc(dulieu);
}
void main()
{
set_tris_a(0);
ENABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_RDA);
while(true)
{
output_a(dulieu);

delay_ms(2000);
}
}
code trong VB:

Private Sub cmdClear_Click()
Text1.Text = ""

End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub

Private Sub cmdSend_Click()
MSComm1.Output = Text2.Text
End Sub

Private Sub Form_Load()
cmdSend.Caption = "&Send"
Text1.Text = ""
Text2.Text = ""
Text1.Enabled = False
cmdExit.Caption = "&Exit"
With MSComm1
.Settings = "9600,N,8,1"
.CommPort = 4
.RThreshold = 1
.SThreshold = 0
.InputMode = comInputModeText
.InputLen = 0
.Handshaking = comNone
.InBufferSize = 1024
.OutBufferSize = 1024
If .PortOpen = False Then
.PortOpen = True
End If

End With
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
Text1.Text = Text1.Text + Asc(MSComm1.Input)
End If
End Sub
(em tìm mãi mà không thấy chỗ nào để viết code.)
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 07:31 PM   #43
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
pic không hiển thị gì hết, vậy thì dựa vào đâu mà bạn biết là pic chỉ nhận thôi!
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 07:51 PM   #44
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
Trích:
Nguyên văn bởi lequocbao View Post
pic không hiển thị gì hết, vậy thì dựa vào đâu mà bạn biết là pic chỉ nhận thôi!
em sử dụng mô phỏng Proteus và phần mền cổng com ảo
nguyennam8888 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2009, 10:06 PM   #45
nguyennam8888
Đệ tử 3 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 50
:
bác nào có sơ đồ kết nối max232 voi Pic không , em thấy lúc nối 3 chân , lúc nối nhiều hơn
nguyennam8888 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à 11:16 AM.


Đượ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