0 - 9999 with XC8

8:36:00 PM
LED 7 đoạn hay LED 7 thanh (Seven Segment display) là 1 linh kiện rất phổ dụng , được dùng như là 1 công cụ hiển thị đơn giản nhất .
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.


0 - 9999 pic16f877a xc8

- Đâ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;

}
}

Share this

Related Posts

Previous
Next Post »