Cách lập trình nhiều con LED 7 đoạn

Thứ hai - 09/03/2020 23:53
LED 7 đoạn có 2 loại:Chung cực dương: Mỗi đèn LED có 2 chân (1 dương 1 âm). Ở loại LED 7 đoạn này tất cả cực dương sẽ được nối chung cực dương. Để làm các đèn LED trong LED 7 đoạn sáng thì bạn chỉ cần cấp cực âm vào các chân của đèn. Với loại LED 7 đoạn này bạn chỉ cần 1 điện trở là đủ.Chung cực âm: Tương tự nhưng ngược lại và bạn cần đến 8 điện trở cho các chân dương của LED.Nguyên lý căn bản của LED 7 đoạn đó là cấp nguồn là nó sáng. Để nó sáng theo ý mình thì bạn cần phải nói ngôn ngữ Arduino cho mạch Arduino Uno hiểu, từ đó Arduino Uno sẽ điều khiển IC HC 595 (chỉ tốn 3 chân điều khiển), từ đó IC HC595 sẽ cấp nguồn cho các chân LED 7 đoạn theo yêu cầu của mình!
Cách lập trình nhiều con LED 7 đoạn

Đầu tiên, bạn cần lắp mạch như thế này để bật IC HC595 lên.

Sau đó lắp thêm như thế này để ta có thể shiftOut từ Arduino vào IC HC595

Sau đó bạn lắp tiếp như thế này hoặc tham khảo bảng chỉ dẫn lắp mạch ở dưới

LED 7 đoạn HC 595
1 (e) Q4 (4)
2 (d) Q3 (3)
4 (c) Q2 (2)
5 (dp) Q7 (7)
6 (b) Q1 (1)
7 (a) Q0 (15)
9 (f) Q5 (5)
10 (g) Q6 (6)

Bạn có thể tham khảo file ảnh từ Proteus sau.

Lập trình

/*
shiftOut ra 1 Module LED 7 đoạn đơn
*/
//chân ST_CP của 74HC595
int latchPin = 8;
//chân SH_CP của 74HC595
int clockPin = 12;
//Chân DS của 74HC595
int dataPin = 11;

// Ta sẽ xây dựng mảng hằng số với các giá trị cho trước
// Các bit được đánh số thứ tự (0-7) từ phải qua trái (tương ứng với A-F,DP)
// Vì ta dùng LED 7 đoạn chung cực dương nên với các bit 0
// thì các đoạn của LED 7 đoạn sẽ sáng
// với các bit 1 thì đoạn ấy sẽ tắt

//mảng có 10 số (từ 0-9) và 
const int Seg[10] = {
  0b11000000,//0 - các thanh từ a-f sáng
  0b11111001,//1 - chỉ có 2 thanh b,c sáng
  0b10100100,//2
  0b10110000,//3
  0b10011001,//4
  0b10010010,//5
  0b10000011,//6
  0b11111000,//7
  0b10000000,//8
  0b10010000,//9
};
void setup() {
  //Bạn BUỘC PHẢI pinMode các chân này là OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() { 
  static int point = 0;
  //shiftout - start
  digitalWrite(latchPin, LOW);
  //Xuất bảng ký tự ra cho Module LED
  shiftOut(dataPin, clockPin, MSBFIRST, Seg[point]);  
  digitalWrite(latchPin, HIGH);
  //shiftout - end
  point = (point + 1) % 10; // Vòng tuần hoàn từ 0--9
  delay(500);//Đợi 0.5 s cho mỗi lần tăng số
}

Tổng số điểm của bài viết là: 5 trong 1 đánh giá

Xếp hạng: 5 - 1 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

Thống kê
  • Đang truy cập2
  • Hôm nay136
  • Tháng hiện tại3,212
  • Tổng lượt truy cập1,339,540
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây