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...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 16-09-2011, 09:26 PM   #1
sges
Nhập môn đệ tử
 
Tham gia ngày: May 2011
Bài gửi: 5
:
Send a message via Yahoo to sges
PC kết nối RS232 với 16F877A, truyền giá trị cho 595 rất mong các bạn thảo luận và gi

- Mình có một bảng điều khiển như sau viết bằng VB.

Tất cả có 8 con LED 3 màu <=> 24 trạng thái. Ở mỗi vị trí 1 LED có 3 check. Nếu check màu xanh nhấn thì có màu xanh, vàng nhấn có màu vàng, đỏ nhấn thì LED có màu đỏ. Sau khi đã thiết lập xong thì nhấn nút CONECT giá trị cần truyền được lấy từ trạng thái các check được đưa xuống 16F877A.
- Sơ đồ mô phỏng được vẽ trên ISIS

24 trạng thái được thể hiện bằng 24 con LED, cứ 3 LED liền nhau thể hiện cho một LED 3 màu. Vì số lượng LED sau này điều khiển có thể lớn hơn nên mình sử dụng 74HC595 để đưa giá trị nhận được từ Rs232 nối tiếp xuất ra các LED.
- Đây là lệnh trên VB6
Code:
Private Sub Cmd_CONECT_Click()
If MSComm2.PortOpen = False Then
MSComm2.PortOpen = True
End If
MSComm2.Output = Chr(FF)
End Sub
Private Sub Form_Load()
With MSComm2
    .CommPort = 2                     'cong COM 2
    .Settings = "9600,N,8,1"          'Baudrate=9600,Ko KT chan le,frame 8 bit,1 bit stop
    .InBufferSize = 1024              'Bo dem 1024 byte thi day
    .InputLen = 0                     'Doc toan bo gia tri bo dem
    .RThreshold = 1                   'Cho phep ngat khi su kien Receiver o MSCOMM
    .SThreshold = 0                   'Ko cho phep ngat khi su kien Send o MMSCOMM
    .OutBufferSize = 512
    .InputMode = comInputModeText
    .PortOpen = True                  'Mo cong COM
End With
End Sub
- Còn đây là lệnh CCS cho PIC
Code:
#include <16f877a.h>
#include <def_877a.h>
#device 16f877a*16ADC=10
#fuses nowdt,nolvp,noprotect,xt,put
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define Clk ra0
#define Data ra1
#define Rck ra2
#define sclk ra3
//================Cac bien ============================================//
int i;
char a[3];
//================= Cac ham con===========================================//
void dich_595(char num);
void ngat_rda();
//-------------------------------------------------------------------------
void main(void)
{  
   enable_interrupts(global);
   enable_interrupts(int_RDA);
   set_tris_d(0x00); //portd is output
   set_tris_a(0x00);
   portd=0x00;
   porta=0x00;
   while(true)
   {          
   }
}
void dich_595(char num)
{
int j;
int8 value;
value = (int8)num;
for(j = 0;j<8;j++)
{
if(value&0x80)//truyen bit co trong so cao truoc
Data = 1;
else
Data = 0;
Clk = 1; //xung nhip
Clk =0;
value =value<<1; //dich tra 1 bit
}
}
#int_RDA
void ngat_rda()
{  
   a[0]=getc();
   a[1]=0xAA;
   a[2]= 0xFF;
   sclk=0;
   sclk=1;
   for(i=0;i<3;i++)
      {
      dich_595(a[i]);
      }
   Rck = 1; //chot du lieu
   Rck = 0;  
}
Ban đầu mình chỉ TEST bằng cách nhấn nút CONECT để truyền thẳng giá trị xuống cho a[0], còn a[1] và a[2] nhập giá trị trực tiếp, chưa liên quan gì đến các check của VB6 cả nhưng nhận không tài nào đúng giá trị.
Rất mong các bạn có kinh nghiệm và đã làm nhiều về RS232 cho mình ý kiến về cách tổ chức biến của VB6 và CCS sao cho hợp lý. Xin cảm ơn các bạn.
__________________
Thà thức suốt đêm để tìm ra vấn đề con hơn cả đời sống trong nghi vấn
---------------------------------
Các bạn đặt mạch in xin vui lòng gửi trực tiếp file và yêu cầu vào địa chỉ mail của mình, không gửi trên diễn đàn
---------------------------------
Mail:
buibachtuananh@gmail.com
cdt39.mta@gmail.com
anhquan.cdt@gmail.com
ĐT:
0989 94 66 95
0988 11 24 00
sges vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ð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à 01:13 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