author | František Kučera <franta-hg@frantovo.cz> |
Tue, 12 May 2020 21:30:46 +0200 | |
changeset 58 | 2f84ed5f3abf |
parent 37 | 0a06481eec13 |
permissions | -rw-r--r-- |
franta-hg@16 | 1 |
#include <stdlib.h> |
franta-hg@16 | 2 |
#include <iostream> |
franta-hg@16 | 3 |
|
franta-hg@16 | 4 |
/** |
franta-hg@16 | 5 |
* Slouží k ovládání LED displeje pomocí řadiče M5482 připojeného na LPT port. |
franta-hg@16 | 6 |
* Používají se jen dva piny: DATA a CLOCK signál. |
franta-hg@16 | 7 |
*/ |
franta-hg@16 | 8 |
|
franta-hg@16 | 9 |
/** |
franta-hg@16 | 10 |
* = 1 → normální běh |
franta-hg@16 | 11 |
* > 1 → zpomalené pro ladění |
franta-hg@16 | 12 |
*/ |
franta-hg@16 | 13 |
const int BRZDA = 100000; |
franta-hg@16 | 14 |
|
franta-hg@37 | 15 |
void zapisSeriove(bool hodnoty[], int n); |
franta-hg@16 | 16 |
void zapisData(bool hodnota); |
franta-hg@16 | 17 |
void zapisClock(bool hodnota); |
franta-hg@16 | 18 |
void cekej(int mikroSekund); |
franta-hg@16 | 19 |
|
franta-hg@16 | 20 |
int main() { |
franta-hg@16 | 21 |
std::cout << "spouštím program LED Displej" << std::endl; |
franta-hg@16 | 22 |
|
franta-hg@16 | 23 |
bool hodnoty[] = {1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}; |
franta-hg@37 | 24 |
zapisSeriove(hodnoty, sizeof(hodnoty)); |
franta-hg@16 | 25 |
} |
franta-hg@16 | 26 |
|
franta-hg@37 | 27 |
void zapisSeriove(bool hodnoty[], int n) { |
franta-hg@37 | 28 |
for (int i = 0; i < n; i++) { |
franta-hg@16 | 29 |
zapisData(hodnoty[i]); |
franta-hg@16 | 30 |
cekej(1); |
franta-hg@16 | 31 |
zapisClock(true); |
franta-hg@16 | 32 |
cekej(1); |
franta-hg@16 | 33 |
zapisClock(false); |
franta-hg@16 | 34 |
cekej(1); |
franta-hg@16 | 35 |
std::cout << "---" << std::endl; |
franta-hg@16 | 36 |
} |
franta-hg@37 | 37 |
std::cout << "vypsáno hodnot: " << n << std::endl; |
franta-hg@16 | 38 |
} |
franta-hg@16 | 39 |
|
franta-hg@37 | 40 |
/** |
franta-hg@37 | 41 |
* TODO: použít jiné než datové piny (tam lze zapsat jen celý bajt najednou) |
franta-hg@37 | 42 |
*/ |
franta-hg@16 | 43 |
void zapisData(bool hodnota) { |
franta-hg@16 | 44 |
std::cout << "DATA = " << hodnota << std::endl; |
franta-hg@16 | 45 |
if (hodnota) { |
franta-hg@37 | 46 |
// TODO: zapsat na LPT (a nevymazat CLOCK) |
franta-hg@16 | 47 |
} else { |
franta-hg@37 | 48 |
// TODO: zapsat na LPT (a nevymazat CLOCK) |
franta-hg@16 | 49 |
} |
franta-hg@16 | 50 |
} |
franta-hg@16 | 51 |
|
franta-hg@37 | 52 |
/** |
franta-hg@37 | 53 |
* |
franta-hg@37 | 54 |
*/ |
franta-hg@16 | 55 |
void zapisClock(bool hodnota) { |
franta-hg@16 | 56 |
std::cout << "CLOCK = " << hodnota << std::endl; |
franta-hg@16 | 57 |
if (hodnota) { |
franta-hg@37 | 58 |
// TODO: zapsat na LPT (a nevymazat DATA) |
franta-hg@16 | 59 |
} else { |
franta-hg@37 | 60 |
// TODO: zapsat na LPT (a nevymazat DATA) |
franta-hg@16 | 61 |
} |
franta-hg@16 | 62 |
} |
franta-hg@16 | 63 |
|
franta-hg@37 | 64 |
/** |
franta-hg@37 | 65 |
* Čeká zadaný čas v mikrosekundách. |
franta-hg@37 | 66 |
* Je možné zpomalit konstantou BRZDA. |
franta-hg@37 | 67 |
*/ |
franta-hg@16 | 68 |
void cekej(int mikroSekund) { |
franta-hg@16 | 69 |
usleep(mikroSekund*BRZDA); |
franta-hg@16 | 70 |
} |
franta-hg@16 | 71 |