1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| /* **********************************************************
Exercice d'affichage multiplexé sur une matrice
de 8x8 LEDs. PIC16F876A
- Anodes communes sur le portB et Cathodes sur PortC
***********************************************************/
int i,j; // variable de comptage
int v,lettre; // variable de fréquence de scrolling
//unsigned short IncCol; // Variable d'incrémentation de colonne
unsigned short offset;
void main() // Programme principal
{
// Préparation du caractère affichable
// Tableau de huits entiers (8x8) */
const unsigned char colonnes[][8]={
{0xEB, 0x81, 0x98, 0x3D, 0xBC, 0x19, 0x81, 0xD7},
{0xC3, 0xC3, 0x3C, 0x24, 0x24, 0x3C, 0xC3, 0xC3},
{0xff, 0x81, 0xbd, 0xa5, 0xa5, 0xbd, 0x81, 0xff},
{0xEB, 0x81, 0x98, 0x3D, 0xBC, 0x19, 0x81, 0xD7},
{0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55},
{0x42, 0xC3, 0x3C, 0x24, 0x24, 0x3C, 0xC3, 0x42},
{0xC3, 0xC3, 0x3C, 0x24, 0x24, 0x3C, 0xC3, 0xC3},
{0xC3, 0xC3, 0x3C, 0x3C, 0x3C, 0x3C, 0xC3, 0xC3},
{0xC3, 0xC3, 0x00, 0x18, 0x18, 0x00, 0xC3, 0xC3},
{0xC3, 0xC3, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xC3},
{0x24, 0x24, 0xE7, 0x00, 0x00, 0xE7, 0x24, 0x24},
{0x18, 0x24, 0x42, 0x99, 0x99, 0x42, 0x24, 0x18},
{0x00, 0x62, 0x62, 0x7E, 0x62, 0x62, 0x62, 0x00},
{0x00, 0x7E, 0x60, 0x78, 0x60, 0x60, 0x7E, 0x00},
{0x00, 0x3C, 0x62, 0x7E, 0x62, 0x62, 0x62, 0x00},
{0x00, 0x7C, 0x62, 0x7C, 0x62, 0x62, 0x62, 0x00},
{0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00},
{0x00, 0x42, 0x24, 0x18, 0x18, 0x18, 0x3C, 0x00},
{0x18, 0x0C, 0x06, 0xFF, 0xFF, 0x06, 0x0C, 0x18},
};
ADCON0=0; // ADC désactivé
TRISA=0; // PORTA configuré en sortie
TRISB=0; // PORTB configuré en sortie
TRISC=0; // PORTC configuré en sortie
PORTA=0; // mise à zéro des ports A
PORTB=0; // mise à zéro des ports B
PORTC=0; // mise à zéro des ports C
lettre=0;
v=0;
j=0;
offset=0; PortC = 0;
while(1) // Boucle infinie
{
for (i=0;i<8;i++) // itération sur les 8 lignes
{
PortB = (colonnes[lettre][i])<<offset; // output valeur colonnes de la ligne courante
PortC = 1<<i; // sélection ligne courante
Delay_ms(1);
}
}
} |