Nội dung chính, đề nghị nắm

Điều khiển một con LED 7 đoạn nhiều loại đơn, một số loại kép hay một số loại tứ cùng với Arduino là điều rất là đơn giản. Bạn có thể tham khảo các bài viết sau giả dụ chỉ ý muốn lập trình điều khiển 1 bé LED 7 đoạn:

Tuy nhiên, nhằm điều khiển nhiều hơn 1 chú LED 7 đoạn thì ta không thể sử dụng hướng dẫn ở 2 bài chỉ dẫn trên. Vì chưng sao? Là bởi vì chúng ta không đủ "chân" cho những chú LED sản phẩm công nghệ 2, 3,... Trong phạm vi nội dung bài viết này, tớ bao gồm tham khảo một số hình ảnh, tin tức từ 2 nội dung bài viết kia để chúng ta dễ dàng cố gắng bắt. Đồng thời, trước khi bắt đầu, bạn bắt buộc phải ghi nhận về shift
Out. Vày vậy, nếu không biết về shift
Out, ý kiến đề xuất bạn tham khảm bài viết Điều khiển 8 đèn led sáng theo ý thích của bạn, dễ dàng hay khó ?.

Bạn đang xem: Điều khiển led 7 đoạn

Được rồi, đi thẳng vào vấn đề chính ngày từ bây giờ nào, họ sẽ tìm hiểu cách tinh chỉnh và điều khiển 1 đèn led chiếu sáng 7 đoạn sang 1 chú HC595 được điều khiển bởi Arduino. Tiếp nối sẽ là 2 chú HC 595, và cứ như thế các bạn sẽ làm được nhiều LED 7 đoạn hơn.

Phần cứng

1 vài chai nước suối (uống nước ngọt những quá có nguy cơ tiềm ẩn tiểu đường)
*

Video demo

Giới thiệu led 7 đoạn

Bạn rất có thể hiểu một phương pháp vô cùng dễ dàng về LED 7 đoạn như sau:

LED 7 đoạn có 2 loại:

Chung rất dương: mỗi đèn LED có 2 chân (1 dương 1 âm). Ở nhiều loại LED 7 đoạn này tất cả cực dương sẽ được nối bình thường cực dương. Để làm các đèn LED vào LED 7 đoạn sáng thì bạn chỉ cần cấp rất âm vào các chân của đèn. Với loại LED 7 đoạn này bạn chỉ việc 1 năng lượng điện trở là đủ.Chung rất âm: tựa như nhưng trái lại và bạn cần đến 8 năng lượng đ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 kia là cấp nguồn là nó sáng. Để nó sáng tự động thì bạn phải nói ngôn ngữ Arduino mang lại mạch Arduino Uno hiểu, từ đó Arduino Uno sẽ điều khiển và tinh chỉnh IC HC 595 (chỉ tốn 3 chân điều khiển), từ đó IC HC595 sẽ cung cấp nguồn cho những chân LED 7 đoạn theo yêu ước của mình!

Lắp mạch

Vì tớ đã yêu cầu các bạn xem về nội dung bài viết shift
Out trước lúc đọc phần bài này đề xuất trong phạm vi nội dung bài viết tớ sẽ không nhắc lại về shift
Out. Nếu như khách hàng đã quên về shift
Out, bạn có thể tham khảo tại nội dung bài viết Điều khiển 8 đèn led chiếu sáng sáng theo ý muốn của bạn, dễ hay cạnh tranh ?

Đầu tiên, bạn phải lắp mạch như vậy này để bật IC HC595 lên.

Sau đó lắp thêm như vậy này nhằm ta rất có thể shift
Out từ bỏ Arduino vào IC HC595

Sau đó bạn lắp tiếp như vậy này hoặc tìm hiểu thêm bảng hướng dẫn lắp mạch làm việc dưới

LED 7 đoạnHC 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

/*shift
Out ra 1 Module LED 7 đoạn đơn*///chân ST_CP của 74HC595int latch
Pin = 8;//chân SH_CP của 74HC595int clock
Pin = 12;//Chân DS của 74HC595int data
Pin = 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 đặt số thứ từ (0-7) từ đề nghị qua trái (tương ứng cùng với A-F,DP)// bởi ta dùng LED 7 đoạn phổ biến cực dương buộc phải với những bit 0// thì các đoạn của LED 7 đoạn đang sáng// với các bit 1 thì đoạn ấy vẫn tắt//mảng bao gồm 10 số (từ 0-9) với const int Seg<10> = 0b11000000,//0 - những thanh từ bỏ a-f sáng 0b11111001,//1 - chỉ tất 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 pin
Mode những chân này là output đầu ra pin
Mode(latch
Pin, OUTPUT); pin
Mode(clock
Pin, OUTPUT); pin
Mode(data
Pin, OUTPUT);void loop() static int point = 0; //shiftout - start digital
Write(latch
Pin, LOW); //Xuất bảng ký tự ra mang đến Module LED shift
Out(data
Pin, clock
Pin, MSBFIRST, Seg); digital
Write(latch
Pin, HIGH); //shiftout - over point = (point + 1) % 10; // Vòng tuần hoàn từ 0--9 delay(500);//Đợi 0.5 s cho từng lần tăng sốBạn rất có thể tải về file Proteus với file hex của lấy ví dụ trên tại đây.

Tiếp theo sẽ là 2 Module LED 7 đoạn đối chọi và chưa dừng lại ở đó nữa trong tương lai

Kể từ con IC HC595 thứ hai trở đi, bạn sẽ lắp như thế này. Con thứ hai thì mắc vào bé thứ 1, con thứ 3 thì mắc vào con thứ 2,... Tiếp nối xem phần lập trình của tôi để desgin bảng số. Tớ bao gồm viết một hàm dễ dàng để sau này bạn lắp từng nào thì tùy ý hehe. Bé sau vẫn lắp trước bé liền kề nó nhé!

LED 7 đoạnHC 595 vật dụng 2
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)
HC 595 thứ 1HC 595 máy 2
1111
1212
914

Bạn có thể tham khảo giải pháp lắp từ bỏ proteus

/*shift
Out ra 1 Module LED 7 đoạn đơn*///chân ST_CP của 74HC595int latch
Pin = 8;//chân SH_CP của 74HC595int clock
Pin = 12;//Chân DS của 74HC595int data
Pin = 11;// Ta sẽ xây dựng dựng mảng hằng số với các giá trị đến trước// những bit được khắc số thứ trường đoản cú (0-7) từ phải qua trái (tương ứng cùng với A-F,DP)// bởi vì ta dùng LED 7 đoạn chung cực dương yêu cầu với các bit 0// thì các đoạn của LED 7 đoạn vẫn sáng// với các bit 1 thì đoạn ấy đã tắt//mảng có 10 số (từ 0-9) cùng const byte Seg<10> = 0b11000000,//0 - các thanh từ bỏ a-f sáng sủa 0b11111001,//1 - chỉ có 2 thanh b,c sáng sủa 0b10100100,//2 0b10110000,//3 0b10011001,//4 0b10010010,//5 0b10000010,//6 0b11111000,//7 0b10000000,//8 0b10010000,//9;void setup() //Bạn BUỘC PHẢI pin
Mode những chân này là output đầu ra pin
Mode(latch
Pin, OUTPUT); pin
Mode(clock
Pin, OUTPUT); pin
Mode(data
Pin, OUTPUT);void Hien
Thi
LED7doan(unsigned long Giatri, byte So
Led = 2) byte *array= new byteLed>; for (byte i = 0; i = 0; i--) shift
Out(data
Pin, clock
Pin, MSBFIRST, Seg>); digital
Write(latch
Pin, HIGH); free(array);void loop() static unsigned long point = 0; Hien
Thi
LED7doan(point, 2); point = (point + 1) % 100UL; // Vòng tuần trả từ 0--99 delay(500);//Đợi 0.5 s cho mỗi lần tăng sốBạn hãy download về file proteus và file hex của lấy ví dụ này trên đây.

Xem thêm: Hộp màu 150 chi tiết - giá tốt, giảm giá đến 40%

Lời kết

Càng nghiên cứu và phân tích Arduino nhiều bạn sẽ cảm thấy nó cực kỳ hay (giống như tôi bây giờ). Càng nghiên cứu rành rọt hầu hết thứ cơ bản bạn sẽ dễ dàng được nhiều thứ phức tạp. Ở nội dung bài viết này, hồ hết điều dễ dàng là nguyên tắc led 7 đoạn rồi shiftout. Tớ tập hợp lại shiftout + những led 7 đoạn. Hehe, sau này sẽ còn những thứ phối kết hợp lại lắm. Chỉ cần bạn cần mẫn nghiên cứu vãn và sáng tạo thôi!

Trong bài bác hướng dẫn này, các bạn sẽ được học cách tiếp xúc led 7 đoạn cùng với Arduino Uno. Tôi đã hướng dẫn chúng ta cách thực hiện led 7 đoạn để liên kết với Arduino với viết chương trình hiển thi các số thập phân từ 0 đến 9 trên led 7 đoạn. Chương trình được viết theo nhiều kiểu nhắm giúp cho mình làm quen với linh hoạt rộng khi lập trình.


Chuẩn bị

Phần cứng:

Tên linh kiệnSố lượng
Arduino Uno1
Led 7 đoạn (Cathode chung)1
Điện trở 220Ω7
Breadboard1
Dây cắm Breadboard10
Tụ điện47u
F
1

Phần mềm: Arduino IDE

Giới thiệu Led 7 đoạn

Led 7 đoạn tuyệt Led 7 thanh (Seven Segment Display)là 1 linh kiện điện tử đượcdùng khá nhiều trong các ứng dụng để hiển thị số, ký tự, chỉ thị những trạng thái trong các loại sản phẩm từ gia dụng đến công nghiệp.

*

Chân 3 và 8 là 2 chân phổ biến được nối nguồn Vcc (nối ngắn mạch lại với nhau , tiếp đến nối bình thường với chân anode của 8 led đơn), vậy ý muốn led nào đó sáng thì rất cathode của led đó buộc phải được tích mức rẻ .

Loại Cathode chung (Chân – những led được mắc thông thường với nhau)

*

Hoạt động của led 7 đoạn

Giả sử bây giờ chúng ta mong muốn hiển thị số 0 trên led 7 đoạn như hình mặt dưới, các bạn suy nghĩ về xem họ phải làm chũm nào?

*

Tương tự đối với các số 2. 3, 4, 5, 6, 7, 9.

Để dễ hiểu hơn tôi xin đề xuất một bảng sau nhằm thuận tiện chúng ta dò. Lưu lại ý: sáng sủa là 1, tắt là 0.

Bảng diễn tả cách tạo thành các chữ số để hiển thị lên LED 7 đoạn (cathode chung):

Số thập phânSố HEXdpgfedcba
00x3F00111111
10x0600000110
20x5B01011011
30x4F01001111
40x6601100110
50x6D01101101
60x7D01111101
70x0700000111
80x7F01111111
90x6F01101111

Sơ đồ liên kết Arduino với led 7 đoạn

*

Thực hiện liên kết led 7 đoạn với Arduino theo bảng bên dưới đây:

ArduinoLed 7 đoạn
07(a)
16(b)
24(c)
32(d)
41(e)
59(f)
610(g)
75(dp)
GND3,8 (chân chung)

Chương trình

Chương trình 1

void setup()

pin
Mode(0, OUTPUT);

pin
Mode(1, OUTPUT);

pin
Mode(2, OUTPUT);

pin
Mode(3, OUTPUT);

pin
Mode(4, OUTPUT);

pin
Mode(5, OUTPUT);

pin
Mode(6, OUTPUT);

pin
Mode(7, OUTPUT);

digital
Write(7, 0); // tắt chấm tròn “dp”

void loop()

// Hiển thị số ‘0’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 1);

digital
Write(5, 1);

digital
Write(6, 0);

delay(1000);

// Hiển thị số ‘1’

digital
Write(0, 0);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 0);

digital
Write(4, 0);

digital
Write(5, 0);

digital
Write(6, 0);

delay(1000);

// Hiển thị số ‘2’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 0);

digital
Write(3, 1);

digital
Write(4, 1);

digital
Write(5, 0);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘3’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 0);

digital
Write(5, 0);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘4’

digital
Write(0, 0);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 0);

digital
Write(4, 0);

digital
Write(5, 1);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘5’

digital
Write(0, 1);

digital
Write(1, 0);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 0);

digital
Write(5, 1);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘6’

digital
Write(0, 1);

digital
Write(1, 0);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 1);

digital
Write(5, 1);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘7’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 0);

digital
Write(4, 0);

digital
Write(5, 0);

digital
Write(6, 0);

delay(1000);

// Hiển thị số ‘8’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 1);

digital
Write(5, 1);

digital
Write(6, 1);

delay(1000);

// Hiển thị số ‘9’

digital
Write(0, 1);

digital
Write(1, 1);

digital
Write(2, 1);

digital
Write(3, 1);

digital
Write(4, 0);

digital
Write(5, 1);

digital
Write(6, 1);

delay(1000);

​​​​​

Chương trình 2


#define seg
A 0// kết nối đoạn a với chân 0

#define seg
B 1// liên kết đoạn b với chân 1

#define seg
C 2// liên kết đoạn c với chân 2

#define seg
D 3// liên kết đoạn d với chân 3

#define seg
E 4// liên kết đoạn e cùng với chân 4

#define seg
F 5// liên kết đoạn f cùng với chân 5

#define seg
G 6// kết nối đoạn g với chân 6

int COUNT=0;// đếm số nguyên tăng mạnh từ 0 mang đến 9

void setup()

for (int i=0;i

pin
Mode(i, OUTPUT);// thiết lập các chân từ 0 mang lại 6 là ngõ ra

void loop()

switch (COUNT)

case 0:// khi quý giá đếm là 0 vẫn thấy số 0 hiển trị bên trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, HIGH);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, LOW);

break;

case 1:// khi cực hiếm đếm là 1 trong sẽ thấy hàng đầu hiển trị bên trên led 7 đoạn

digital
Write(seg
A, LOW);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, LOW);

digital
Write(seg
E, LOW);

digital
Write(seg
F, LOW);

digital
Write(seg
G, LOW);

break;

case 2:// khi giá trị đếm là 2 đã thấy số 2 hiển trị trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, LOW);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, HIGH);

digital
Write(seg
F, LOW);

digital
Write(seg
G, HIGH);

break;

case 3:// khi giá trị đếm là 3 vẫn thấy số 3 hiển trị bên trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, LOW);

digital
Write(seg
F, LOW);

digital
Write(seg
G, HIGH);

break;

case 4:// khi quý hiếm đếm là 4 sẽ thấy số 4 hiển trị trên led 7 đoạn

digital
Write(seg
A, LOW);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, LOW);

digital
Write(seg
E, LOW);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, HIGH);

break;

case 5:// khi quý giá đếm là 5 đang thấy số 5 hiển trị trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, LOW);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, LOW);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, HIGH);

break;

case 6:// khi quý hiếm đếm là 6 vẫn thấy số 6 hiển trị trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, LOW);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, HIGH);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, HIGH);

break;

case 7:// khi cực hiếm đếm là 7 vẫn thấy số 7 hiển trị bên trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, LOW);

digital
Write(seg
E, LOW);

digital
Write(seg
F, LOW);

digital
Write(seg
G, LOW);

break;

case 8:// khi giá trị đếm là 8 đã thấy số 8 hiển trị trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, HIGH);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, HIGH);

break;

case 9:// khi quý giá đếm là 9 vẫn thấy số cửu hiển trị trên led 7 đoạn

digital
Write(seg
A, HIGH);

digital
Write(seg
B, HIGH);

digital
Write(seg
C, HIGH);

digital
Write(seg
D, HIGH);

digital
Write(seg
E, LOW);

digital
Write(seg
F, HIGH);

digital
Write(seg
G, HIGH);

break;

break;

if (COUNT

COUNT++;

delay(1000);// tăng số đếm với từng giây

if (COUNT==10)

COUNT=0;// nếu cực hiếm đếm là 10, reset về 0.

delay(1000);

Chương trình 3

// tạo một mảng nhằm lưu cấu hình số chân led 7 đoạn void Display_Segment(int);

// giữ trữ tất cả giá trị cấu hình của led 7 đoạn, chúng tôi đã đem từ bảngint digit<10><7> = 0,1,1,1,1,1,1, // Số “0” 0,0,0,0,1,1,0, // Số “1” 1,0,1,1,0,1,1, // Số “2” 1,0,0,1,1,1,1, // Số “3” 1,1,0,0,1,1,0, // Số “4” 1,1,0,1,1,0,1, // Số “5” 1,1,1,1,1,0,1, // Số “6” 0,0,0,0,1,1,1, // Số “7” 1,1,1,1,1,1,1, // Số “8” 1,1,0,1,1,1,1 ; // Số “9” void setup() // cấu hình thiết lập chân ngõ rafor(int a=0 ; apin
Mode(a, OUTPUT);}

void loop() // Vóng lặp trường đoản cú 0 mang đến 9for (int value = 0; valuedelay(1000);Display_Segment(value); //Chuyển giá trị mang đến hàm nhằm hiển thị bên trên led 7 đoạndelay(2500);

// Hàm lấy quý giá và hiển thị lên led 7 đoạnvoid Display_Segment(int value) int start
Pin= 0;for (int x=6; x >= 0; x–) digital
Write(start
Pin, digit);start
Pin++;