Trích:
Nguyên văn bởi vnbtech
anh HaTuan,
Co' the anh lam du'ng nhung ca'ch goi cua anh bi. lan lo^.n. Ta ca nhung gi anh chuyen de nap co con DS1300 va doc no ra the hien thi, la theo chuan BCD het. May ban trong nay chi? mong anh hieu ro va dung co' lan lon giua HEX/DEC and BCD....
chuc mung anh da lam duoc.
VNBTECH
|
ừ, đúng là bạn Tuấn lẫn lộn các dạng số rồi. Rõ ràng là bạn ghi vào DS1307 số nào cũng được(HEX,BCD,DEC), miễn là đừng vượt quá giá trị cho phép của thanh ghi đó, và với DS1307, nó không phân biệt dạng số bạn nạp vào mà đối với nó, nó
chỉ hiểu đó là BCD. Giá trị bạn đọc ra cũng vậy, dạng số mà nó xuất ra cho bạn là BCD, do đó đọan code chuyển từ HEX-->BCD của bạn(nếu bạn có dùng) là thừa.
Bạn đã từng tiếp xúc với RTC DS12887 cũng của Dallas chưa? trong thanh ghi chức năng của nó có một bit cho phép ta chọn dạng số nhập vào và đọc ra là BCD hay HEX đấy!
phần hiển thị của bạn là LCD thì không thể có chuyện để nguyên con số đọc được đem xuất. CPU của LCD không giải mã bảng mã nào khác ngoài ASCII. Lấy ví dụ khi muốn xuất số 1 ra LCD, bạn phải đẩy số 31Hexa (số Hexa theo quan điểm của Vi điều khiển) lên LCD (số 31-ASCII theo quan điểm của LCD). Các số từ số 00Hexa đến số 99hexa (mã BCD - DS1307) được VĐK đọc (VĐK không nghĩ đó là BCD đâu nhé, đối với nó chỉ là HEXA), rồi xuất lên LCD (đối với LCD cũng vậy,chỉ có ASCII thôi). Bạn hiểu rồi chứ?