Elektronika.lt
 2025 m. vasario 24 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 02 24, 01:05. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Atmega16 programa
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 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Atmega16 programa
PranešimasParašytas: 2012 01 14, 20:30 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
Sveiki visi, man reikia parasyti programa kad paspaudus miktuka viena karta 7 segmentu indikatorius rodytu vieneta o paspaudus 2 kartus rodytu dvejata ir t.t.. ir kad butu miktukas koks kuri nuspaudus pradetu skaiciuti is naujo bandau taip rasyti
#include <avr/io.h>
#include <util/delay.h>


int main( void )
{
DDRD=255;
PORTC=0;
PORTB=0;



while (1) {

if (PINC&1)

PORTD=(0<<DDD0|1<<DDD1|1<<DDD2|0<<DDD3|0<<DDD5|0<<DDD6|0<<DDD4);
else
PORTD=(1<<DDD0|1<<DDD1|1<<DDD2|1<<DDD3|1<<DDD5|0<<DDD6|1<<DDD4);
 Atmega16 programa
PranešimasParašytas: 2012 01 14, 20:40 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ą
skaiciu segmentinius kodus reikia surasyti i masyva ir skaiciu naudoti kaip masyvo indeksa. Tada viskas bus aisku ir paprasta... O toks rasymas-tai vos ne masininiais kodais...

_________________
Nieko taip lengvai nedaliname, kaip patarimus...
 Atmega16 programa
PranešimasParašytas: 2012 01 14, 20:47 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
na as dar zales tai nelabai suprantu o kas tas masyvas gal kokios teorijos lt kalba yra Rolling Eyes
 Atmega16 programa
PranešimasParašytas: 2012 01 14, 20:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
Gal kas galit koki pavyzdi ideti kad butu aiskiau Rolling Eyes
 Atmega16 programa
PranešimasParašytas: 2012 01 14, 22:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
Gal imanoma sita koda perdaryti ka reiketu ismesti ka prideti as kazka bandziau bet nelabai panu gaunasi Rolling Eyes
/*
* DigitalDice_SingleDigit.c
* Written in AVR Studio 5
* Compiler: AVR GNU C Compiler (GCC)
*
* Created: 5/27/2011 10:50:48 PM
* Author: AVR Tutorials
* Website: www.AVR-Tutorials.com
*
* Description: AVR C program for ATMega16 Single Digit Digital Dice Project
*/

#define DicePort PORTA
#define DicePortDDR DDRA

#define SwitchPortDDR DDRD
#define SwitchPort PORTD
#define SwitchPin PIND

#define RollSwitch 7

#define F_CPU 4000000UL

#include <avr/io.h>
#include <stdlib.h>
#include <util/delay.h>
#include <avr/interrupt.h>

unsigned char seed = 0;

/*Declaration of functions. The implementation of these */
/*function are done below the main() function*/
unsigned char digit_to_7segval(unsigned char digit);
void roll_dice(unsigned char times);
void init();
ISR(TIMER0_OVF_vect);


int main(void)
{
unsigned char digit = 0;

init(); // Configure the Microcontroller

/*Do forever*/
while(1)
{

if(!(SwitchPin & (1<<RollSwitch)))
{
/*Roll the dice 2 times*/
roll_dice(2);

/*Generate an integer based random number between */
/*1 and 6 inclusive and store it in digit*/
seed = (seed*17)+21;
digit = seed % 6;
digit++;

/*Get the Seven Segment value of the random number*/
/*and output it to the pins of port B*/
DicePort = digit_to_7segval(digit);
}
}

}

/*Configuration for the microcontroller*/
void init()
{
/*Configure DicePort as an output port*/
DicePortDDR = 0xFF;

/*Configure SwitchPort as an input port*/
SwitchPortDDR = 0x00;
/*Enable SwitchPort pull-up resistors*/
SwitchPort = 0xFF;

TCCR0 = 0x01; // Enable Timer0 with no prescalar
TIMSK = 0x01; // Enable Timer0 interrupt
sei(); // Enable Global Interrupt
}

/*This function takes an character value and return the */
/*and return the value to be outputted to display that */
/*character on a seven segment display*/
unsigned char digit_to_7segval(unsigned char digit)
{
unsigned char segval = '0';

if(digit == 1)
segval = 0x06; // 7-Seg Value for Digit 1
else if (digit == 2)
segval = 0x5B; // 7-Seg Value for Digit 2
else if (digit == 3)
segval = 0x4F; // 7-Seg Value for Digit 3
else if (digit == 4)
segval = 0x66; // 7-Seg Value for Digit 4
else if (digit == 5)
segval = 0x6D; // 7-Seg Value for Digit 5
else if (digit == 6)
segval = 0x7D; // 7-Seg Value for Digit 6

return segval;
}

/*This function simulates the rolling of the dice*/
void roll_dice(unsigned char times)
{
unsigned char i;

for(i=0; i<times; i++)
{
DicePort = 0x06; // Display #1 on dice
_delay_ms(100);
DicePort = 0x5B; // Display #2 on dice
_delay_ms(100);
DicePort = 0x4F; // Display #3 on dice
_delay_ms(100);
DicePort = 0x66; // Display #4 on dice
_delay_ms(100);
DicePort = 0x6D; // Display #5 on dice
_delay_ms(100);
DicePort = 0x7D; // Display #6 on dice
_delay_ms(100);

}
}

/*Interrupt Service Routine for timer overflow*/
ISR(TIMER0_OVF_vect)
{
seed++; // Increment the value in the variable seed
}
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 10:34 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Master_Of_King
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Na man nepatiko tas kodas kažkaip nekaip atrodo. Pirmiausiai susirašai iš eilės visus skaičius į masyvą:
unsigned char const nr[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF} ;
čia šešioliktainiai skaičiai kurį parašius tarkim PORTB=0xC0; gautume 0 (na čia reikia tik susitvarkyti pagal savo jungimą). o paskui kode įterpi taip PORTB=nr[skaičius]; o tas "skaičius" yra tas kurį nori parodyti savo segmente. Tikiuosi suprasi ką parašiau Smile čia tas masyvas paimtas iš šito projekto http://www.elektronika.lt/schemos/mikrovaldikliai/10954/laikmatis-su-attiny2313/
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 10:51 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
taip kažkiek supratau bet neaišku toje vietoje kur yra PORTB=nr[skaičius] ka reikia rašyti vietoj nr o man dar nesigauna su jungikliu kaip maždaug reiketu parašyti jungikliui kodą kad ji paspaudus skaičius užsifiksuotu o antrd kartą paspaudus kita skaicių parodytu kaip viską sudeliot? Rolling Eyes
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 12:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
dmb-220
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
nr yra masyvo pavadinimas, jo i nieka kita nereik keisti.

_________________
Skype: dmb-220
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 12:32 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ą
skaicius[10]={a,b,c,d..ir t.t}; aprasymas.

skaiciaus pvz 5 paemimas is masyvo: x=skaicius[5]; Ta x reikia persiusti i isvadus, kurie valdys skaiciaus segmentus. Cia a,b, c ir tt, skaiciu septynsegmentiniai kodai...

_________________
Nieko taip lengvai nedaliname, kaip patarimus...
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 15:25 Pranešti apie taisyklių pažeidimą Atsakyti su citata
didshirshis
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
as dariau taip (3skaiciukai, pajungti ant 1 porto +3pinai is kito porto):

Kodas:
   #define nulis 0b11101110
   #define vienas 0b00101000
   #define du 0b11001101
   #define trys 0b01101101
   #define keturi 0b00101011
   #define penki 0b01100111
   #define sesi 0b11100111
   #define septyni 0b00101100
   #define astuoni 0b11101111
   #define devyni 0b01101111


Kodas:
   //PORTB0 - 1sk
   //PORTB6 - 2sk
   //PORTB7 - 3sk


Kodas:
sk1=skaicius/100;
      sk2=(skaicius/10)%10;
      sk3=skaicius%10;
      
PORTB|=(1<<0);
if(sk1==0){PORTD=nulis;}
if(sk1==1){PORTD=vienas;}   
if(sk1==2){PORTD=du;}      
if(sk1==3){PORTD=trys;}
if(sk1==4){PORTD=keturi;}   
if(sk1==5){PORTD=penki;}   
if(sk1==6){PORTD=sesi;}
if(sk1==7){PORTD=septyni;}   
if(sk1==8){PORTD=astuoni;}   
if(sk1==9){PORTD=devyni;}
        _delay_ms(20);
   PORTB&=~(1<<0);
   
PORTB|=(1<<6);
if(sk2==0){PORTD=nulis;}
if(sk2==1){PORTD=vienas;}   
if(sk2==2){PORTD=du;}      
if(sk2==3){PORTD=trys;}
if(sk2==4){PORTD=keturi;}   
if(sk2==5){PORTD=penki;}   
if(sk2==6){PORTD=sesi;}
if(sk2==7){PORTD=septyni;}   
if(sk2==8){PORTD=astuoni;}   
if(sk2==9){PORTD=devyni;}
        _delay_ms(20);
   PORTB&=~(1<<6);

PORTB|=(1<<7);
if(sk3==0){PORTD=nulis;}
if(sk3==1){PORTD=vienas;}   
if(sk3==2){PORTD=du;}      
if(sk3==3){PORTD=trys;}
if(sk3==4){PORTD=keturi;}   
if(sk3==5){PORTD=penki;}   
if(sk3==6){PORTD=sesi;}
if(sk3==7){PORTD=septyni;}   
if(sk3==8){PORTD=astuoni;}   
if(sk3==9){PORTD=devyni;}
        _delay_ms(20);   
   PORTB&=~(1<<7);


Kur "skaicius" yra norimas i ekrana isvesti skaicius.

_________________
Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau Very Happy
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 17:13 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Master_Of_King
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
didshirshis tavo kodą butų labai lengva sutrumpinti su masyvu:
Kodas:

unsigned char const nr[10] = {0b11101110,0b00101000,0b11001101,0b01101101,0b00101011,0b01100111,0b11100111,0b00101100,0b11101111,0b01101111};

sk1=skaicius/100;
      sk2=(skaicius/10)%10;
      sk3=skaicius%10;
       
PORTB|=(1<<0);
PORTD=nr[sk1];
        _delay_ms(20);
   PORTB&=~(1<<0);
   
PORTB|=(1<<6);
PORTD=nr[sk2];

        _delay_ms(20);
   PORTB&=~(1<<6);

PORTB|=(1<<7);
PORTD=nr[sk3];
        _delay_ms(20);   
   PORTB&=~(1<<7);
[/code]
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 17:36 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
aci uz koda bet noretusi paciam na pabandziau daryti tai nesugalvoju kaipp padaryti jai paspaudi antra karta PORTA=nr[2] nusystatytu ? Rolling Eyes


#include <avr/io.h>


int main( void )

{

DDRA=0xFF;
PORTB=1;

unsigned char const nr[10] = {0xBF,0x30,0x5B,0x4F,0x26,0x6D,0x7D,0x82,0xF8,0x80} ;
unsigned char a=0;

while(1)
{
if (!(PINB&1))
{
if (a==0)a=1; else a=0;
while(!(PINA&1)){}
}
{
if (a==1)
PORTA=nr[1]; else PORTA=nr[0];
}





}

}
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 17:49 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sopkis
Moderatorius
Moderatorius
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje ICQ numeris
Tai tau reikia algoritmų sudarymo mokintis. Pvz:
nuskaitom mygtuką
jei paspausta - kažkokia reikšmė +1, b=1000000
jei nepaspausta - einam į rodyti skaičių
rodom skaičių: jei kažkokia reikšmė =0 - rodom 0, ir tt iki 9
b=b-1, jei b=0 einam į nuskaitom mygtuką, kitaip einam i rodom skaičių (čia pauzė kad sulaukti mygtuko atleidimo).

Kažką panašaus ir tu turi pasirašyti pradžioje, poto visus veiksmus ir sąlygas perrašai c kalba.
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 18:03 Pranešti apie taisyklių pažeidimą Atsakyti su citata
atmega8
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą AIM adresas Yahoo Messenger MSN Messenger
o gal kokios info zinot apie toki rasyma nes nelabai suprantu su tomis b=100000 ir panasiai Confused
 Atmega16 programa
PranešimasParašytas: 2012 01 15, 18:25 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sopkis
Moderatorius
Moderatorius
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje ICQ numeris
Dalykas toks, kad net tavo mikrovaldikliui veikiant 1Mhz dažniu, jis tą visą ciklą (mygtuko patikrinimas, skaičiaus padidinimas ir skaičiaus išvedimas) atliks labai greitai, ir kol tu net trumpai spustelsi mygtuką, jis tą skaičių padidins ne vieną kartą. Užtat tau reikia daryti kažkokią pauzę po paspaudimo, arba laukti kol mygtukas bus atleistas, kad padidinti tą skaičių. Ką ir kaip tu darysi, čia jau tavo apsisprendimo reikalas. Jei nori kad skaičius didintusi griežtai nuo paspaudimo - tada algoritmas bus toks, kuris laukia mygtuko atleidimo, jei nori kad laikant paspaustą mygtuką skaičius po truputį didėtų pats, tada po paspaudimo darai pauzę, ir tuo metu mygtuko netikrini.
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
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