Bạn dùng 74595 cũng được nhưng thử nghiên cứu về phần quét led xem thế nào.
Về chương trình bạn viết còn khá nhiều vấn đề:
Đọc ADC 10bit mà ban đầu bạn chỉ khởi tạo value là int8. Tôi không biết trình dịch có tự sửa không nhưng khi đã lập trình thì mọi thứ phải thật rõ ràng mới dễ dàng quản lý được. "Char value" là như thế nào mình cũng chưa hiểu, hjhj. Nói tóm lại là sao tôi thấy cái "value" của bạn linh tinh quá, chỗ thì char, chỗ thì int8, chỗ thì int16.
- Theo công thức tính nhiệt độ của bạn thì giá trị từ 0~500 độ. LM35 mình mới chỉ thấy loại cao nhất là 150 độ thôi. Nhưng đó chưa quan trọng lắm vì khi hiển thị sai cũng sẽ dễ hiệu chỉnh thôi. Vấn đề là chúng ta sẽ test như thế nào. Để cho chắc ăn tôi sẽ thử riêng với cái hàm hiển thị của bạn trước xem sao. Tức là một chương trình chính sẽ chỉ có hàm hiển thị, sau đó ta đặt vào một tham số xem nó có chạy không đã. Từng bước một, bạn sẽ tối ưu hóa được thuật toán và code.
Một vấn đề nữa là thời gian cập nhật. Bạn nên để ít nhất là nửa giây để người ta còn đọc được. Bởi vì cảm biến loại này đôi khi bị nhiễu hoặc giá trị thay đổi trong phạm vi nhỏ, nếu ta cập nhật nhanh quá led sẽ nhảy lung tung lên, hơi khó đọc đấy.
Tôi đã làm một project khá đơn giản chỉ dùng pic16 với led7 đoạn thôi. Dùng phương pháp quét hiển thị 2 led, bạn có thể mở rộng ra thoải mái, mong bạn tham khảo trong luồng này
|