M
Millwood
Guest
Eu pensei sobre maneiras de conduzir o maior número de LEDs com um determinado número de pinos de um MCU (PIC um, neste caso).
você pode dirigir dois LEDs de um alfinete -, mas um dos LEDs tem que estar em um ponto determinado.
você pode dirigir dois LEDs de dois pinos - você pode colocar os dois fora.
com três pinos, você pode ligar dois LEDs, inverter tendenciosa, entre dois pinos para que você possa dirigir um total de 6 LEDs.No entanto, você tem que transformar qualquer pino que você não está usando em um modo de alta impedância (entrada).
Portanto, aqui é um pequeno programa que demonstra esse conceito.ele roda em um 12f675, usando três pinos de conduzir seis LEDs.
Código:
# include <htc.h># define COMBO 6
# define LEDPort GPIO
LEDArray unsigned char [COMBO] [2] = (/ / primeiro byte para Trisio e 2 bytes para o porto
(0b100, 0B001), / / Pin0 / 1 saída, Pin0 alta pin1 baixo
(0b010, 0B001), / / Pin0 / 2 saída, Pin0 alta PIN2 baixo
(0b100, 0b010), / / Pin0 / 1 saída, Pin0 baixo pin1 alta
(0B001, 0b010),
(0b010, 0b100),
(0B001, 0b100)
);void delay (unsigned long int Divina) (
for (; Divina> 0; Divina -)
;
)__CONFIG (MCLRDIS & WDTDIS);void
main (void)
(
unsigned char i;CMCON = 0x07;
ANSEL = 0x00;while (1) (
/ / TODO Auto-generated função principal
for (i = 0; i <COMBO; i ) (
TRISIO = LEDArray [0];
LEDPort = LEDArray [1];
delay (20000);
)
)
)
você pode dirigir dois LEDs de um alfinete -, mas um dos LEDs tem que estar em um ponto determinado.
você pode dirigir dois LEDs de dois pinos - você pode colocar os dois fora.
com três pinos, você pode ligar dois LEDs, inverter tendenciosa, entre dois pinos para que você possa dirigir um total de 6 LEDs.No entanto, você tem que transformar qualquer pino que você não está usando em um modo de alta impedância (entrada).
Portanto, aqui é um pequeno programa que demonstra esse conceito.ele roda em um 12f675, usando três pinos de conduzir seis LEDs.
Código:
# include <htc.h># define COMBO 6
# define LEDPort GPIO
LEDArray unsigned char [COMBO] [2] = (/ / primeiro byte para Trisio e 2 bytes para o porto
(0b100, 0B001), / / Pin0 / 1 saída, Pin0 alta pin1 baixo
(0b010, 0B001), / / Pin0 / 2 saída, Pin0 alta PIN2 baixo
(0b100, 0b010), / / Pin0 / 1 saída, Pin0 baixo pin1 alta
(0B001, 0b010),
(0b010, 0b100),
(0B001, 0b100)
);void delay (unsigned long int Divina) (
for (; Divina> 0; Divina -)
;
)__CONFIG (MCLRDIS & WDTDIS);void
main (void)
(
unsigned char i;CMCON = 0x07;
ANSEL = 0x00;while (1) (
/ / TODO Auto-generated função principal
for (i = 0; i <COMBO; i ) (
TRISIO = LEDArray [0];
LEDPort = LEDArray [1];
delay (20000);
)
)
)