|
|
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 12 26, 22:53. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » 7segnentu LED valdynas
|
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 |
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 18, 15:09 |
|
|
|
Kiekvienam skaitmeniui apsirašyti reikia konstantų masyvą, kur kreipiantis pagal jo indeksą gautum 7 segmentų kodą. Ir tada išvesti į LEDą. |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 19, 14:03 |
|
|
|
vakaras rašo: |
Kiekvienam skaitmeniui apsirašyti reikia konstantų masyvą, kur kreipiantis pagal jo indeksą gautum 7 segmentų kodą. Ir tada išvesti į LEDą. |
gal gali kokį PVZ mestelt, ar bent jau esmę C kalbai papasakot, nes dabar rašau tokią programą, kuriai to reiks, paskui rašysiu kitą, kurtiai irgi reiks. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 19, 14:29 |
|
|
|
Realizacija naudojant WinAVR. Gal kur ir suklydau - su notepad sumeciau ir netikrinau.
Kodas: |
#include <avr/pgmspace.h>//reikalinga biblioteka
#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/iom8.h>//atmega8
#include <avr/pgmspace.h>
//skaitmenu lentele saugome flash atminty
const uint8_t skaitmenys[] PROGMEM=
{
0b00000000,//susidelioji kievieno pino reiksmes
0b00010000,
0b00001000,
0b00000100,
0b00000010,
0b00000001,
0b00000000,
0b00000000
};
int main(void)
{
uint8_t pcc, i;
DDRD=0xFF;
i=0;
while(1)//amzinas ciklas
{
//skaitai is programu atminties norima skaiciu su komanda
pcc=pgm_read_byte(&skaitmenys[i++]);
//isvedi i porta kur prijungtas indikatorius
PORTD=pcc;
_delay_ms(30);//velinimas
if (i==8) i=0;
}
} |
|
|
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 19, 19:37 |
|
|
|
Štai vienos mano programos kodas:
Kodas: |
__flash unsigned char Digits[]=
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
// 0 1 2 3 4 5 6 7 8 9
........
PORTC = Digits[A]; // Išvedamas A skaitmuo 0..9
|
Rašyta IAR kompiliatoriui. |
|
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 20:25 |
|
|
|
Mindaugasu rašo: |
Realizacija naudojant WinAVR. Gal kur ir suklydau - su notepad sumeciau ir netikrinau.
Kodas: |
#include <avr/pgmspace.h>//reikalinga biblioteka
#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/iom8.h>//atmega8
#include <avr/pgmspace.h>
//skaitmenu lentele saugome flash atminty
const uint8_t skaitmenys[] PROGMEM=
{
0b00000000,//susidelioji kievieno pino reiksmes
0b00010000,
0b00001000,
0b00000100,
0b00000010,
0b00000001,
0b00000000,
0b00000000
};
int main(void)
{
uint8_t pcc, i;
DDRD=0xFF;
i=0;
while(1)//amzinas ciklas
{
//skaitai is programu atminties norima skaiciu su komanda
pcc=pgm_read_byte(&skaitmenys[i++]);
//isvedi i porta kur prijungtas indikatorius
PORTD=pcc;
_delay_ms(30);//velinimas
if (i==8) i=0;
}
} |
|
hmm, kažkaip man kompas nenori priimti pgmspace includo, pažiūrėjau, tai jis yra savo vietoj, ir kompas jį randa kai kompiliuoji, tik su tuo includu AVRSTUDIO pakimba. na bet jei ką aš jau kažką panašaus parašiau kitaip, ir viskas veikia. , panaudojau naują void`ą, ir iš esmės gerai išėjo . |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 20:43 |
|
|
|
tiesa, ten reikėjo iš ne pagrindinės programos(na kai būna void main, ar pan.), įvesti duomenis į main`ą? toje programoj aš laikinai panaudojau, portą. taigi, koks yra paprasčiausias būdas pernešti 8 bitus, iš nepagrindinės programos dalies, į pagrindinę (main`ą)? kažkaip į kitą pusę pervesti paprasčiau. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 21:21 |
|
|
|
JAULER rašo: |
tiesa, ten reikėjo iš ne pagrindinės programos(na kai būna void main, ar pan.), įvesti duomenis į main`ą? toje programoj aš laikinai panaudojau, portą. taigi, koks yra paprasčiausias būdas pernešti 8 bitus, iš nepagrindinės programos dalies, į pagrindinę (main`ą)? kažkaip į kitą pusę pervesti paprasčiau. |
Įdomu, kas nors supras ko norėjai paklausti?... |
|
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 21:56 |
|
|
|
pabandysiu aiškiau, vienu žodžiu yra pas mane taip, kadangi kompas nepriėmė PGMSPACE includo, man reikėjo kažkaip parašyt tą konstantų masyvą, ar kažką panašaus (naudoju winAVR). ir šovė į galvą mintis. panaudojau atskirą void apelsinas() (pavadinimą tokį "apelsinas" sugalvojo draugas ) kurioje surašytos reikšmės su if funckija, prireikė tik 10 if, nes yra 10 skaičių 1,2,3,4,5,6,7,8,9,0. informacija apie tai, koks skaičius yra perduodama per s kintamajį, kuris yra tarp tų skliaustų, kur būna void apelsinas(unsigned int s). programa atrodo taip:
void apelsinas(unsigned int s)
Kodas: |
void apelsinas(unsigned int s)
{
if(s==1) {PORTB = 96 ;}
if(s==2) {PORTB = 218;}
if(s==3) {PORTB = 242;}
if(s==4) {PORTB = 102;}
if(s==5) {PORTB = 182;}
if(s==6) {PORTB = 190;}
if(s==7) {PORTB = 224;}
if(s==8) {PORTB = 254;}
if(s==9) {PORTB = 246;}
if(s==0) {PORTB = 252;}
}
|
šį kartą, kol kas, na visos programos išbandymui parašiau tą reikšmę išduotų per PORTB, ir paskui main`e rašau kad PORTA = PORTB, taip pernešdamas 8 bit į main`ą iš apelsino. O man įdomu, kaip tai padaryti, nenaudojant portB, na dabar gal aiškiau? |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 23:16 |
|
|
|
JAULER rašo: |
Kodas: |
void apelsinas(unsigned int s)
{
if(s==1) {PORTB = 96 ;}
if(s==2) {PORTB = 218;}
if(s==3) {PORTB = 242;}
if(s==4) {PORTB = 102;}
if(s==5) {PORTB = 182;}
if(s==6) {PORTB = 190;}
if(s==7) {PORTB = 224;}
if(s==8) {PORTB = 254;}
if(s==9) {PORTB = 246;}
if(s==0) {PORTB = 252;}
}
|
|
Na siuo atveju mazas pakeitimas padetu, jeigu supratau tavo klausima..
Kodas: |
uint8_t apelsinas(uint8_t s)
{
if(s==1) return 96;
if(s==2) return 218;
if(s==3) return 242;
if(s==4) return 102;
if(s==5) return 182;
if(s==6) return 190;
if(s==7) return 224;
if(s==8) return 254;
if(s==9) return 246;
if(s==0) return 252;
}
|
siaip geriausia tokias lenteles apsirasyti masyve. |
|
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 20, 23:44 |
|
|
|
JAULER rašo: |
na visos programos išbandymui parašiau tą reikšmę išduotų per PORTB, ir paskui main`e rašau kad PORTA = PORTB, taip pernešdamas 8 bit į main`ą iš apelsino. |
Jooo... Va čia tai dviratininkas....
Juk esu viršuje parašęs kaip reikia daryti. Vos dvi eilutės, ir viskas. Na bet jei nesiklausai - Tavo reikalas. Perdavinėk duomenis per portus jei tau taip patogiau... |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 21, 15:17 |
|
|
|
ką gi, susitvarkiau, ir parašiau konstantų masyvą, tokį kokį vakaras siūlė, ačiū. .
P.S. vakare, tavo programoj, kur siūlei, na, ją reikėjo patobulint, nes tiesiogiai ji neveikė, tik patvarkius. |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 21, 16:05 |
|
|
|
JAULER rašo: |
ką gi, susitvarkiau, ir parašiau konstantų masyvą, tokį kokį vakaras siūlė, ačiū. .
P.S. vakare, tavo programoj, kur siūlei, na, ją reikėjo patobulint, nes tiesiogiai ji neveikė, tik patvarkius. |
Na cia klausimas koki tu C kompiliatoriu naudoji. Nes ivairios direktyvos tai skiriasi... |
|
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 21, 16:38 |
|
|
|
naudoju winAVR. turbūt dėl to ir nepriėmė man visų tų dviejų eilučių, jei konkrečiau nepriėmė:
be jo veikia gerai, išbandžiau |
|
_________________ nepamirškit, klysti žmogiška
privatas - privatiems klausimams
arch linux |
|
|
|
|
7segnentu LED valdynas |
Parašytas: 2006 06 22, 08:44 |
|
|
|
Jeigu tu nuemei ta _flash, tai dabar tavo lentele yra saugoma mikrokontrolerio RAM atmintyje. Gerai jeigu lentele nedidele, tai išsiteks, bet jeigu lentele virsys RAM Steko dydi, tada niekur nedingsi, teks grusti i Flash atminti. |
|
|
|
|
|
|
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,
FS25 Maps |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|