|
|
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 2024 11 07, 22:32. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » 8 bitai į tris septynių segmentų skaičius?
|
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
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 18:43 |
|
|
|
Sveiki. Esmė tokia. Man reikia padaryt prietaisą, kuris skaičiuotų mygtuko paspaudimą. Bent jau iki 255, tai užtektų 8 bitų. Ketinu naudot mikrovaldiklį Atmega16, tai čia ir vieno porto užtektų. Bet problema su tais 7 segmentų indikatoriais. Žinau, kad yra 7447 mikroschemos, kurios 4 bitus konvertuoja vienam 7 segmentų indikatoriui. Bet tie šešioliktainiai skaičiai trukdo. Reikia kažkaip padaryt, kai kai tik valdiklio išėjime yra 1010 įvyktų pernaša į kitą indikatoriu (kad prasidėtų nauja dešimtis), taip pat ir su šimtais. Ir kad neprasidėtų tie visi A,B,C...F šešioliktainiai skaičiai. Kas turi minčių, kaip tuos tris indikatorius prijungt prie 8bitų, kad skaičiavimas būtų dešimtainėj sistemoj? |
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 18:55 |
|
|
|
Dar sąvaitėlę po forumus panaršyk, pasiskaitinėk kaip kas daroma. Nes matosi kad kol kas didelis žinių trūkumas, jei tokie klausimai užduodami. |
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 20:00 |
|
|
|
Tai mokinkis ne tik ieškoti, bet ir atsirinkti tai kas tau naudinga. Nes užduodami klausimai kol kas rodo dideles spragas progamavimo ir mikrovaldiklių srityje. Dar kol kas neparašei nei kokia kalba rašai programą, nei tai, ar tuos 3x7 segmentus valdysi statiniu ar dinaminiu būdu, kokiu būdu spręsi mygtuko drebėjimo problemą ir tt. |
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 20:13 |
|
|
|
tokiai uzduociai ir ATtiny2313 ar ATmega8 per akis.
juolab atmega8 be jokiu raukciu gali susiprograminti arduino IDE
skaiciuoti BCD nera jokio tikslo, juk vistiek neisnaudoji turimos atminties, todel be problemu gali kiekvienam skaitmeniui skirti po baita.
Kodas: |
/*
Simple counter with ATtiny2313 V.beta
LED indicator pin assignment and code
for symbols
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 pins
DP G F E D C B A segments
1 1 0 0 0 0 0 0 0xC0 0
1 1 1 1 1 0 0 1 0xF9 1
1 0 1 0 0 1 0 0 0xA4 2
1 0 1 1 0 0 0 0 0xB0 3
1 0 0 1 1 0 0 1 0x99 4
1 0 0 1 0 0 1 0 0x92 5
1 0 0 0 0 0 1 0 0x82 6
1 1 1 1 1 0 0 0 0xF8 7
1 0 0 0 0 0 0 0 0x80 8
1 0 0 1 0 0 0 0 0x90 9
* DP galima nejungti
PD3 = CA1
PD4 = CA2
PD5 = CA3
PD6 = counter input with Pull-Up
*/
#define F_CPU 1000000 // default fuses, internal RC with DIV8
#include <avr/io.h>
#include <util/delay.h>
#define button() (PIND & (1<<6))
void display(void);
unsigned char segs[] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90} ;
// 0 1 2 3 4 5 6 7 8 9
unsigned char cnt[] = {0, 0, 0};
int main(void)
{
unsigned char i;
DDRB = 0xFF; // PB0..PB7 = a...g,dp
PORTB = 0xFF;
DDRD |= (7<<3); // PD3..PD5 = CA1..CA3
PORTD &= ~(7<<3);
DDRD &= ~(1<<6); // PD6 counter input
PORTD |= (1<<6);
display();
delay(1000);
while(1){
while(button()) display();
for(i=0; i<sizeof(cnt); i++)
if(cnt[i] < 9) cnt[i]++;
for(i=0; i<100; i++) display();
while(!button()) display();
}
return 0;
}
void display(void)
{
static unsigned char dig;
while(t--){
_delay_ms(1);
if(dig >= sizeof(cnt)) dig = 0;
else dig++;
PORTD &= ~(7<<3);
PORTB = segs[cnt[dig]];
PORTD |= (1<<3+dig);
// jei reikia atvirksciai - (1<<5-dig)
}
} |
siaip, si koda nesunkiai gali pakoreguoti skaiciuoti ir rodyti iki 6 skaitmenu
kas bus 0..999999 ribose
o su nedidele korekcija ir iki 8 skaitmenu 0..99999999 ribose
jei reikia skaiciuoti didesnio nei 10Hz daznio signalus, koda reikia siek tiek modifikuoti |
|
Paskutinį kartą redagavo AlgisL, 2013 04 10, 22:35. Redaguota 4 kartus(ų) |
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 20:46 |
|
|
|
Dekui Algiui.
Lengva kalbėt... "Mokinkis" sako. Sunku rast normalius paaiškinimus, kaip tuos atmel valdiklius su c kalba programuot. O jei ką paklausi, tai prasideda va tokių, kaip moderatoriaus išsidirbinėjimai. Tipo čia visi aplink kvaili... Jei univere mokytų tokius dalykus nuo pradžių, o ne asemblerius visokių atgyvenusių intel 8080 procesorių, tai gal ir mokėčiau su C programuot.
Reik mokėt elementariai paaiškint. Kad ir šitą kodą, kur parašė Algis, man reiks aiškintis dar pora dienų. Kiekvieną simbolį ir jo funkciją. |
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 21:37 |
|
|
|
Jei nori kažką gamintis tai ir mokykis. Aš pats kokį pusmetį mokinausi kol kažką sugebėjau padaryti. Nes kol pats neišsiaiškinsi kaip kas veikia ir daroma, tai savarankiškai nieko nepadarysi. Ir net nesitikėk kad internete yra kažkokios pamokos, kad po dviejų dienų jau sugebėsi norimus prietaisus pasigaminti. Ne veltui sakoma - pradėk nuo šviesos diodų pamirksenimo, tada jau po truputį judėk ir mokykis toliau. |
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 22:12 |
|
|
|
Tai suprantama. Nuo to ir pradėjau. Nuo Atmegos16. Bet Arduino nepirkau, kaip dauguma Pasimokiau išvedimus, ciklus... Bet tada koją kišt pradėjo tie visokie mandri užrašymai, pvz.: (1<<5) ir panašiai O čia dabar teko tokia gan nelengva užduotis ir noriu greit išsiaiškint kaip ją padaryt |
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 10, 22:28 |
|
|
|
(1<<5) reiskia 0b0010000 arba 5-as bitas, o pats "<<" yra poslinkio i kaire operatorius.
sitaip slankioti galima ir po kelis bitus, pvz (7<<3) rezultate virsta 0b00111000
operatorius "~" yra inversijos ir ~(7<<3) padaro 0b11000111 (kai operuojama baitiniu rezultatu)
PORTD &= (7<<3) tolygu PORTD &= 0b11000111 kas reiskia PD3=0, PD4=0, PD5=0 |
|
|
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 11, 13:22 |
|
|
|
Permanganatas rašo: |
Tai suprantama. Nuo to ir pradėjau. Nuo Atmegos16. Bet Arduino nepirkau, kaip dauguma Pasimokiau išvedimus, ciklus... Bet tada koją kišt pradėjo tie visokie mandri užrašymai, pvz.: (1<<5) ir panašiai O čia dabar teko tokia gan nelengva užduotis ir noriu greit išsiaiškint kaip ją padaryt |
Speju VGTU? Jai taip, tai turejai pirmame kurse C ir C++, jai tuomet bent kazkiek mokeisi, tu ziniu turetu uztekti tokiai uzduociai atlikti.
https://www.youtube.com/playlist?list=PLE72E4CFE73BD1DE1
Perziurek viska, turetumei bent siektiek ismokti. Ten net mygtuko drebejimo problema parodyta kaip isspresti tiek programiskai, tiek su kondencatorium.
Atmega16 tokiam darbui- gerokai per galinga.
Su tais poslinkiais- as pats ju nelabai megstu naudoti, mano nuomone patogiau tiesiog i registra ivesdineti reiksme, o ne poslinkius naudoti:
(1<<5) bus 0b00010000 arba tiesiog 0x10
~(7<<3) bus 0b11000111 arba tiesiog 0xC7 , nes C=12
Jaigu nemoki verstis i sesioliktaini, reiskia yra didelis ziniu trukumas |
|
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 11, 21:41 |
|
|
|
Ibanez rašo: |
Permanganatas rašo: |
Tai suprantama. Nuo to ir pradėjau. Nuo Atmegos16. Bet Arduino nepirkau, kaip dauguma Pasimokiau išvedimus, ciklus... Bet tada koją kišt pradėjo tie visokie mandri užrašymai, pvz.: (1<<5) ir panašiai O čia dabar teko tokia gan nelengva užduotis ir noriu greit išsiaiškint kaip ją padaryt |
Speju VGTU? Jai taip, tai turejai pirmame kurse C ir C++, jai tuomet bent kazkiek mokeisi, tu ziniu turetu uztekti tokiai uzduociai atlikti.
https://www.youtube.com/playlist?list=PLE72E4CFE73BD1DE1
Perziurek viska, turetumei bent siektiek ismokti. Ten net mygtuko drebejimo problema parodyta kaip isspresti tiek programiskai, tiek su kondencatorium.
Atmega16 tokiam darbui- gerokai per galinga.
Su tais poslinkiais- as pats ju nelabai megstu naudoti, mano nuomone patogiau tiesiog i registra ivesdineti reiksme, o ne poslinkius naudoti:
(1<<5) bus 0b00010000 arba tiesiog 0x10
~(7<<3) bus 0b11000111 arba tiesiog 0xC7 , nes C=12
Jaigu nemoki verstis i sesioliktaini, reiskia yra didelis ziniu trukumas |
Taip VGTU ir taip buvo C ir C++. Dabar mikroprocesoriai yra, bet tik apie jų architektūrą ir asemblerį. Aš nesakiau, kad nemoku į šešioliktainį verstis. Šitą tikrai gerai išmokė |
|
|
|
|
|
|
8 bitai į tris septynių segmentų skaičius? |
Parašytas: 2013 04 11, 21:52 |
|
|
|
Permanganatas rašo: |
Ibanez rašo: |
Permanganatas rašo: |
Tai suprantama. Nuo to ir pradėjau. Nuo Atmegos16. Bet Arduino nepirkau, kaip dauguma Pasimokiau išvedimus, ciklus... Bet tada koją kišt pradėjo tie visokie mandri užrašymai, pvz.: (1<<5) ir panašiai O čia dabar teko tokia gan nelengva užduotis ir noriu greit išsiaiškint kaip ją padaryt |
Speju VGTU? Jai taip, tai turejai pirmame kurse C ir C++, jai tuomet bent kazkiek mokeisi, tu ziniu turetu uztekti tokiai uzduociai atlikti.
https://www.youtube.com/playlist?list=PLE72E4CFE73BD1DE1
Perziurek viska, turetumei bent siektiek ismokti. Ten net mygtuko drebejimo problema parodyta kaip isspresti tiek programiskai, tiek su kondencatorium.
Atmega16 tokiam darbui- gerokai per galinga.
Su tais poslinkiais- as pats ju nelabai megstu naudoti, mano nuomone patogiau tiesiog i registra ivesdineti reiksme, o ne poslinkius naudoti:
(1<<5) bus 0b00010000 arba tiesiog 0x10
~(7<<3) bus 0b11000111 arba tiesiog 0xC7 , nes C=12
Jaigu nemoki verstis i sesioliktaini, reiskia yra didelis ziniu trukumas |
Taip VGTU ir taip buvo C ir C++. Dabar mikroprocesoriai yra, bet tik apie jų architektūrą ir asemblerį. Aš nesakiau, kad nemoku į šešioliktainį verstis. Šitą tikrai gerai išmokė |
kitame semestre turesi mikrovaldiklius, nesijaudink |
|
|
|
|
|
|
|
|
|
|
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 |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
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 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods |
|
|
|