Trong LED 7 thanh bao gồm ít nhất là 7 con LED mắc lại với nhau , vì vậy mà có tên là LED 7 đoạn là vậy ,7 LED đơn được mắc sao cho nó có thể hiển thị được các số từ 0 - 9 , và 1 vài chữ cái thông dụng, để phân cách thì người ta còn dùng thêm 1 led đơn để hiển thị dấu chấm (dot) .
Các led đơn lần lượt được gọi tên theo chữ cái A- B -C-D-E-F-G, và dấu chấm dot .
Như vậy nếu như muốn hiển thị ký tự nào thì ta chỉ cần cấp nguồn vào chân đó là led sẽ sáng như mong muốn .
2 . Thông số :
LED 7 thanh dù có nhiều biến thể nhưng tựu chung thì cũng chỉ vẫn có 2 loại đó là :
+ Chân Anode chung (chân + các led mắc chung lại với nhau .)
+ Chân Catode chung (Chân - các led được mắc chung với nhau .)
* Đối với loại Anode chung :
+ Chân 3 và 8 là 2 chân Vcc(nối ngắn mạch lại với nhau , sau đó nối chung với chân anode của 8 led đơn .), vậy muốn led nào đó sáng thì chỉ việc nối chân catot xuống mass .
Điện áp giữa Vcc và mass phải lớn hơn 1.3 V mới cung cấp đủ led sáng, tuy nhiên không được cao quá 3V .
3 . Trở hạn dòng :
Trong các mạch thì thường dùng nguồn 5V nên để tránh việc đót cháy led thì cách đơn giản nhất là mắc thêm trở hạn dòng .
Thông số làm việc của LED :
Điện áp = 2V .
Dòng = 20mA .
Vậy nếu dùng nguồn 5V , thì áp rơi trên trở = 5 -2 = 3 V.
R = U / I = 3/(20*10^-3) = 150 ôm .
Bài hướng dẫn tới đây là kết thúc, nhưng trước khi các bạn tắt đi, thì xin hãy thử làm 1 bài tập nho nhỏ này : Sử dụng 2 led để hiện bảng chữ cái , hiện 2 chữ a và b thì mắc như thế nào ?
- Hình mô phỏng protues.
- Đây là code.
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f877a.h>
#define _XTAL_FREQ 4000000
#define leddata PORTD
unsigned int Count;
const unsigned char maled7[] = {0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEF};
//0x40,0x79,0x24,0x30,0x19,0x12, 0x82,0x78,0x00,0x10
unsigned int nghin,tram,chuc,donvi;
void Hienthi(unsigned int nghin,unsigned int tram,unsigned int chuc,unsigned int donvi);
void dectoBCD(unsigned int Count);
void main (void)
{
RA0 = 1,TRISD = 0,TRISB = 0,PORTB = 0X00,PORTD = 0X00;
while(1)
{
dectoBCD(Count);
Hienthi(nghin,tram,chuc,donvi);
Count++;
if(Count==0333)
Count=0;
}
}
void dectoBCD(unsigned int Count)
{
nghin = Count/1000;
tram = (Count - nghin*1000)/100;
chuc = (Count - nghin*1000 - tram*100)/10;
donvi = Count - nghin*1000 - tram*100 - chuc*10;
}
void Hienthi(unsigned int nghin,unsigned int tram,unsigned int chuc,unsigned int donvi){
{
RB4=0;
leddata=maled7[nghin];
__delay_ms(10);
RB4=1;
RB5=0;
leddata=maled7[tram];
__delay_ms(10);
RB5=1;
RB6=0;
leddata=maled7[chuc];
__delay_ms(10);
RB6=1;
RB7=0;
leddata=maled7[donvi];
__delay_ms(10);
RB7=1;
}
}
EmoticonEmoticon