có một cách đơn giản mà hiệu quả hơn, tôi nghĩ bạn có thể áp dụng. Đó là lấy số thực nhân với 10 (nếu muôn sau dấu , 1 chữ số có nghĩa) hoặc nhân 100 (nếu 2 chữ số có nghĩa) rồi truyền nó theo số nguyên lên máy tính. máy tinh nhận được lại chia cho 10 hay 100 thành số thực. Ví dụ 2,3 thì truyền thành 23 hoặc 230.
Nếu là giá trị điẹn áp từ 0 - 5V thì bạn không nên truyền theo đơn vị Volt mà truyền theo mV (tức là nhân với 1000). 2.3 V thì thì truyền thành 2300.
VC++ và COM
Collapse
X
-
xx // start byte
0x00 // hi byte
0x01 // low byte
(yy) // có thể thêm ki tự '.' nếu muốn
0x00 // hi byte
0x02 // low byte
zz // stop byte
các dòng này em chưa hiểu ý nghĩa của nó lắm bác ạ, sao có xx, yy, zz là gì vậy ạ??
Leave a comment:
-
cảm ơn các bác nhiều, em hiểu ý bác rồi ạ. em đang tra trong Codevision mà chưa ra gì cả bác ạ.
hight_byte = n >> 8; // dịch phải 8 bits để làm gì ạ??? tại sao mình cần phân biệt 2 kiểu low và hight byte ạ??? đa tạ bác
Leave a comment:
-
để convert số nguyên thành string bạn dùng thư viện có sẵn trong trình biên dịch. Tôi chưa lập trình với AVR bao giờ nên không thể chỉ cho bạn cụ thể (đành nhờ các pro về AVR), nhưng thông thưong với C các hàm này hay nằm trong thư viện "stdlib.h" và hàm convert thường là itoa(...) : số nguyên - > string, hay ftoa(...): số thực -> string.
một số nguyên thương được biểu diễn thành 16bit = 2bytes.
ví dụ
2007 = 00000111 11010111 (mô tả theo nhị phân) = 07 D7 (mô tả theo hexa)
theo đó 07 là hight byte
và D7 gọi là low byte
số nguyên 2 = 0x0002 và 1 = 0x0001 -> chắc bạn đã hiểu về khung bản tin ở trên.
vói một số nguyên n bạn có thể lấy hight_byte và low_byte của nó theo bằng cách
hight_byte = n >> 8; // dịch phải 8 bits
low_byte = n & 0xff; hoặc chỉ cần: low_byte = n nếu bạn khai báo low_byte có kiểu là byte.
Leave a comment:
-
Bạn đọc trong help của trình dịch CodeVision sẽ có. Lâu rồi tôi không làm nên không nhớ chính xác. Còn để làm tỉ mỉ phần truyền thông thì cũng được nhưng làm ngay lúc này với bạn thì có thể hơi khó.Nguyên văn bởi nghoang Xem bài viếtcách convert một giá trị thành string ta làm cách nào vậy các bác?? em cảm ơn các bác nhiều!!!
hight byte và low byte là gì ạ???
em xin lỗi vì hỏi nhiều quá, nhưng thực sự em chưa nắm được nội dung của bác encoder chỉ ạ. cảm ơn các bác
Chúc bạn thành công
Leave a comment:
-
cách convert một giá trị thành string ta làm cách nào vậy các bác?? em cảm ơn các bác nhiều!!!
hight byte và low byte là gì ạ???
em xin lỗi vì hỏi nhiều quá, nhưng thực sự em chưa nắm được nội dung của bác encoder chỉ ạ. cảm ơn các bác
Leave a comment:
-
tôi chẳng biết gì về AVR cả nhưng nếu bạn muốn truyền một số thực thì cũng có nhiều cách, cách hao tốn tài nguyên nhất là convert nó thánh string rồi truyền lên PC, PC đọc string rồi lại convert thành số thực. Có thể dùng cách truyền thành 2 số nguyên, số thứ nhất hiển thị giá trị trước dấu "," và số tiếp theo là phần thập phân. PC nhận được lại ghép chúng vào thành số thực. Ví dụ muốn truyền 1.2 chẳng hạn bạn truyền một khung như sau:
xx // start byte
0x00 // hi byte
0x01 // low byte
(yy) // có thể thêm ki tự '.' nếu muốn
0x00 // hi byte
0x02 // lơ byte
zz // stop byte
còn nếu muốn kiểm tra PC nhận có chính xác hay không thì bạn có thể test bằng cách cho AVR truyền một chuỗi hằng số nào đó. nếu PC nhận được chuỗi hằng số đúng như vậy thì là chính xác.
Leave a comment:
-
Vậy bạn tìm hiểu kỹ tài liệu đó là có thể làm được. Xong một lưu ý nữa, bạn hãy chuyển từ giá trị điện áp đọc được (đọc giá trị kênh analog và quy đổi) thành xâu ký tự để truyền. Khi truyền nên thêm hai kí tự kết thúc là <CR><LF> để việc đọc dữ liệu trên máy tính được tiến hành dễ dàng hơn. Hi vọng bạn sẽ làm đượcNguyên văn bởi nghoang Xem bài viếtvâng đúng rồi bác ạ
Leave a comment:
-
Thực chất vấn đề của bạn là đọc giá trị từ một kênh analog của AVR sau đó chuyển thành điện áp và gửi lên qua Max232 qua cổng COM lên máy tính và hiển thị trên máy tính phải không?Nguyên văn bởi nghoang Xem bài viếtcharacter from the serial port called ReadByte.
ví dụ 2 là để đọc một chữ (ký tự) chứ ko phải đọc giá trị truyền vào từ AVR=> MAX => COM bác ạ..
Em đang cần truyền 1 giá trị (dạng số thực ví dụ 1.2 volt, 2.3volt từ cảm biến => ADC => AVR> MAX=>COM bác ạ)
xin chờ sự giúp đỡ từ các bác..
Leave a comment:
-
Ý em là em nhận vào chứ ko phải truyền ra COM ạ.Nguyên văn bởi techpro Xem bài viếtNếu trên máy tính thì để thử nghiệm truyền thông mình thường nối chân 2 và chân 3 của cổng COM rồi thử truyền gì thì nhận được ấy. Bạn thử làm như vậy với vi điều khiển nghĩa là nối chân RxD và TxD của vi điều khiển với nhau sau đó thử truyền thông xem nhé. Chúc bạn thành công
Vậy có cách nào để biết chương trình nhận (đọc ) từ COM của mình là đúng bác nhĩ???
đa tạ sự trợ giúp của bác
Leave a comment:
-
character from the serial port called ReadByte.
ví dụ 2 là để đọc một chữ (ký tự) chứ ko phải đọc giá trị truyền vào từ AVR=> MAX => COM bác ạ..
Em đang cần truyền 1 giá trị (dạng số thực ví dụ 1.2 volt, 2.3volt từ cảm biến => ADC => AVR> MAX=>COM bác ạ)
xin chờ sự giúp đỡ từ các bác..
Leave a comment:
-
Nếu trên máy tính thì để thử nghiệm truyền thông mình thường nối chân 2 và chân 3 của cổng COM rồi thử truyền gì thì nhận được ấy. Bạn thử làm như vậy với vi điều khiển nghĩa là nối chân RxD và TxD của vi điều khiển với nhau sau đó thử truyền thông xem nhé. Chúc bạn thành côngNguyên văn bởi nghoang Xem bài viếtbác ơi có cách nào giả xung cho chân COM nhận vào ko?? vì em chết con MAX rồi, hichic (em tính giả tín hiệu gửi tới COM) rồi sáng mai đi mua gấp con MAX, đa tạ
Leave a comment:
-
Cho em hỏi thêm chút, bằng cách nào để mình test giá trị đã đọc đúng chưa ạ???? thankss bác nhiều
Leave a comment:
-
bác ơi có cách nào giả xung cho chân COM nhận vào ko?? vì em chết con MAX rồi, hichic (em tính giả tín hiệu gửi tới COM) rồi sáng mai đi mua gấp con MAX, đa tạ
Leave a comment:
dự án của bạn Tra theo mã, xem datasheet và đặt hàng trực tuyến. MicrochipROHMEpsonTaejin
Đặt hàng & tư vấn
Hà Nội024.3640 8561
TP.HCM028.3811 9870
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Bài viết mới nhất
Collapse
There are no results that meet this criteria.
Leave a comment: