Led 7 đoạn

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Mấy anh chị có thể giải thích giùm em cái phần mà có 4 cái npn không ạ..em không hiểu lắm phần chọn mạch ở đó @@... với lại tại sao mình phải làm như thế mà không cắm luôn vào PORT nào đó luôn để dễ điều chỉnh ạ? Mà cho em hỏi là nếu muốn cho đếm từ 0->9 thì mình nên lập trình như thế nào ạ em code thử như vầy mà mô phỏng ra toàn cái gì đâu không à :((
Code:
void main(void) {
    ANSEL = 0;
    ANSELH = 0;
    TRISC = 0x00;
	unsigned char led_data[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; //0,1,2,3,4,5,6,7,8,9
    while (1) {
	int i,a;
	for (i=0;i<=9;i++)
	{
	a=led_data[i];
	PORTC=a;
	__delay_ms(500);
	}

    }

}
 

honghiep

Cố Vấn CLB
Staff member
Mấy anh chị có thể giải thích giùm em cái phần mà có 4 cái npn không ạ..em không hiểu lắm phần chọn mạch ở đó @@... với lại tại sao mình phải làm như thế mà không cắm luôn vào PORT nào đó luôn để dễ điều chỉnh ạ? Mà cho em hỏi là nếu muốn cho đếm từ 0->9 thì mình nên lập trình như thế nào ạ em code thử như vầy mà mô phỏng ra toàn cái gì đâu không à :((
Code:
void main(void) {
    ANSEL = 0;
    ANSELH = 0;
    TRISC = 0x00;
	unsigned char led_data[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; //0,1,2,3,4,5,6,7,8,9
    while (1) {
	int i,a;
	for (i=0;i<=9;i++)
	{
	a=led_data[i];
	PORTC=a;
	__delay_ms(500);
	}

    }

}
code này hình như bạn không sử dụng 74ls47. Vì vậy bạn nên đưa sơ đồ mạch thì mới biết được nguyên nhân
 
Mấy anh chị có thể giải thích giùm em cái phần mà có 4 cái npn không ạ..em không hiểu lắm phần chọn mạch ở đó @@... với lại tại sao mình phải làm như thế mà không cắm luôn vào PORT nào đó luôn để dễ điều chỉnh ạ?
4 con transistors đó có mục đích để kéo dòng cho mỗi led 7 đoạn.
Vì mỗi con led trong led 7 đoạn cần khoảng từ 20 đến 30 mA để sáng, với led 7 đoạn có 7 con led mắc chung Anode hoặc Cathode, nếu nối trực tiếp vào vi điều khiển thì nếu 7 led sáng cùng lúc thì chân chọn led 7 đạon phải cấp dòng source hay chịu dòng sink rất lớn trong khi dòng source và sink tối đa của PIC16F chỉ là 25mA thôi (bạn có thể coi trong datasheet)

void main(void) {
ANSEL = 0;
ANSELH = 0;
TRISC = 0x00;
unsigned char led_data[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; //0,1,2,3,4,5,6,7,8,9
while (1) {
int i,a;
for (i=0;i<=9;i++)
{
a=led_data;
PORTC=a;
__delay_ms(500);
}

}

}

Còn về chương trình này chạy không được vì 8 bit cần được xuất ra có 4 bit là mã nhị phân của 1 số từ 0-15 (vì được sẽ qua con 74LS47 đổi tử nhị phân sang mã led 7 đoạn ) và 4 bit chọn led. Bạn cần chú ý chọn 4 bit cao hay thấy cho phù hợp với phần cứng.
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
vậy là mình nên code sao để nó hiện ra số ạ :-s... em không hiểu sao mà 4 bit lại qua kia trở thành 8 bit hiện số như mình muốn được, mong các anh chị giải thích giùm em ạ :)...tại em còn gà lắm :D...chưa học về mấy cái này ạ :">
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
à mà em không thấy hướng dẫn về keypad...anh chị nào giúp em với :((..tình hình là em không biết xài sao
 

nguyenquoctrung-hhk

Thành Viên PIF
vậy là mình nên code sao để nó hiện ra số ạ :-s... em không hiểu sao mà 4 bit lại qua kia trở thành 8 bit hiện số như mình muốn được, mong các anh chị giải thích giùm em ạ :)...tại em còn gà lắm :D...chưa học về mấy cái này ạ :">
_ muốn hiện ra số : nếu bạn chưa học điện tử số ===> go to Google , search: "cấu tạo led 7 đoạn, phân loại, cách sử dụng"
_muốn 4 bit trở thành 8 bit : bạn nên hiểu về điện tử số + lập trình C + Vi điều khiển, thì chuyện này rất dễ dàng. nhưng bạn chưa học một cái gì thì mình nói bạn cụng không hiểu đâu
_nếu bạn đã thông những phần trên thì phần lập trình keypad thì không có vấn đề gì cả
 

honghiep

Cố Vấn CLB
Staff member
vậy là mình nên code sao để nó hiện ra số ạ :-s... em không hiểu sao mà 4 bit lại qua kia trở thành 8 bit hiện số như mình muốn được, mong các anh chị giải thích giùm em ạ :)...tại em còn gà lắm :D...chưa học về mấy cái này ạ :">
với 4 bit có thể có 2^4=16 trạng thái chứ không phải từ 4 bit trở thành 8 bit
 
vậy là mình nên code sao để nó hiện ra số ạ :-s... em không hiểu sao mà 4 bit lại qua kia trở thành 8 bit hiện số như mình muốn được, mong các anh chị giải thích giùm em ạ :)...tại em còn gà lắm :D...chưa học về mấy cái này ạ :">
Trên mạch có 1 con IC 7447 có tác dụng nhận vào 4 bit (số nhị phân từ 0000 -> 1111 tương đương từ 0 -> 15) và cho ra 7 bit dùng cho led 7 đoạn loại anot chung. Như vậy muốn hiện số 4 trên led thì bạn chỉ cần cấp đầu ra 4 bit tương ứng 0100 vào thì trên led sẽ hiện số 4. Việc này nếu ko sử dụng 7447 thì hoàn toàn làm được dùng MCU nhưng khi đó bạn sẽ mất 7 chân MCU để hiện led, còn với việc sử dụng 7447 thì bạn chỉ cần 4 chân thôi.
 
Top