Elektronika.lt
 2025 m. kovo 10 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 03 10, 00:14. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Atmega + LCD, meniu valdymas
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 11
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 07, 16:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dziugas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Sveiki,
Gal kam nesunku pasidalinti C kodo pavyzdziu daugiafunkcinio meniu. Atmega8 + LCD + keletas mygtuku, noretusi tam tikrus parametrus iejus i meniu keisti. Ideja tokia: yra voltmetras per meniu butu galima issirinkti reiksme kuria pasiekus isvestu i pasirinkta porta 1.
Visos idejos welcome!!!


Voltmetro kodas:
/****************************
Chip type : ATmega8
Program type : Application
Clock frequency : 1,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
****************************/

#include <mega8.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <delay.h>

#define VREF 5000
#define ADC_VREF_TYPE 0x60

void main(void)
{
// Локальные переменные
unsigned long volt1;
unsigned int a;
// Инициализация порта В
PORTB=0x00;
DDRB=0x00;
// Инициализация порта С
PORTC=0x00;
DDRC=0x00;
// Инициализация порта D
PORTD=0x00;
DDRD=0x00;

// Инициализация LCD
lcd_init(16);
delay_ms(200); //пауза 200 мс
lcd_clear(); //очистка ЖКИ
lcd_putsf(" Voltmetras "); //вывод заставки
delay_ms(4000); // показывать 4сек


while (1) //Начало цикла измерения напряжения
{ // Инициализация АЦП на PC0(ADC0)
ADMUX &= 0xdf & 0x7e & 0xf1; ADMUX |= 0x40 | 0x01;//10бит;Vref=AVCC;канал-2 PC1
//Регистр ADCSRA:АЦП-вкл; Запуск АЦП; Постоянное измерение;
ADCSRA &=0xfb; ADCSRA |= 0x80 | 0x40 | 0x02 | 0x03;//Регистр ADCSRA:АЦП-вкл; Fацп=125кГц
//Вычиление напряжения PC2
volt1=ADCW;//Чтение 10 бит результата
volt1=volt1*VREF/1024;//Вычисление Vin в милливольтах

//Вывод на дисплей
lcd_clear(); //очистка ЖКИ
lcd_gotoxy(0,0); //начать вывод текста с 0,0
lcd_putsf(" V1 "); // вывести на ЖКИ
lcd_putchar (volt1/1000+0x30); //показать значение единиц
lcd_putsf (","); // вывести на ЖКИ
lcd_putchar ((volt1/100)%10+0x30); //показать значение десятых
lcd_putchar ((volt1/10)%10+0x30); //показать значение сотых
lcd_putchar (volt1%10+0x30); //показать значение тысячных

if ((volt1/1000+0x30)>50){ //Jeigu itampa virsija 2 voltus displejuje rodo zenkliuka SOS, 50 ascii lenteleje atitinka 2.
lcd_gotoxy(12,0);lcd_putsf("SOS");
}
for (a=65000; a>0; a--); //цикл для создания паузы
}
}
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 07, 17:12 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sneikaz
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ir kaip tas tavo daugiafunkcinis menu turetu atrodyt?
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 07, 21:59 Pranešti apie taisyklių pažeidimą Atsakyti su citata
caca
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
na ir rasai jei reikia meniu... spaudi koki nors mygtuka ir isveda vis kita eilute... Dar kita mygtuka spaudi-gali keisti reikiama parametra ir t.t...

_________________
Nieko taip lengvai nedaliname, kaip patarimus...
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 08, 07:56 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Vintikas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
http://www.md4u.ru/godo_nokia_zak.html
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 08, 08:19 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dziugas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Kaip paprasta tai isivaizduoju, bet kad kazkoki universalesni.
Butu puiku, kad isirinkusia reiksme irasytu i eproma.
As kaip isivaizduoju: reiktu apsirasyti atskira faila.c skirta duomenim su klavitura (nerandu normalaus aprasymo, truksta iki uzsikabinimo):
Tad ir prasau kokio pvz., kuri po kauleli butu galima narplioti.
--------------
Klaviaturos skanavimas
--------------
void ScanKbd(void)
{
switch (byScanState)
{
case ST_WAIT_KEY: // Если обнаружено нажатие на клавишу, то переходим к ее проверке.
if (KeyCode != 0)
......
-----------------
Klaviaturos ivykiai
-----------------
void ProcessKey(void)
{
switch (byKeyCode)
{
case KEY_Up:
if (Mode < 5)
{
Mode++;
}
View = 1;
Counter3 = 0;
break;
................

Paprasto pvz:
lcd_init(16);
while (1)
{
if (PINC.0==0) // если нажата первая кнопка
{
delay_ms(250); // задержка 1/4 сек. (для удобства) выбора
inf++; // к значению минуты добавляем еденицу
}
if (inf==1)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Itampa");
delay_ms(250);
}
if (inf==2)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Srove");
delay_ms(250);
}
if (inf==3)inf=0;
}
}
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 08, 08:39 Pranešti apie taisyklių pažeidimą Atsakyti su citata
caca
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
void meniu (void)
{
if(mygt ==1)
{
Nr=Nr+1;
if(Nr>11)Nr=0;

}


}


//===========================================

if(mygt==1||mygt==3||mygt==4||Prad==1){

{
switch (Nr) {
case 0:{
indik_string(0,&(control[0]));
indik_string(8,&(ch_temp[0]));
indik_string(16,&(ch_nr[0]));

break;}//!!!butinai reikia break... kitaip neteisingai veikia

case 1:{
indik_string(0,&(ch_nr[0]));
indik_string(16+0,&(ch_nr[0]));
break;}

case 2:{
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(8,&(ch_temp[0]));
indik_string(16+0,&(ch_nr[0]));
break;}

case 3:{
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 4:{ //itampa
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 5:{ //itampa
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 6:{ //itampa
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 7:{ //itampa
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 8:{ //itampa
indik_string(0,&(ch_nr[0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}

case 9:{ //itampa
indik_string(0,&(ch_nr [0])); //Slenkstis
indik_string(16+0,&(ch_nr[0]));
break;}
case 10:{ //itampa
indik_string(0,&(Temper_mazinimas [0])); //Slenkstis
indik_string(0+16,&(Zona_1[0]));

break;}

case 11:{ //itampa
indik_string(0,&(Temper_mazinimas [0])); //Slenkstis
indik_string(0+16,&(Zona_2[0]));

break;}

}
}
}
//***********************************************
if((mygt<5) && (mygt!=2) )
{
atleid_lauk();//laukti kol atleis mygtuka
}

//**************************
}

nu a tep gera y? spaudi mygtukus, keiciasi uzrasai indikatoriuje... Toliau-skonio dalykeliai... Smile

_________________
Nieko taip lengvai nedaliname, kaip patarimus...
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 04 08, 09:04 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dziugas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Didelis dekui, bandysiu aiskintis.
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 05 27, 22:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
SpiderPig
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Sveiki cia radau tokia programa parasyta
Kodas:
#include <mega16.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

void main(void)
{       
lcd_init(16);
lcd_clear();
lcd_putsf("Sveiki");

while (1)
{

}
}
 

Man viskas gerai veikia tik noriu dar prie teksto prideti koki skaiciu kuri galeciau keisti tarkim mes priskirtumem sk=2; ir kaip ji reiketu parody ?
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 05 28, 14:44 Pranešti apie taisyklių pažeidimą Atsakyti su citata
SpiderPig
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Jau radau jei kam reikia tai su situo
Kodas:
   lcd_gotoxy (0,1);
   lcd_putchar (min);
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 05 28, 14:45 Pranešti apie taisyklių pažeidimą Atsakyti su citata
SpiderPig
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Jau radau jei kam reikia tai su situo
Kodas:
   lcd_gotoxy (0,1);
   lcd_putchar (sk);
 Atmega + LCD, meniu valdymas
PranešimasParašytas: 2010 05 28, 15:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dziugas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Tesiant jau isanalizuota tema daugiafunkcinis meniu,
Funkcija: switch
switch (Nr)
{case 0:
....
break;}
kodo pvz:
#include <mega8.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#define mygt PINC.0
// Declare your global variables here
unsigned int a; //0 to 65535
unsigned char Nr; //0 to 255
void meniu (void)
{
if(mygt ==0)
{Nr=Nr+1;
delay_ms(50); // задержка 10 мс.
if(Nr>2)Nr=0;
}
}
void main(void)
{
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x01;
DDRC=0x00;

// LCD module initialization
lcd_init(16);

while (1)
{
meniu();
switch (Nr)
{
case 0:
lcd_clear(); //очистка ЖКИ
lcd_gotoxy(0,0); //начать вывод текста с 0,0
lcd_putsf("Meniu"); // вывести на ЖКИ
break;
case 1:
lcd_clear(); //очистка ЖКИ
lcd_gotoxy(0,0);
lcd_putsf("Voltmetras"); // вывести на ЖКИ
break;

case 2:
lcd_clear(); //очистка ЖКИ
lcd_gotoxy(0,0);
lcd_putsf("Ampermetras"); // вывести на ЖКИ
}
for (a=65000; a>0; a--);
}
}
Pradėti naują temą  Atsakyti į pranešimą
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
LEGO
Mänguköök, mudelautod, nukuvanker
KCD2 Mods
Installing KCD 2 Mods, KCD 2 Guides, KCD 2 Cheats
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
GTA 6 Wiki
GTA 6 Map, GTA 6 Characters, GTA 6 News
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama