 |

|
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 1 iš 2 Pereiti prie 1, 2 Toliau |
|
 |
Atmega16 programa |
Parašytas: 2012 01 14, 20:30 |
|
|
|
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 |
Parašytas: 2012 01 14, 20:40 |
|
|
|
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 |
Parašytas: 2012 01 14, 20:47 |
|
|
|
na as dar zales tai nelabai suprantu o kas tas masyvas gal kokios teorijos lt kalba yra  |
|
|
|
|
 |
Atmega16 programa |
Parašytas: 2012 01 14, 20:51 |
|
|
|
Gal kas galit koki pavyzdi ideti kad butu aiskiau  |
|
|
|
|
 |
 |
Atmega16 programa |
Parašytas: 2012 01 14, 22:46 |
|
|
|
Gal imanoma sita koda perdaryti ka reiketu ismesti ka prideti as kazka bandziau bet nelabai panu gaunasi
/*
* 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 |
Parašytas: 2012 01 15, 10:34 |
|
|
|
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 čia tas masyvas paimtas iš šito projekto http://www.elektronika.lt/schemos/mikrovaldikliai/10954/laikmatis-su-attiny2313/ |
|
|
|
|
 |
Atmega16 programa |
Parašytas: 2012 01 15, 10:51 |
|
|
|
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?  |
|
|
|
|
 |
Atmega16 programa |
Parašytas: 2012 01 15, 12:03 |
|
|
|
nr yra masyvo pavadinimas, jo i nieka kita nereik keisti. |
|
_________________ Skype: dmb-220 |
|
|
|
 |
Atmega16 programa |
Parašytas: 2012 01 15, 12:32 |
|
|
|
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 |
Parašytas: 2012 01 15, 15:25 |
|
|
|
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  |
|
|
|
 |
 |
Atmega16 programa |
Parašytas: 2012 01 15, 17:13 |
|
|
|
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 |
Parašytas: 2012 01 15, 17:36 |
|
|
|
aci uz koda bet noretusi paciam na pabandziau daryti tai nesugalvoju kaipp padaryti jai paspaudi antra karta PORTA=nr[2] nusystatytu ?
#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 |
Parašytas: 2012 01 15, 17:49 |
|
|
|
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 |
Parašytas: 2012 01 15, 18:03 |
|
|
|
o gal kokios info zinot apie toki rasyma nes nelabai suprantu su tomis b=100000 ir panasiai  |
|
|
|
|
 |
Atmega16 programa |
Parašytas: 2012 01 15, 18:25 |
|
|
|
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. |
|
|
|
|
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
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 |
|

|
 |