Seven Segment là một giải pháp rất phổ biến trong việc hiển thị số (0,1,2,...9) và kí tự đơn giản (dấu chấm, dấu than...) trên các hệ thống bảng điện tử. Ý tưởng chung là chỉ bằng việc bật và tắt các vị trí thích hợp trong bảng các bóng đèn bạn có thể hiển thị kí tự tương ứng. Đây là một phương pháp khá đơn giản nhưng cực kì hiệu quả. Hầu như ở mọi nơi bạn đều có thể thấy tính khả dụng của nó. Trong lập trình cũng vậy, bạn sẽ dễ dàng thấy bóng dáng giải pháp này thấp thoáng đâu đó trong các triển khai đồ họa cho Game, vẻ font chữ... cụ thể một chút chúng ta sẽ xem xét một yêu cầu như sau: cho một movie làm sao để tracking (đánh số ID các đối tượng di chuyển) và vẽ lên màn hình tại vị trí các đối tượng đó số tương ứng của nó. Có thể bạn sẽ cười mỉa mai, thiếu gì các thư viện hỗ trợ bạn thiết lập hệ thống font và vẽ chử lên màn hình :) Vậy bạn nghĩ sao khi nhiệm vụ đặt ra không dành cho máy tính để bàn mà cho các thiết bị nhúng với sự hạn chế về thư viện và cần bạn tự xây dựng các giải thuật cho riêng mình :p. Phương pháp đầu tiên tôi nghĩ tới đó là 7 segment. Thay cho một bảng bóng đèn bạn cần một ma trận với các phần tử chỉ hai giá trị 1 và 0. Trong trường hợp này tôi gọi nó là Mask. Tùy theo số mà bạn cần hiển thị bạn sẽ set giá trị 1 và 0 thích hợp cho Mask. Việc tiếp theo chỉ là quét ảnh tới vị trí cần vẽ rồi áp Mask vào để tô màu những điểm ứng với 0 hoặc 1 tùy bạn. Sau khi quét toàn bộ Mask là bạn đã vẽ xong một số. Với giá trị ID lớn gồm nhiều số thì chỉ cần tách các phần tử ra bằng giải pháp đã nêu trong bài viết trước rồi lặp lại quá trình vẽ này.

Hình trên đây minh họa cho cấu trúc của Mask 6x8 với ô đen tương ứng với giá trị (1) trắng tương ứng giá trị (0).

 

-- BIOZ --