PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Giao tiếp RS232 trên PC bằng Visual Basic. (http://www.picvietnam.com/forum/showthread.php?t=869)

phủ phước 18-12-2008 01:02 PM

Truyền ADC 8 KÊNH
 
Tôi có đoạn code viết trên ccs nhưng khi chạy trên vb thì chỉ có kênh 0 là được .Xin giúp tôi tìm chổ sai:

phủ phước 18-12-2008 01:21 PM

Truyền ADC 8 KÊNH
 
Tôi có đoạn code này nhưng nó chỉ truyền lên vb kênh 0 mà thôi ,xin góp ý giúp với .thank
#include <C:\Program Files\PICC\Devices\16F877A.h>
#device *=16 ADC=8
#fuses HS,NOWDT,NOLVP,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
byte adc;
byte buffer;
#INT_TIMER0
void send_data()
{
byte begin = 0xAA;


adc = read_adc();
putc(begin);
putc(adc);

}
void main()
{
int channel;

setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );
for (channel=0;channel<=7;channel++)
{
set_adc_channel( channel );

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);//sets the internal clock as source
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0); // ngat timer0 de update screen
send_data();


while(1)
{
buffer=getc();


}
}
}

HUT&I 19-12-2008 10:33 PM

Chào anh Bac!
Thật mừng là PIC việt nam có một thành viên như anh.Càng mừng hơn khi anh lại là sinh viên DHBKHN.Em thấy anh tham gia rất nhiều diễn đàn trên mạng phục anh quá.Anh có phương pháp học nào học hiệu quả chỉ giúp cho em với. Nhất là học lập trình thực sự em rất ngại động vào nó ,mặc dù ngành chúng em rất cần đến nó. Thú thực với anh em học về nó rất nhiều nhưng kết quả thì trái ngược với những j mà em dành cho nó. Rất mong nhận được sự chỉ bảo của anh.Chúc anh học tốt ,Cảm ơn anh

tungtot_vl 21-12-2008 08:39 AM

chào các bác. em muốn làm một mạch giao tiếp cổng của pc với 2 pic (ví dụ A và B). em muốn khi pc gửi data cho pic A thì chỉ có pic A nhận, B không nhận. khi pc gửi data cho pic B thì B nhận, A không nhận. các bác có cách nào thì xin chỉ mình giúp.

hoangvanhuy 22-12-2008 01:38 PM

Minh đang hoc visual basic , nen vao day. đã đăng kí rồi nhưng sao ko tải được tài liệu...Bạn nào biết chỉ mình, cảm ơn nhiều.

bacaynet 05-01-2009 11:30 AM

Anh Hải Bắc ơi! Tại sao em không lôi cái MSComm ra project của em được vậy anh! Em cần gấp để làm đồ án! Mong anh giúp đỡ, cảm ơn nhiều!

bacaynet 05-01-2009 12:53 PM

Mấy anh chị cho em hỏi thêm là:
- Code cho VDK 89 để nó và PC gửi nhận dữ liệu liên tục.
- Còn trong VB, em làm code này, không biết có đúng không:

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
dRec = MSComm1.Input
MSComm1.Output = dSend
End If
End Sub

vandungevn 28-02-2009 11:35 PM

Lâu rùi không vào mà thấy mọi người trao đổi nhiều quá. hiiic.
Bạn nên mã hóa để cho nó gửi không bị sai tín hiệu.
VD: gửi mã hóa => gửi dữ liệu => gửi checksum.

Như vậy nếu c.hỉ gửi không thì bạn sẽ dễ hơn đó.
Còn về ADC các bạn nên dùng ADC 10 bít thì tốt hơn, nó có độ phân giải cao hơn và độ chính sác cao hơn là dùng 8 bít (đương nhiên là 1024 sẽ lớn hơn 256).

ex code: // gửi số có giá trị là 16 byte là "datasend"

void send_to_pc(unsigned int datasend, char set){
unsigned char chksum;
putc(0xAD); // gui ma hoa
putc(0xDA); // gui ma hoa
putc(set); // chon che do gui
putc((datasend>>8)&0xff); // Gui byte cao
putc(datasend & 0xff); // Gui byte thap
chksum = ((datasend>>8)|datasend))%256; // kiem tra loi
putc(chksum); // gui byte kiem tra loi
}

gửi phủ phước
code của bạn sai trong vòng for bạn chưa kết thúc chương trình, nếu bạn để như vậy thì vòng For chỉ chạy lần đầu tiên, không gửi được các kênh adc còn lại là đúng. Nên để chương trình đọc adc là chương trình con và gửi luôn là ok. như trên bạn gửi "set" là các kênh adc khác nhau là ok. như vậy vừa có thể đọc adc theo kênh vừa gửi là ok không sợ bị lỗi và bị nhầm.......

Chúc thành công nhé.

tranvangvn 04-03-2009 10:25 PM

Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;;)
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!

tranvangvn 04-03-2009 10:27 PM

Gủi theo địa chỉ tranvang8@yahoo.com

tranvangvn 04-03-2009 10:32 PM

Các bác cho em cả các mã lệnh trong C với VDK truyền thông nối tiếp nhé!

tranvangvn 04-03-2009 10:39 PM

Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!
Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

tranvangvn 04-03-2009 10:41 PM

Giao tiếp RS232 trên PC bằng Visual Basic.
 
Các bác ơi giúp em với em giao diện vi điều khiển với máy tính bằng vb.còn vi điều khiển em viết bằng ngôn ngữ c
Vb em viết đơn giản sau:
Private Sub Command1_Click()
End
End Sub

Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "2400,n,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim strf As String
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 50
strf = MSComm1.Input
L.Caption = strf

End Sub
Vi điều khiển em viết như sau:em dùng 89C52
#include<REG52.H>
#include<stdio.h>
void xung()
{
SCON= 0x50;
TMOD= 0x20;
TH1 = 0xF3;
TR1 = 1;
TI = 1;
}
main()
{
int i;
P1=0x00;
xung();
for(;
{
P1=0x01;
printf("CHUNG TOI LA NNUNG CHIEN SI");
} }
Nhưng không hiểu trên máy tính toàn nhận kí tự gì ấy không được như ý nắm và báo nỗi "28", thỉnh thoảng được thì hiển thị kí tự quá nhiều và phụ thuộc vào cái này:Loop Until MSComm1.InBufferCount >= 50
Các bác nào bớt chút thời gian giải thich và khác phục cho em với
Tiện thể cho em mấy chương trình xuất nhập đơn giản trên VB và cả VDK một chương trình mà khi ta bấm 1 phím mà trên VDK các post xuất cho tín hiệu để điều khiển và ngược lại VDK gửi tín hiệu máy tính mà hiển thị trên màn hình
Các bác có gắng các lệnh đều phải có chú giải nhé !
Cám ơn những nhà thông thái!
Các bác cho em các hàm trong C hay trong KEIL về giao tiếp máy tính nhé

t_duyphuong 14-03-2009 08:52 AM

giao tiep RS232
 
Anh Hải Bắc ơi! Cho em hỏi : Em đã dùng đoạn code mà anh post lên về giao tiếp RS232 bằng VC++ nhưng khi biên dịch thì chuơng trình báo lỗi là chưa định nghĩa "COM1" và "COM2". Anh có thể chỉ cho em cách sửa lỗi không ạ?
Em vẫn chưa hiểu là chuơng trình tự nhận ra cổng COM hay là mình phải cấu hình như thế nào cho nó?
Cho em hỏi luôn là trên máy tính nó có ghi cho mình biết cái nào là "COM1" và "COM2" cho mình biết ko?
Em xin cám ơn!!!!!!!!!!!!!!!!!

phandinh 25-03-2009 12:52 AM

i'm beginning
 
chào mọi người . mình mới nghiên cứu về pic.
chủ đề giao tiếp này mình thấy cực cực hay & thực tế.
mới tìm hiểu nên lùng bùng quá. có gì nhờ mọi người giúp ( dù câu hỏi ngây thơ nhưng đừng cười nha).
mình tự tin là mình làm được.
" impossible is nothing "


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam