Zdarvím.
Nemá někdo nějaký nápad nebo podklady pro vytvoření menu pro LCD?
Alespoň princip, nebo něco od čeho bych se mohl odpíchnout.
Potřebuji zobrazovat vícero informací a na jednu obrazovku se mi to nevleze. Chci použít 4 tlačítka pro ovládání v menu (šipka nahoru, šipka dolů, enter, escape).
Stavím na ATmega 32, 16x4 displeji a v AVRStudiu 4 + Gcc.
Děkuji za jakýkoli návrh.
Fórum › Mikrokontroléry
Jak na MENU pro LCD v C?
no ja sem resil neco jako strankovani ... jednou klavesou sem menil co se nastavuje... a pak + a - na to samotne nastavovani
ale nebylo tam treba pouzit nic jako zanoreni a tak... proste sem mel promennou stav a podle ni sem pak zpracovaval stisky klaves i samotne vypisovani na display
To Mexikan : skus nieco taketo napr.:
init i = 0;
int main (void)
{
DDRC &= ~(1 << PC0) | (1 << PC1); // nastavenie vstunych portov napr. na tl.
PORTC |= (1 << PC0) | (1 << PC1); // nastavenie pull-up odporov
for(;;) {
do {}
while (((PINC & 0x01)!=0) && (PINC & 0x02)!=0));
if (((PINC & 0x01)==0) && c<9) i=i+1;
if (((PINC & 0x02)==0) && c>0) i=i-1;
do {}
while (((PINC & 0x01)==0) || (PINC & 0x02)==0));
if (i>9) i=9;
if (i == 1) {
vypis na lcd "ahoj";
}
if (i == 2) {
vypis na lcd "xxx";
}
}
return 0;
}
pripadne si kod uprav podla svojho vkusu ale toto by ti malo fungovat mozes tam pouzit aj switch (case) namiesto tych vela if ale myslim ze toto je krajsie :) ale kazdeho vlastny nazor.
To contact :
a pokud pouziju maticovou klavecnici dalo by se menu resit takto?
char text[];
DDRE=0x0F;
PORTE=0x0F;
while(1)
{
//prvni sloupec
PORTE =0b00001110;
//1
if (bit_is_clear(PINE, 4)) {
text[]="Uroven 1";
PORTE =0b00001101;
if (bit_is_clear(PINE, 4)) {
text[]="Poduroven 1";
}
PORTE =0b00001011;
if (bit_is_clear(PINE, 4)) {
text[]="Poduroven 2";
}
PORTE =0b00001110;
if (bit_is_clear(PINE, 4)) {
text[]="Poduroven 3";
}
}
//4
if (bit_is_clear(PINE, 5)) {};
//7
if (bit_is_clear(PINE, 6)) {};
//*
if (bit_is_clear(PINE, 7)) {};
//druhy sloupec
PORTE =0b00001101;
//2
if (bit_is_clear(PINE, 4)) {};
//5
if (bit_is_clear(PINE, 5)) {};
//8
if (bit_is_clear(PINE, 6)) {};
//0
if (bit_is_clear(PINE, 7)) {};
//treti sloupec
PORTE =0b00001011;
//3
if (bit_is_clear(PINE, 4)) {};
//6
if (bit_is_clear(PINE, 5)) {};
//9
if (bit_is_clear(PINE, 6)) {};
//#
if (bit_is_clear(PINE, 7)) {};
//ctvrty sloupec
PORTE =0b00000111;
//ESC
if (bit_is_clear(PINE, 4)) {};
//F1
if (bit_is_clear(PINE, 5)) {};
//F2
if (bit_is_clear(PINE, 6)) {};
//ENTER
if (bit_is_clear(PINE, 7)) {};
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Program pro LCD panelove meridlo — založil David Bubenik
Adaptér pro sériové připojení LCD displejů — založil remmidemmi
Přepis JS menu pro vertikální použití — založil albru123
Tříd pro načtení stromového menu — založil plasmo
Moderátoři diskuze