Driving LEDs, o modo Matrix

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);

)

)

)

 

Welcome to EDABoard.com

Sponsor

Back
Top