Thursday, April 17, 2014

// // Leave a Comment

006. 7-SEG-LED 2: Một số ví dụ về LED 7 thanh (Phần 1)

    Hôm nay, chúng ta sẽ cùng nhau làm một số ví dụ về LED 7 thanh để làm rõ hơn những lý thuyết đã tìm hiểu ở bài viết trước.




     Chúng ta sẽ làm 3 ví dụ nhỏ về LED 7 thanh:

Ví dụ 1: Hiển thị số 0-9 sử dụng LED 7 và điều khiển bằng một nút bấm.
Ví dụ 2: Hiển thị số tự động tăng mỗi một s từ 00-99 sử dụng LED 7 thanh đôi.
Ví dụ 3: Làm một đồng hồ đếm giờ đơn giản.
       

      Chúng ta cùng nhau làm ví dụ 1 nhé: 

Ví dụ 1: Hiển thị số 0-9 sử dụng LED 7 và điều khiển bằng một nút bấm.

      Với mỗi ví dụ mô phỏng chúng ta có 2 phần:

  •       Mắc mạch: 

      Chúng ta cần pick:
   +AT89C52
   +BUTTON
   +7SEG-COM-ANODE (LED 7 thanh anode chung)

      Rồi mắc mạch như hình vẽ:
   


  •       Phần code: download code file here
    Sau khi tạo project mới và tạo đầu ra cho file HEX chúng ta tạo file main.c và thêm vào Source Group 1:
file:main.c

    Tự nhiên hôm nay gõ code lên đây lại bị lỗi, làm mất cả một đoạn dài, giờ mình phải gõ lại.Quan sát đoạn code trên chúng ta chú ý đến phần:
unsigned char code Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
    Hàm Code7Seg[] là một hàm nhận giá trị giữa 2 dấu [x] để đưa ra giá trị tương ứng, ví dụ: Code7Seg[5] sẽ tương ứng với mã hex 0x92. Nếu không biết cách lấy mã hex cho LED 7 thanh các bạn có thể xem thêm cách lấy mã ở bài trước.
    Sau này khi viết code các bạn chỉ cần coppy đoạn code này cho 7SEG-CA(LED 7 thanh anode chung):
unsigned char code Code7Seg[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
hoặc đoạn này cho 7SEG-CC(LED 7 thanh cathode chung):
unsigned char code Code7Seg[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
sau đó dùng hàm Code7Seg[tên biến] để gọi lại hàm và gán giá trị cho nó./

Ví dụ 2: Hiển thị số tự động tăng  mỗi một s từ 00-99 sử dụng LED 7 thanh đôi.

  •       Mắc mạch: 
      Chúng ta cần pick:
   +AT89C52
   +BUTTON
   +7SEG-MX2-CA (LED 7 thanh đôi anode chung)
   +7SEG-MX2-CC (LED 7 thanh đôi cathode chung)
   +NOT(cổng Logic NOT)
      Sau đó mắc mạch như hình:
Với MX2CA:



              Chú ý: thêm cổng NOT vào 2 chân điều khiển 1 và 2
  •       Phần code: download code file here
        Chúng ta đã tìm hiểu một số cách mắc LED 7 thanh ở bài trước và chúng ta biết rằng, phương pháp hiển thị của LED 7 thanh đôi tương tự như cách quét 2 LED 7 thanh đơn dùng transistor. Tức là 2 LED sẽ không đồng thời bật lên mà sẽ luân phiên bật tắt với chu kì rất nhỏ mà chúng ta không phát hiện được. Như vậy chúng ta sẽ phải tạo ra 2 chu kì đóng ngắt điều khiển riêng rẽ cho từng LED nhờ hàm Delay_ms(1) tức là chúng ta sẽ cho vi điều khiển Delay 1 ms để liên tục bật tắt luân phiên nhau. Ngoài ra do 1 chu kì sẽ gồm 2 hàm delay 1 ms, để vi điều khiển đếm đúng chúng ta cần thêm 1 vòng lặp 500 chu kì nữa để đảm bảo 1 lần đếm đúng bằng 1s           
Ngoài ra chúng ta sẽ ôn lại một số toán tử trong lập trình C:

  • + cộng
  • - trừ
  • * nhân
  • / chia
  • % chia lấy dư ví dụ 55%10=5, đây là cách chúng ta lấy hàng đơn vị cho số đếm trong ví dụ này 

file:main.c
Sau khi viết code và xuất ra file HEX chúng ta nạp vào vi điều khiển để kiểm tra
Với MX2CC:
        Ngược với MX2CA chúng ta sẽ không nối cổng NOT vào 2 chân điều khiển 1,2 mà nối trực tiếp vào P3.0, P3.1 
        Ngoài ra chúng ta sẽ phải thêm NOT vào chân A,B,C,D,E,F,G,DP để LED 7 thanh chạy đúng.


Còn tiếp...


Thân
Phong'S

0 comments:

Post a Comment