Giao tiếp I2C với RTC DS1307
Bus của I2C từ DS1307 và 24Cxx được nối với một jumper giúp ta có thể nối với bất kỳ 2 bít của hai cổng bất kỳ của AVR trên KIT bởi một dây nối. Khởi tạo cho LCD và DS1307 như sau: ...
Bus của I2C từ DS1307 và 24Cxx được nối với một jumper giúp ta có thể nối với bất kỳ 2 bít của hai cổng bất kỳ của AVR trên KIT bởi một dây nối.
Khởi tạo cho LCD và DS1307 như sau:
Trong tab các chip ta chọn chíp DS1307, check vào Enabled để xác định sử dụng DS1307 và trong ô Square Wave Output ta check vào ô Enabled, trong list Freq: Chọn 1 Hz để khởi tạo cho chân output của DS1307 cứ 1 s có một xung ra, trong mạch chân đó nối với 1 led và khởi tạo vừa rồi làm cho led đó nhấp nháy với tần số 1 Hz. Sau đó chọn File → Save, Generate and Exit.
Được cửa sổ soạn thảo code.
Sơ đồ làm việc với DS1307 như sau:
Coding như sau:
Bổ xung thư viện delay.h vào đầu chương trình.
Ngay trước vòng while(1) trong hàm main bổ xung câu lệnh đặt thời gian và ngày tháng cho RTC. I2C, DS1307, LCD đã khởi tạo bằng CodeWinzard AVR.
Để có thể đọc được thời gian ta dùng hàm rtc_get_time() và rtc_get_date có sẵn trong thư viện DS1307.h.( Để tham khảo các hàm có thể mở Help tương tự như tham khảo các hàm của LCD ở bài trước.)
Chúng ta phải khai báo 3 biến để lưu thông tin về thời gian là giờ h; phút m; giây s và 3 biến lưu thông tin về ngày tháng là ngày day; tháng month; năm year ngay phía trước hàm main như sau:
Để hiển thị các số ra LCD ta phải viết thêm một hàm LCD_putnum như sau:
Chương trình chính trong vòng while(1) như sau:
Dịch và nạp chương trình, xem kết quả.