Mình đang làm đồ án nhưng gặp rắc rối ở việc truyền và nhận 1 số 10bit qua cổng COM, giao tiếp với Pic 16f877a bạn nào có cách giải quyết xin giúp đỡ mình nhe!??
Thông báo
Collapse
No announcement yet.
truyền thông qua cổng COM
Collapse
X
-
trước hết bạn phải truyền, nhận được gói dữ liệu qua cổng COM. Sau đó với số 10 bit thì đơn giản nhất là chia thành bit thấp và bit cao. Quy luật truyền, nhận do bạn tự lựa chọn. Sau đó lại ghép bit thấp, bit cao lại thì sẽ nhận được số đã truyền, nhậnRễ của sự học tập thì đắng
Quả của sự học tập thì ngọt
Comment
-
Nguyên văn bởi trimen Xem bài viếtsao bạn không chia nó thành phần chục và phần đơn vị để truyền, hoặc chia nó thành byte cao và byte thấp để truyền, sau đó PC sẽ xử lí dữ liệu truyền lên
Private Sub cmdsend_Click()
Dim bytestosend(0 To 2) As Byte
Dim buffer As Variant
bytestosend(0) = Val(TXTCAIDAT.Text) \ 100
bytestosend(1) = (Val(TXTCAIDAT.Text) \ 10) Mod 10
bytestosend(2) = Val(TXTCAIDAT.Text) Mod 10
buffer = bytestosend()
MSComm1.Output = buffer
End Sub
Private Sub Form_Load()
Form1.Caption = "DO AN TOT NGHIEP 2009 - 2012"
MSComm1.CommPort = 3
MSComm1.Settings = "9600,n,8,1"
MSComm1.InBufferSize = 1024
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.SThreshold = 0
MSComm1.OutBufferSize = 512
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
Comment
-
bạn nhầm khúc này :
Nguyên văn bởi thanhtung914 Xem bài viếtbytestosend(0) = Val(TXTCAIDAT.Text) \ 100
bytestosend(1) = (Val(TXTCAIDAT.Text) \ 10) Mod 10
bytestosend(2) = Val(TXTCAIDAT.Text) Mod 10
Nguyên văn bởi thanhtung914 Xem bài viếtbytestosend(0) = Val(TXTCAIDAT.Text) \ 100
bytestosend(1) = (Val(TXTCAIDAT.Text) Mod 100) / 10
bytestosend(2) = (Val(TXTCAIDAT.Text) Mod 100)Mod 10
bytetosend(0)=(Val(TXTCAIDAT.Text)&(0xf0))>>8 //byte cao
bytetosend(1)=(Val(TXTCAIDAT.Text))&(0x0f)
Mình ko rành VB lắm bạn xem rồi sửa lại nha.
Comment
-
Nguyên văn bởi trimen Xem bài viếtbạn nhầm khúc này :
phải như vầy thì nó mới lấy đúng số hàng chục và hàng đơn vị:
hoặc bạn có thể truyền byte cao và byte thấp của số đó vậy bạn chỉ phải truyền 2 byte.Ví dụ:
bytetosend(0)=(Val(TXTCAIDAT.Text)&(0xf0))>>8 //byte cao
bytetosend(1)=(Val(TXTCAIDAT.Text))&(0x0f)
Mình ko rành VB lắm bạn xem rồi sửa lại nha.
Comment
-
bạn đưa dữ liệu nhận vào 1 mảng, với 1 biến i khi có dữ liệu đến xảy ra ngắt, khi đó đưa dữ liệu vào phần tử thứ i của mảng và tăng i lên. Sau đó chuơng trình chính chỉ cần truy xuất vào mảng để lấy dữ liệu từ máy tính thôi. Ví dụ như sau:
int i=0;
byte buffer[100];
void nhan(void) interrupt 4 //Chuong trinh con dung ngat noi tiep
{
if(RI)
{
RI=0;
buffer[i]=SBUF;
i=i+1;
}}
Comment
-
các bạn oi giúp mình vấn đề này nhe!
trong ccs mình có đoạn code như sau:
doc_adc();
tam = read_adc();
tam = tam/2.048;
tram = tam/100;
tram = tram + 48;
tam = tam%100;
chuc = tam/10;
chuc = chuc + 48;
donvi = tam%10;
donvi = donvi + 48;
portb = tram;
hienthi();
portb = chuc;
hienthi();
portb = donvi;
hienthi(); //hthi LCD
giờ mình muốn ghép biến tram,chuc,donvi đưa vào một mảng để gửi lên máy tính (VB6), mình đã truyền từng byte nhưng khi VB6 nhận được thì 3byte bị chồng lên nhau (vd tram=1,chuc=2,donvi=3 thi khi lên VB nó hiển thị ra lable thì 1 chồng lên 2 chồng lên 3 giống mình quét led z đó)
đây là code VB6 của mình:
Private Sub Form_Load()
Form1.Caption = "DO AN TOT NGHIEP 2009 - 2012"
MSComm1.CommPort = 6
MSComm1.Settings = "9600,n,8,1"
MSComm1.InBufferSize = 1024
MSComm1.InputLen = 0
MSComm1.RThreshold = 3
MSComm1.SThreshold = 0
MSComm1.OutBufferSize = 512
MSComm1.InputMode = comInputModeBinary
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim bytetoread() As Byte
Dim buffer2 As Variant
If MSComm1.CommEvent = comEvReceive Then
buffer2 = MSComm1.Input
bytetoread() = buffer2
LBLHIENTHI.Caption = Val(bytetoread())
End If
End Sub
Các bạn xem giúp mình nha??!!
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment