Professional Documents
Culture Documents
Ghép kênh 7 đoạn Màn vi điều khiển PIC SỬ DỤNG
Ghép kênh 7 đoạn Màn vi điều khiển PIC SỬ DỤNG
c
Hãy đӇ chúng tôi cӕ gҳng hiӇu vӅ ghép kênh cӫa bҧy đoҥn hiӇn thӏ bҵng cách sӱ dөng vi điӅu
khiӇn PIC đӇ thӵc hiӋn truy cұp thұp phân này sӁ tăng 0000-9999.
Seven Segment hiӇn thӏ là mҧng cӫa bҧy "Light Emitting Diode (LED) phân đoҥn vӟi điӇm thұp
phân bә sung (dp) cũng là mӝt LED. Mӛi phân đoҥn này đưӧc đánh dҩu là a, b, c, d, e, g, f và dp.
Hình 1
Khi chúng tôi sӱ dөng các phân đoҥn này cho các ӭng dөng thӵc tӃ giá trӏ khoan dung hiӋn hành
và điӋn áp nên đưӧc biӃt đӃn vӟi chúng tôi. Hơn thӃ hoһc hiӋn tҥi có thӇ gây hҥi LED đoҥn. Nó
luôn luôn là tӕt hơn đӇ sӱ dөng điӋn trӣ hҥn chӃ dòng trong loҥt bài vӟi mӛi phân đoҥn LED đӇ
tránh thiӋt hҥi như vұy. Nhӳng phân khúc này chӍ sáng lên khi cҧ hai mӝt phân đoҥn LED và dүn
liên quan phә biӃn cӫa nó (hoһc anode hoһc cathode) đưӧc lӵa chӑn.
Ghép kênh là cҫn thiӃt đӇ hai hoһc nhiӅu giao diӋn hiӇn thӏ bҧy đoҥn đӇ vi điӅu khiӇn
mӝt. Chương trình phҫn mӅm có thӇ kiӇm soát nhӳng bҧy đoҥn ghép đӇ ON / OFF mӝt cách chu
kǤ. ĐiӅu này cũng giúp giҧm thiӇu năng lưӧng trong các hӋ thӕng pin hoҥt đӝng.
Đӕi vӟi mӛi chân vi điӅu khiӇn, có mӝt hҥn chӃ tӕi đa hiӋn tҥi nó có thӇ nguӗn hoһc chìm. Vì lý
do này LED thҩp hiӋn nay đang sӱ dөng nӃu mӝt sӕ hiӇn thӏ đưӧc kӃt nӕi vӟi vi điӅu khiӇn. Đӕi
vӟi vi điӅu khiӇn PIC ә đĩa trӵc tiӃp cӫa các LED có thӇ do khҧ năng nguӗn cao chìm.
Î
b) thưӡng Anode (Power): cӵc dương cӫa tҩt cҧ các phân đoҥn LED đưӧc kӃt nӕi vӟi pin thông
thưӡng, bҵng cách áp dөng điӋn áp thҩp (ví dө như điӋn áp 0V chung cӫa đҩt) đӇ đҫu vào phân
khúc, vӅ mӛi phân đoҥn.
Hình 2
ĐӇ kích hoҥt tính năng dүn bҥn cҫn logic 0 ӣ (PB0-PB7) và logic 0 tҥi PC0, PNP transistor
u u u u u u u u
!u
Bҧng 1
"#
$%&
& '(
Hình 4
Ӣ đây trong mҥch cӫa chúng tôi, chúng tôi sӱ dөng loҥi anode chung vӟi tҩt cҧ các plusses chia
sҿ thông thưӡng pin. Các tҩm (đoҥn mӝt - g) cӫa mӛi màn hình hiӇn thӏ đưӧc tҩt cҧ các kӃt nӕi
vӟi nhau và sau đó kӃt nӕi vӟi mӝt PIC I / O dòng (PORTB) thông qua mӝt loҥt điӋn trӣ. Mӛi
cӵc dương thông thưӡng đưӧc kӃt nӕi vӟi bóng bán dүn và nó đưӧc điӅu khiӇn bӣi PIC mӝt I / O
dòng (PORTC).
c34
PORTB cӫa vi điӅu khiӇn kӃt nӕi vӟi các phân đoҥn 'mӝt' thành 'g' và chӳ sӕ đưӧc kӃt nӕi vӟi
PORTC. ĐӇ có thӇ vӅ tӯng phân khúc, pin PORTB phҧi đưӧc thiӃt lұp đӇ hӧp lý "0" và đӇ Off,
pin cӫa nó phҧi đưӧc thiӃt lұp đӇ hӧp lý "1" bӣi vì chúng tôi đã lӵa chӑn loҥi anode chung bҧy
hiӇn thӏ đoҥn, kӃt thúc đҫu vào cӫa nó là cӵc âm. Transistor cơ sӣ đưӧc kӃt nӕi vӟi PORTC. NӃu
bóng bán dүn là trong chӃ đӝ thӵc hiӋn, phân khúc sӁ vӅ nhà nӃu không OFF.
ĐӇ hiӇn thӏ sӕ, byte sӕ đҥi diӋn phҧi đưӧc gӱi đӃn các PORTB và bóng bán dүn phҧi đưӧc kích
hoҥt bҵng cách cho phép tương ӭng PORTC pin bҵng cách áp dөng mӭc đӝ thҩp tҥi cơ sӣ cӫa
bóng bán dүn. ҥ ҩӡ
өӇ
Ӎ
ӝ ӳ ҥ ưӧ
ұ
ҥ ưӧ
ҳ
ҥ ӏҳ
ҥ Ӄ Ӌ
ӵ
Ӌ
ưӧ
ұ Do đó mӛi chӳ sӕ là On-Off bҵng cách kiӇm soát các cӵc dương cho hiӇn thӏ đó. NӃu
chúng ta làm mӛi mӝt nhanh đӫ, chúng ta sӁ thҩy toàn bӝ màn hình nhҩp nháy miӉn phí.
Î-,54
Timer 0 đưӧc sӱ dөng đӇ làm mӟi màn hình hiӇn thӏ cho mӑi sӵ chұm trӉ 1ms.Time0 tӕc đӝ tӯ
đӗng hӗ hӋ thӕng chia cho 256 đưӧc sӱ dөng đӇ tҥo ra sӵ chұm trӉ. giӡ là cài đһt sҹn vӟi sӕ xxx,
nó sӁ tҥo ra gián đoҥn cho mӛi 1ms. Các chӳ sӕ đӇ hiӇn thӏ lưu trӳ nó trong biӃn mҧng. Đӕi vӟi
mӛi 1 ms gián đoҥn sӁ đưӧc tҥo ra và trong các chương trình con ngҳt, mҧng tҧi biӃn vào
PORTB và giá trӏ tương ӭng vӟi PORTC đӇ chӑn tӯng chӳ sӕ. Lưӧt truy cұp sӁ đưӧc tăng lên
cho mӛi 1ms.
ĐӇ hiӇn thӏ chӳ sӕ, các giá trӏ tương ӭng phҧi đưӧc tính toán. ĐӇ hiӇn thӏ chӳ sӕ 7,
1111 0001 trong hӋ nhӏ phân (0xf1 trong hӋ thұp lөc phân). Đây logic "0" cho phép phân đoҥn,
bҵng cách thiӃt lұp PORTC bit "0", trong đó đһt PNP transistor trong viӋc thӵc hiӋn nhà nưӟc.
( 0 la sang , 1 la tat )
# Include
const unsigned char DispArry [] = {0x81, 0xf3, 0x49, 0x61, 0x33, 0x25, 0x05, 0xf1, 0x01, 0x21};
unsigned dài DigitCount, DispValue;
unsigned char chұm trӉ, DispIncIndx, CountBuff [6];
bit cӡ;
switch (DispIncIndx)
{
Trưӡng hӧp 1:
PORTC = 0x7E;
break;
Trưӡng hӧp 2:
PORTC = 0X7d;
break;
Trưӡng hӧp 3:
PORTC = 0X7b;
break;
Trưӡng hӧp 4:
PORTC = 0X77;
break;
mһc đӏnh:
PORTC = 0x7f;
break;
}
}
DispIncIndx + +;
if ((DispIncIndx)> 7)
{
DispIncIndx = 0;
flag = 0;
}
}
}
void main (void)
{
unsigned int j;
ClrMem (CountBuff, CountBuff +5);
TRISB = 0x00;
TRISC = 0x00;
TMR0 = 100; / / 4ms
Giҿ = 1;
PEIE = 1;
TMR0IE = 1;
TMR0IF = 0;
PORTB = 0xFF;
PORTC = 0X7F;
OPTION = 0X84;
DispIncIndx = 0;
DispIncIndx = 0;
DigitCount = 0;
flag = 0;
for (;;)
{
asm ("nop");
if (! cӡ)
{
flag = 1;
DigitCount + +;
if (DigitCount> 9999)
DigitCount = 0;
SetDisp ();
}
}
}