MAX7219.h
1 | ///=======================================================================================
| 2 | //***************************************************************************************
| 3 | //=======================================================================================
| 4 | // Das ist die Header datei um den IC Max7219 zu Initialisieren
| 5 | // ohne die Initialisierung könnte man den IC nicht Ansteuern
| 6 | //=======================================================================================
| 7 | //***************************************************************************************
| 8 | //=======================================================================================
| 9 |
| 10 | //=======================================================================================
| 11 | // Schieben
| 12 | //=======================================================================================
| 13 |
| 14 | void leer(unsigned char);
| 15 |
| 16 | delay(int zeit)
| 17 | {
| 18 | int i,j;
| 19 | for(i=0;i<zeit;i++)
| 20 | {
| 21 | for(j=0;j<50;j++)
| 22 | {
| 23 | }
| 24 | }
| 25 |
| 26 | }
| 27 |
| 28 | void load()
| 29 | {
| 30 | P2 = 0x00;
| 31 | delay(2);
| 32 | P2 = 0x04;
| 33 | delay(2);
| 34 | P2 = 0x00;
| 35 | }
| 36 |
| 37 |
| 38 | void takten (int zahl)
| 39 | {
| 40 | int i;
| 41 |
| 42 |
| 43 | for ( i=15; i>=0; i--)
| 44 | {
| 45 | P2 = (zahl >> i) & 0x01;
| 46 | P2 = ((zahl >> i) & 0x01) | 0x02;
| 47 | delay(2);
| 48 | P2 = (zahl >> i) & 0x01;
| 49 |
| 50 | }
| 51 |
| 52 |
| 53 |
| 54 |
| 55 | }
| 56 |
| 57 | void schieben(int zahl)
| 58 | {
| 59 | takten(zahl);
| 60 | load();
| 61 | }
| 62 |
| 63 | //=======================================================================================
| 64 | // IC MAX7219 initialisieren
| 65 | //=======================================================================================
| 66 |
| 67 | void init7219(unsigned char anzahl)
| 68 | {
| 69 | int i,j;
| 70 | int ausgabe[5]= {0x0a0f,0x0b07,0xc01,0x0f00,0x0900};
| 71 | /*
| 72 | takten (0x0a0f); // Intensity 0 bis f
| 73 | takten (0x0b07); // scan limit, 8 digits aktiv
| 74 | takten (0x0c01); // shutdown nicht aktiv
| 75 | takten (0x0f00); // Display-Test ausgeschaltet
| 76 | takten (0x0900); // decode mode, BCD für alle digits
| 77 | */
| 78 |
| 79 | for(j=0;j<5;j++)
| 80 | {
| 81 | for(i=0;i<anzahl;i++)
| 82 | {
| 83 | takten(ausgabe[j]);
| 84 | }
| 85 | load();
| 86 | }
| 87 |
| 88 | leer(anzahl);
| 89 |
| 90 | }
| 91 |
| 92 |
| 93 | void leer(unsigned char anzahl)
| 94 | {
| 95 | int i,j;
| 96 | for(j=0x0100;j<0x0900;j=j+0x0100)
| 97 | /*
| 98 | schieben (0x0100); // alle Digits löschen
| 99 | schieben (0x0200);
| 100 | schieben (0x0300);
| 101 | schieben (0x0400);
| 102 | schieben (0x0500);
| 103 | schieben (0x0600);
| 104 | schieben (0x0700);
| 105 | schieben (0x0800);
| 106 | */
| 107 | {
| 108 | for(i=0;i<anzahl;i++)
| 109 | {
| 110 | takten(j);
| 111 | }
| 112 | load();
| 113 | }
| 114 |
| 115 |
| 116 |
| 117 | }
| 118 |
| 119 | void ausgabe(unsigned char charakter)
| 120 | {
| 121 | //***************************************************************************************
| 122 | //=======================================================================================
| 123 | // Hier wird die Zeichensatz ASCII-Zeichen definiert
| 124 | //=======================================================================================
| 125 | //***************************************************************************************
| 126 |
| 127 | unsigned char code zeichen[][9] = { // Zeichensatz ASCII-Zeichen ab 32(dez.)
| 128 |
| 129 | //=======================================================================================
| 130 | //***************************************************************************************
| 131 |
| 132 | {'W',0xfe,0xff,0x03,0x1f,0x1f,0x03,0xff,0xfe}, // W am Modul
| 133 | {'S',0xce,0xdf,0xdb,0xdb,0xdb,0xdb,0xfb,0x73}, // S am Modul
| 134 | {'H',0xff,0xff,0x18,0x18,0x18,0x18,0xff,0xff}, // H am Modul
| 135 | {'Y',0x00,0xf0,0xf8,0x0f,0x0f,0xf8,0xf8,0x00}, // Y am Modul
| 136 | {'B',0x00,0x66,0x99,0x99,0x99,0x99,0xff,0xff}, // B am Modul
| 137 | {'d',0x00,0x7e,0x09,0x09,0x09,0x09,0x06,0x00}, // d am Modul
| 138 | {'0',0x00,0x3c,0x62,0x91,0x89,0x46,0x3c,0x00}, // Zahl 0 am Modul
| 139 | {'1',0x00,0x00,0x00,0xff,0xff,0x70,0x30,0x00}, // Zahl 1 am Modul
| 140 | {'2',0x00,0x63,0xf3,0xdb,0xcf,0xc7,0x63,0x00}, // Zahl 2 am Modul
| 141 | {'3',0x00,0x7e,0xff,0xdb,0xdb,0xdb,0xc3,0x00}, // Zahl 3 am Modul
| 142 | {'4',0x0c,0xff,0xff,0xcc,0x6c,0x3c,0x1c,0x00}, // Zahl 4 am Modul
| 143 | {'5',0x00,0xdf,0xdf,0xdb,0xdb,0xdb,0xfb,0x00}, // Zahl 5 am Modul
| 144 | {'6',0x00,0xdf,0xdf,0xdb,0xdb,0xdf,0xff,0x00}, // Zahl 6 am Modul
| 145 | {'7',0x00,0xe0,0xf8,0xdc,0xc7,0xc3,0xc0,0x00}, // Zahl 7 am Modul
| 146 | {'8',0x00,0x6e,0x91,0x91,0x91,0x91,0x6e,0x00}, // Zahl 8 am Modul
| 147 | {'9',0x00,0x6e,0x91,0x91,0x91,0x91,0x60,0x00}, // Zahl 9 am Modul
| 148 | {'+',0x00,0x64,0x62,0x09,0x09,0x62,0x64,0x00}, // Smilie lachend
| 149 | {'-',0x00,0x62,0x62,0x0a,0x0a,0x62,0x62,0x00}, // Smilie nicht Lachend
| 150 | {'/',0x00,0x61,0x62,0x0a,0x0a,0x62,0x61,0x00}, // Smilie Sauer
| 151 | {'&',0x00,0x09,0x04,0x6a,0x91,0x69,0x06,0x00}, // &
| 152 | {'c',0x3c,0x42,0x81,0xa5,0xa5,0x49,0x42,0x3c}, // Copyright Zeichen
| 153 | {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, // alle LED an
| 154 | {' ',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // Löschen
| 155 |
| 156 | };
| 157 |
| 158 | //=======================================================================================
| 159 | //***************************************************************************************
| 160 | // Für unseren Projekt brauchen wir den Kompletten Zahlen Zeichensatz und
| 161 | // bestimmte Buchstaben um den WHS Logo, Schallpegel [dB] und unsere Initiale zu
| 162 | // Simulieren.
| 163 | //=======================================================================================
| 164 | //***************************************************************************************
| 165 |
| 166 | //=======================================================================================
| 167 | // Unterprogramm für die Ausgabe am LED Modul
| 168 | //=======================================================================================
| 169 | int g;
| 170 | g=0;
| 171 |
| 172 |
| 173 | while(zeichen[g][0]!=charakter)
| 174 | {
| 175 | g++ ;
| 176 |
| 177 |
| 178 | }
| 179 |
| 180 | schieben(0x0100 + zeichen[g][1]);
| 181 | schieben(0x0200 + zeichen[g][2]);
| 182 | schieben(0x0300 + zeichen[g][3]);
| 183 | schieben(0x0400 + zeichen[g][4]);
| 184 | schieben(0x0500 + zeichen[g][5]);
| 185 | schieben(0x0600 + zeichen[g][6]);
| 186 | schieben(0x0700 + zeichen[g][7]);
| 187 | schieben(0x0800 + zeichen[g][8]);
| 188 |
| 189 |
| 190 |
| 191 | }
|
|