c++/led-displej/led-displej.cpp
author František Kučera <franta-hg@frantovo.cz>
Tue, 09 Sep 2014 16:18:47 +0200
changeset 25 95be94124ce9
parent 16 131d2652b241
child 37 0a06481eec13
permissions -rw-r--r--
RAIIDemo: super.finalize(); (pro případ, že by předek něco finalizoval)
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@16
    15
void zapisSeriove(bool hodnoty[]);
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@16
    24
	
franta-hg@16
    25
	std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36
franta-hg@16
    26
	
franta-hg@16
    27
	zapisSeriove(hodnoty);
franta-hg@16
    28
}
franta-hg@16
    29
franta-hg@16
    30
void zapisSeriove(bool hodnoty[]) {
franta-hg@16
    31
	std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8
franta-hg@16
    32
	for (int i = 0; i < sizeof(hodnoty); i++) {
franta-hg@16
    33
		zapisData(hodnoty[i]);
franta-hg@16
    34
		cekej(1);
franta-hg@16
    35
		zapisClock(true);
franta-hg@16
    36
		cekej(1);
franta-hg@16
    37
		zapisClock(false);
franta-hg@16
    38
		cekej(1);
franta-hg@16
    39
		std::cout << "---" << std::endl;
franta-hg@16
    40
	}
franta-hg@16
    41
}
franta-hg@16
    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@16
    46
		// TODO: zapsat na LPT
franta-hg@16
    47
	} else {
franta-hg@16
    48
		// TODO: zapsat na LPT
franta-hg@16
    49
	}
franta-hg@16
    50
}
franta-hg@16
    51
franta-hg@16
    52
void zapisClock(bool hodnota) {
franta-hg@16
    53
	std::cout << "CLOCK = " << hodnota << std::endl;
franta-hg@16
    54
	if (hodnota) {
franta-hg@16
    55
		// TODO: zapsat na LPT
franta-hg@16
    56
	} else {
franta-hg@16
    57
		// TODO: zapsat na LPT
franta-hg@16
    58
	}
franta-hg@16
    59
}
franta-hg@16
    60
franta-hg@16
    61
void cekej(int mikroSekund) {
franta-hg@16
    62
	usleep(mikroSekund*BRZDA);
franta-hg@16
    63
}
franta-hg@16
    64