PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 29-01-2007, 02:12 PM   #1
huychuongn
Nhập môn đệ tử
 
Tham gia ngày: Jan 2007
Bài gửi: 1
:
Trích:
Nguyên văn bởi hatuan296 View Post
Mình có làm 1 đồng hồ số dùng Pic 18f458 , kết nối DS1307 qua i2c . hiển thị trên lcd . mình đã làm cho chạy , nhưng lại hiển thị không đúng kết quả . anh em nào đã từng làm cái này rồi thì giúp mình nha . Lỗi cụ thể như sau ;

- mình nhập giá trị ban đầu : $00,$00,$00,$07,$1B,$01,$07,$90
' Sec Min Hr Day D M Y Control

giây(sec) : 00
phút(min) : 00
giờ (hr) : 00
thứ (Day) : 7.
ngày (D) : 27
tháng(M) : 1
năm(y):7

lcd hiển thị như sau :

thu 7 27-1-7
0:0:0
h m s

mình nhập vào DS1307 thì ok . đọc ra thì cũng ok luôn . nhưng khi bắt đầu đếm . thì con số s chỉ đếm đến 9 thôi , rồi lại nhảy thành số 16 . ngay cả con m và con h cũng vậy . Khi mình nhẩm tính thì đúng là con s nhảy 60 lần thì con m nhảy 1 lần . nhưng hiển thị thì không đúng . có khi con s lên đến hàng 80 luôn .

Mình nghĩ chắc từ số 9 con DS1307 đã bỏ qua A , B , C , D , E , F để đếm đến 16 . Nhưng tại sao lại như vậy ? làm sao đế cho hiển thị đúng ? Và khi nạp lần đầu cho con Ds , thì mình nên để giá trị là gì ? thập phân hay nhị phân hay hệ 16 ? . khi mình đọc ra là số gì ?
mong bạn nào rành thì giúp mình nha . mình vô cùng cảm ơn .

À, còn 1 điều nữa . mình có cần phải đọc ghi theo thứ tự không ? và nếu có thì mình phải đọc cái gì trước , cái gì sau ?
ghi cái gì trước , cái gì sau ?
Bạn xem lại đi vì con DS 1307 nhận và phát mã BCD chứ không phải mã DEC bạn phải đổi lại cho đúng để hiển thị.,.
huychuongn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-01-2007, 04:45 PM   #2
hatuan296
Làm quen với PIC
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
:
Trích:
Nguyên văn bởi huychuongn View Post
Bạn xem lại đi vì con DS 1307 nhận và phát mã BCD chứ không phải mã DEC bạn phải đổi lại cho đúng để hiển thị.,.
mình đã nói , khi ghi con DS , mã nào cũng được ( mình đã kiểm tra với mã BCD , HEX , DEC .) còn khi đọc ra , mình nên chuyển sang Hex là để tương thích với LCD . chứ đâu có nói là bắt buộc khi đọc ra phải là số HEX đâu ? . mà vấn đê này đã được giải quyết xong . dù sao cũng cảm ơn bạn đã quan tâm . nếu bạn có thời gian . mong bạn xem giúp đề tài mình vừa gửi lên về mạch đồng hồ có dùng DS1307 .
chào bạn .
hatuan296 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-01-2007, 07:40 PM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn đã xin ý kiến những ai đã từng làm với DS1307, nhưng những người góp ý lại không được bạn hoan nghênh. Tôi đã viết tutorial cho dsPIC sử dụng DS1307, cũng đã viết tutorial cho dsPIC sử LCD, nghĩa là tôi không lạ lẫm gì với những thứ này.

Lời khuyên của tôi là bạn đọc kỹ datasheet, chỗ nào không hiểu thì hãy hỏi, như vậy bạn sẽ nắm được nó rõ hơn.

Bạn chưa hiểu rõ về số BCD thì làm sao phân biệt được nó với số hex, như vậy làm sao có thể khẳng định là nạp số BCD và số hex đều được (tôi giả sử bạn ngụ ý là đều cho giá trị đúng). BCD là binary-coded decimal, nghĩa là số thập phân mã hóa bằng nhị phân, mỗi chữ số nhị phân sẽ dùng 4 bit để mã hóa, như vậy các tổ hợp cho các giá trị A, B, C, D, E, và F sẽ không được dùng.

Số thập phân 10 có mã hex là 0x0A, và mã BCD là 0x10. Bạn thử nạp 0x0A và 0x10 xem có ghi được cùng kết quả vào một thanh ghi nào đó của DS1307 hay không?

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-01-2007, 10:58 PM   #4
hatuan296
Làm quen với PIC
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
:
Trích:
Nguyên văn bởi namqn View Post
Bạn đã xin ý kiến những ai đã từng làm với DS1307, nhưng những người góp ý lại không được bạn hoan nghênh. Tôi đã viết tutorial cho dsPIC sử dụng DS1307, cũng đã viết tutorial cho dsPIC sử LCD, nghĩa là tôi không lạ lẫm gì với những thứ này.

Lời khuyên của tôi là bạn đọc kỹ datasheet, chỗ nào không hiểu thì hãy hỏi, như vậy bạn sẽ nắm được nó rõ hơn.

Bạn chưa hiểu rõ về số BCD thì làm sao phân biệt được nó với số hex, như vậy làm sao có thể khẳng định là nạp số BCD và số hex đều được (tôi giả sử bạn ngụ ý là đều cho giá trị đúng). BCD là binary-coded decimal, nghĩa là số thập phân mã hóa bằng nhị phân, mỗi chữ số nhị phân sẽ dùng 4 bit để mã hóa, như vậy các tổ hợp cho các giá trị A, B, C, D, E, và F sẽ không được dùng.

Số thập phân 10 có mã hex là 0x0A, và mã BCD là 0x10. Bạn thử nạp 0x0A và 0x10 xem có ghi được cùng kết quả vào một thanh ghi nào đó của DS1307 hay không?

Thân,
vấn đề nào , câu nói nào của mình mà bạn cho là đã " không hoan nghênh " những người giúp mình ? Còn việc xem datasheet , đương nhiên là mình đã xem rồi , và đã không hiểu nên mới lên diễn đàn nhờ giúp đỡ .chứ nếu đã hiểu thì nói làm gì ? Đồng ý , việc bạn yêu cầu mình xem datasheet cũng là một gợi ý hay . nên mình cũng đã cảm ơn bạn đấy thôi . Nếu bạn còn chưa vừa lòng nữa thì mình cũng đành chịu .

Còn về các tên gọi của hệ thống số đếm . có thể mình đã nắm không rõ . nhưng chắc chắn mình đã nạp cho con DS1307 , phần giờ những loại số sau :

ví dụ , nạp số 10 - tương ứng là 10 giờ
$10 - hex
%00010000 - Binary
16 - decimal
thì con DS khi đọc ra vẫn là 10 h . với điều kiện phải chuyển con số vừa đọc từ DS sang Hex rồi mới xuất ra LCD . Để tương thích với lcd . nếu không thì LCD sẽ hiển thị 1 con số khác ( chuyện này mình cũng đã từng nói ). Việc này mình đã thử đi , thử lại nhiều lần .

Và như mình ĐÃ nói . mọi vấn đề mấy hôm nay mình hỏi đều đã được giải quyết xong , bởi vậy , chúng ta không nên bàn cãi thêm về các con số , tên gọi của chúng nữa mà làm gì .. Mình cũng đã đưa đề tài đó lên để anh em , những người mới chưa biết gì về pic và RTC có thêm thông tin để tham khảo .

bài thực hành này mình đã làm với ngôn ngữ PICBASIC PRO .
.
hatuan296 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-01-2007, 02:02 AM   #5
vnbtech
Đệ tử 2 túi
 
Tham gia ngày: Dec 2006
Nơi Cư Ngụ: La Jolla, San Diego. Heaven on earth
Bài gửi: 26
:
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
vnbtech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-02-2007, 11:08 AM   #6
newuser
Đệ tử 4 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 66
:
Trích:
Nguyên văn bởi vnbtech View Post
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ứ?

thay đổi nội dung bởi: newuser, 02-02-2007 lúc 11:20 AM.
newuser vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ð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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Làm ơn giúp đỡ lập trình PIC với DS1307, EEPROM enti PIC - Thiết kế và Ứng dụng 1 20-11-2006 06:19 PM


Múi giờ GMT. Hiện tại là 11:49 AM.


Đượ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