Màn hình bảy đoạn là đơn vị hiển thị quan trọng trong Điện tử và được sử dụng rộng rãi để hiển thị các số từ 0 đến 9. Nó cũng có thể hiển thị một số bảng chữ cái ký tự như A, B, C, H, F, E, v.v. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách giao tiếp màn hình 7 đoạn với vi điều khiển 8051. Chúng tôi đang sử dụng vi điều khiển AT89S52 từ dòng 8051.
Trước khi giao tiếp, chúng ta nên tìm hiểu về hiển thị 7 đoạn. Đây là đơn vị đơn giản nhất để hiển thị số và ký tự. Nó chỉ bao gồm 8 đèn LED, mỗi đèn LED được sử dụng để chiếu sáng một đoạn đơn vị và đèn LED thứ 8 được sử dụng để chiếu sáng DOT trong màn hình 7 đoạn. Chúng ta có thể coi mỗi đoạn là một LINE, vì chúng ta có thể thấy có 7 dòng trong đơn vị, được sử dụng để hiển thị một số / ký tự. Chúng ta có thể tham chiếu từng dòng / đoạn "a, b, c, d, e, f, g" và đối với ký tự dấu chấm, chúng ta sẽ sử dụng "h". Có 10 chân, trong đó 8 chân dùng để tham chiếu a, b, c, d, e, f, g và h / dp, hai chân giữa là cực dương / cực âm chung của tất cả các đèn LED. Các cực dương / cực âm chung này bị ngắn mạch bên trong nên chúng ta chỉ cần kết nối một chân COM.
Có hai loại màn hình 7 đoạn: Cực dương chung và Cực âm chung:
Cực dương chung: Trong trường hợp này tất cả các cực Âm (cực âm) của tất cả 8 đèn LED được kết nối với nhau (xem sơ đồ bên dưới), được đặt tên là COM. Và tất cả các thiết bị đầu cuối tích cực được để lại một mình.
Cathode chung: Trong điều này, tất cả các cực dương (Anode) của tất cả 8 đèn LED được kết nối với nhau, được đặt tên là COM. Và tất cả các nhiệt âm được để yên.
Sơ đồ mạch và triển khai làm việc
Ở đây chúng tôi đang sử dụng loại Anode chung 7 đoạn vì chúng tôi cần kết nối ngược lại các đèn LED. Như chúng ta biết rằng vi điều khiển không cung cấp đủ năng lượng để phát sáng đèn LED, vì vậy chúng ta cần kết nối cực âm của đèn LED với chân vi điều khiển và cực dương của đèn LED với nguồn điện. Bạn có thể hiểu khái niệm logic tiêu cực này trong bài viết này “Giao diện LED với vi điều khiển 8051”. Bạn cũng nên đọc bài viết này để hiểu kết nối cơ bản của vi điều khiển như tinh thể và mạch thiết lập lại.
Như hình trên, sơ đồ mạch cho giao diện hiển thị 7 đoạn với vi điều khiển 8051, chúng ta đã kết nối a, b, c, d, e, f, g, h vào các chân từ 2.0 đến 2.7 có nghĩa là chúng ta đang kết nối 7 đoạn tới cổng 2 của vi điều khiển. Bây giờ, giả sử chúng ta muốn hiển thị 0, sau đó chúng ta cần phát sáng tất cả các đèn LED ngoại trừ đèn LED thuộc dòng “g” (xem sơ đồ ở trên), vì vậy các chân 2.0 đến 2.6 phải ở 0 (phải là 0 để BẬT đèn LED như cho mỗi logic âm) và chân 2,7 và 2,8 phải ở mức 1 (phải là 1 để TẮT đèn LED theo logic âm). Vì vậy, các đèn LED được kết nối với các chân 2.0 đến 2.6 (a, b, c, d, e, f) sẽ BẬT và các đèn LED kết nối với 2.7 và 2.8 (g và h) sẽ TẮT, điều đó sẽ tạo ra “0” trong 7 bộ phận. Vì vậy, chúng ta cần mẫu bit 11000000 (Chân 8 là bit cao nhất bắt đầu từ P2.7 đến P2.0) và mã HEX cho nhị phân 11000000 là “C0”. Tương tự, chúng ta có thể tính toán cho tất cả các chữ số. Ở đây, chúng tôi cần lưu ý rằng chúng tôi đang giữ "dot / h" luôn TẮT,vì vậy chúng tôi cần phải cung cấp LOGIC “1” cho nó mọi lúc. Một bảng đã được đưa ra dưới đây cho tất cả các số khi sử dụng đoạn 7 Cực dương chung.
Chữ số để hiển thị |
hgfedcba |
Mã hex |
0 |
11000000 |
C0 |
1 |
11111001 |
F9 |
2 |
10100100 |
A4 |
3 |
10110000 |
B0 |
4 |
10011001 |
99 |
5 |
10010010 |
92 |
6 |
10000010 |
82 |
7 |
11111000 |
F8 |
số 8 |
10000000 |
80 |
9 |
10010000 |
90 |
Giải thích mã
Chúng tôi đã tạo hàm ms_delay để cung cấp độ trễ tính bằng mili giây, độ trễ này thường được cung cấp trong bất kỳ chương trình vi điều khiển nào để vi điều khiển có thể hoàn thành hoạt động bên trong của nó.
Sau đó, chúng tôi đã tạo một mảng các mã hex cho 0 đến 9 (xem bảng trên), và cuối cùng chúng tôi đã gửi các mã hex đến cổng 2, được kết nối với đoạn 7 cực dương chung. Vì vậy, theo cách này, các con số được hiển thị trên màn hình 7 đoạn.
Bây giờ chúng ta chỉ có 4 cổng trong vi điều khiển và nếu chúng ta muốn hiển thị dữ liệu trong hơn 4 7 đoạn thì sao ?? Để giải quyết vấn đề này, kỹ thuật ghép kênh ra đời. Chúng ta cần ghép nhiều đơn vị 7 phân đoạn. Đồng thời đọc hiển thị 7 đoạn giao tiếp với vi điều khiển AVR.