Để hiển thị âm lịch, người thiết kế đưa ra lưu đồ chương trình như hình 3.13. Do thuật tốn tính tốn ngày, tháng, năm âm lịch dựa trên ngày, tháng, năm dương lịch khá phức tạp, vi điều khiển khơng đủ RAM. Vì thế, người thiết kế đưa ra giải thuật tính ngày, tháng, năm âm lịch dựa trên sự chênh lệch của ngày, tháng, năm âm lịch so với ngày, tháng, năm dương lịch của tháng 5 năm 2022. Cụ thể ngày âm và dương lịch trùng nhau, tháng âm lịch nhỏ hơn tháng đường lịch 1 đơn vị. Giải thuật này có ưu điểm là đơn giản nhưng đồng thời tồn tại nhược điểm là không được chính xác, người dùng phải điều chỉnh lại ngày, tháng âm lịch sau mỗi tháng hoặc khi reset chương trình.
chinh_bt ();
CHỌN CHỈNH = 1 (MODE = 1)
HIỂN THỊ NỘI DUNG BÁO CHỈNH BÁO THỨC LÊN DÒNG 1 LCD
HIỂN THỊ CHỌN GIÁ TRỊ BÁO THỨC CHỈNH LÊN LCD
NHẤN TĂNG
Đ
S
TĂNG GIÁ TRỊ BÁO THỨC ĐƯỢC CHỌN TRONG GIỚI HẠN THỜI GIAN
NHẤN GIẢM
Đ
S
GIẢM GIÁ TRỊ BÁO THỨC ĐƯỢC CHỌN TRONG GIỚI HẠN THỜI GIAN
NHẤN NÚT BÁO THỨC
Đ
S
TĂNG GIÁ TRỊ CHỌN CHỈNH (MODE++)
MODE > 3 Đ S TRỞ VỀ (BREAK;) NHẤN NÚT MODE S Đ
25
Sau khi có đầy đủ lưu đồ các chương trình con, chúng ta có được lưu đồ chương trình chính như hình 3.14. Nút nhấn reset cho phép người dùng khởi động lại hệ thống, muốn tắt buzzer báo thức thì nhấn nút Timer. Bước khởi tạo số to thực hiện như sau:
- Đầu tiên tạo ra 8 mảng các mảng này là các đoạn con f, a, b, d, c, e, g+d, i để ghép thành số to; mỗi mảng có 8 phần tử giá trị của các phần tử như hình 2.11.
- Lưu giá trị của các phần tử của từng mãng vào vùng nhớ CGRAM của LCD, đoạn f, a, b, d, c, e, g+d, i tương ứng với các số 0, 1, 2, 3, 4, 5, 6, 7.
- Tạo ma trận 10x6 có tên là lcd_so_to; 10 hàng là các số từ 0 đến 9; 6 cột là 6 đoạn con để ghép thành số tương ứng (đã trình bày ở mục 2.4).