led quay hasiku

Màu nền
Font chữ
Font size
Chiều cao dòng

ở trang này t sẽ giúp các bạn từng bước thực hiện phần mềm led clock. t sẽ đưa ra phương pháp,các bạn bổ sung sau đó t up 1 đoạn code đơn giản nhất để các bạn hệ thống lại.

để tạo pm led clock các bạn thực hiện từng bước:

1. hiện các con số

2. hiện các kim

3. tính toán chuyển đổi các vị trí khi quay tươgn ứng với gia strị min,sec, hour

4.đọc dữ liệu từ ic tg thực

5. xử lý dữ liệu tg thực chuyển qua kim

6 . xử lý ổn định vị trí số và kim cho hạn chế rung.

7. nghiên cứu về vấn đề chỉnh giờ.

0168 994 2537

Bước 1: hiện các con số

các con sô:12, 3, 6, 9 có 1 bảng mã hex riêng và 1 địa chỉ cho vị trí của nó. vd vòng tròn quay ta chia 240 cột thì cột 0 hiện số 12, cột 60 hiện số3, cột 120 hiện số 6, cột 160 hiện số 9.

như vậy địa chỉ của 12 là 0, của 3 là 60, của 6 là 120, của 9 là 160. khi thanh led quay, nó kiểm tra cột hiện tại nếu trùng với các địa chỉ này thì nó hiện bảnh mã hex của con số đó lên. vậy thôi, rất đơn giản.

www.ChipKool.Net

Thanks cậu,cố gắng viết tiếp những giải thuật để bọn tớ tham khảo nhé..^^

0168 994 2537

Bước 2: hiện các kim

tương tự các con số, kim sec, min, hour cũng có bảng mã hex và địa chỉ. vấn đề là làm sao chuyển từ thời gian sang địa chỉ của vong quay.

vd vị trí 30s thì địa chỉ của sec= 30*240/60 = 120. 240 là tổng số cột vòng quay, 60 là 60 khoảng chia của kim sec.

tương tự với min và hour: add_sec = sec*colum_max/60

                                      add_min = min*colum_max/60

                                      add_hour = hour*colum_max/12

xong, khi thanh led đến vị trí == add của sec, min, hour thì cho hiện kim tương ứng lên.

Khi thời gian đọc từ ds1307 thay đổi thì dựa vào công thức trên địa chỉ từng kim sẽ tự cập nhật.

NNH.Group(H.Hà)

File hex của a tận những 7733byte thì code chắc dài lắm. :-ss

Vô Ngân

viềt tiếp đi anh hạnh

0168 994 2537

Bước 3: chuyển giá trị cột hiện tại về giá trị sec, min hour.

Mục đích nhằm xác định giờ từ các vị trí kim hiển thị (chủ yếu dùng trong cảm ứng chỉnh giờ).

Từ công thức ở bước 2 dễ dàng xác định đc thời gian khi biết vị trí cột đang hiển thị (add_sec,...)

Như vậy đến đây ta đã hiển thị được các kim, con số lên giao diện và đọc giá trị từ giao diện vào được rồi.

Để thử nghiệm ta cho sec,min,hour giá trị nào đó rồi cho chạy thử xem chính xác chưa, điều chỉnh cho hiển thị chính xác rồi hãy làm tiếp bước sau.

0168 994 2537

Bước 4: Đọc dữ liệu từ ic thời gian

Vd dùng ic ds1307 giao tiếp chuẩn i2c. Tạo các hàm thư viện cho giao tiếp i2c. 

lúc khởi động load các giá trị giờ và ngày tháng lên và sau mỗi vòng thì cập nhật lại giá trị (ko cập nhật ngày để tăng tốc độ). khi có sự đièu chỉnh thời gian thì save vào ds1307,ko thì chỉ đọc ra.

mỗi lần đọc,kiểm tra xem giá trị giờ và chuyển chế đọ AM/PM và khi qua ngày mới thì cập nhật ngày tháng.

Để kiểm tra quá trình đọc ghi, khi khởi động ta ghi vào ds1307 1 giá trị rồi đọc trở lại hiện ra port, nếu giá trị khớp nhau là ds1307 đã hoạt động và giao tiếp tốt.

Sau đó cứ tiến hành với các giá trị khác.

0168 994 2537

Bước 5: Xử lý thời gian thực lên kim

Thực ra là quay lại bước 2 và dùng các giá trị đọc từ ds1307, quá trình này thực hiện ở đầu mỗi vòng quay.

Như vậy mỗi lần sec thay đổi thì add_sec thay đổi nên ta sẽ thấy kim sec di chuyển, tương tự các kim khác.

0168 994 2537

Bước 6: Xử lý ổn định

Nến xài đcơ DC và tốc độ ổn định thì ko cần bước này.

Bước bày áp dụng cho loại đcơ cần thay đổi tốc độ vd quạt máy phải thay đổi tốc độ theo yêu cầu ng dùng.

Để led đáp ứng và hiển thị đúng khi tốc độ thay đổi thì thời gian delay giữa 2 cột led được thay đổi tỉ lệ vs tốc độ nhằm đảm bảo số cột luôn = const.

Liên hệ giữa timedelay vs tốc độ theo phương trình hồi qui: đầu vào tốc độ(số lần timer tràn/vòng) đầu ra là timer delay giữa 2 cột. Để lập phương trình này đơn giản nhất dùng phương pháp nôi suy:

- làm 1 mạch đk tốc độ. tiến hành cho đcơ chạy các tốc độ khác nhau (khoảng 5 cấp tốc độ), ở mỗi cấp tốc độ ta chỉnh timer delay sao cho bề rộng nét chữ ở 1 mức xác định như nhau, như vậy sau các lần đo ta đc các cặp giá trị của timer delay ứng vs các cấp tốc độ. Sau đó lập phương trình hồi qui bậc nhất là xong.

Ở 1 số diễn đàn khác có hướng dẫn cách khác: lấy số lần timer tràn / số cột sẽ ra timer delay, lý thuyết là vậy, nếu áp dụng y như vậy đảm bảo sẽ hiển thị mất 1/4 giao diện. vì còn thời gian cho các câu lệnh xử lý, khi tốc độ xử lý của vđk càng cao thì phương pháp này đạt độ chính xác cao hơn, ưu điểm pp này là tốc độ đáp ứng nhanh sau mỗi vòng quay, khuyết điểm là do đáp ứng nhanh nên bị giật liên tục khi tốc độ thay đổi chút ít. Phương pháp dùng hồi qui ở trên có ưu điểm đáp ứng được nhiều tốc độ và hiển thị chính xác nhưng tốc độ hồi tiếp chậm (chậm nên ít bị giật) . Qua thực tế t kiểm nghiệm vs dòng 89s52 thì pp hồi qui có hiệu quả hơn và nó được áp dụng trong lcv4.1.1 trở lên.  

Bạn đang đọc truyện trên: Truyen2U.Pro

#siku