Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

16f877 i 7 seg display

[es] :: Elektronika :: Mikrokontroleri :: 16f877 i 7 seg display

[ Pregleda: 2164 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zero hour

Član broj: 105215
Poruke: 85
*.dynamic.sbb.rs.



Profil

icon 16f877 i 7 seg display04.04.2011. u 19:25 - pre 158 meseci
Pozdrav
Ovako imam 8 komada 7 segmentnih displeja, i ideja je da sa kompa iz Visual Basic-a saljem neke brojeve ,prvo u pic 16f877 i onda na display-e, e sad prva ideja je bila da to radi u multiplexu, ali imam problema sa kodom, ako neko zna kako bi to mogao resiti neka mi da neku ideju....ili mozda da to uopste ne bude multiplex, jer nisam siguran da tako moze, mozda nesto sa shift registrom samo ne znam kako bi to izveo...pa ako moze neka pomoc
zero hour
 
Odgovor na temu

MasterOfDisaster
Srbija

Član broj: 274933
Poruke: 71
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: 16f877 i 7 seg display04.04.2011. u 21:24 - pre 158 meseci
Nisi naglasio sa kojim portom bi sve to radio, ako je u pitanju serijska komunikacija (USB ili DB9) ili paralelna (LPT)?

Sve zavisi od vrste komunikacije... evo da ti pomognem malo oko izbora:

ja mislim da bi sa LPT-om najednostavnije prosao, cak ti i ne bi ni trebao MCU, sa LPT-om bi imao iste korakteristike
kao i sa LPT-om i MCU-om zajedno... jedina prednost zasto se vezuje MCU na LPT je kad zelis da ti taj MCU izracuna neki ADC... i onda vrati u racunar
, ili kad zelis da izvrsis nesto sto se desava brzo pa onda po sporijoj brzini da vratis u racunar posto je LPT sporiji, mozda je zastarela tehnologija i na novijim
racunarima ces teze vezivati taj uredjaj ali je po meni najjednostavnija.

Isto vazi i za RS232(DB9) doduse nzm bas njegove karakteristike osim to da ima sreijski prenos podataka, ali sam gledao neke primere i isto je jednostavno
povezati se na njega.

I USB je najlepse resenje samo ako se mozes snaci s njim posto nije jednostavno sastaviti sve sa USB-om da radi kako treba, bar za mene

btw ovo za multiplex, pa povezes tih osam paralelno (e sad nisam siguran koliko njih je moguce vezati paralelno, za 4 sam siguran) odnosno povezes
im ponove za masu i sve to bacis na MCU ako su svi sa katodom ako ne obrtno a ovi preostale anode povezes na MCU samo svaki posebno i onda
MCU-om palis prvu anodu i generises broj masom i onda na 5ms gasis prvu anodu a palis drugu i generises broj za nju i sve tako e sad nzm dal je to
multiplex jer je frekfencija uvek ista... kako bilo, imas gore u TOP temi tutorijal za 7 segmentne displeje, stvarno dobra stvar.

Eto ja ti dadoh neke opcije, verovatno ovo znas... kako god, daj neke argumente za taj tvoj projekat pa ce ti i ostali pomoci.

Pozdrav
 
Odgovor na temu

milanmeh
Novi Sad

Član broj: 206027
Poruke: 213
*.ptt.rs.



+7 Profil

icon Re: 16f877 i 7 seg display04.04.2011. u 23:52 - pre 158 meseci
Sto se tice multipleksiranja, evo kako sam ja resavao.

Podesis jedan od brojaca da radi i da generise overflow interrupt. Broj overflow dogadjaja po sekundi odredjujes na osnovu broja 7-Seg displeja koje ces koristiti. Ako koristis 5 7-Seg displeja, podesi da ti se tajmer overflowuje 500x po sekundi kako bi svaki od displeja treptao sa frekvencijom od 100Hz. U interrupt rutini inkrementiraj jednu promenljivu od 0 do 4, koja ce odgovarati pozicijama displeja.

Evo deo koda iz interrupt rutine za multipleksiranje 4 7-Seg displeja. Do duse ovo je za AVR ali mislim da se moze videti poenta.
Code:

if(++pos==4){
    pos=0;
}

if(pos==0){
    PORTB&=~disp[3];
    PORTD=DIS0;
    PORTB|=disp[0];
}
else if (pos==1){
    PORTB&=~disp[0];
    PORTD=DIS1;
    PORTB|=disp[1];
}
else if(pos==2){
    PORTB&=~disp[1];
    PORTD=DIS2;
    PORTB|=disp[2];
}
else if(pos==3){
    PORTB&=~disp[2];
    PORTD=DIS3;
    PORTB|=disp[3];
}

Ako je pos=0, selekcioni pin od prethodnog displeja spustamo na low (displej 3), postavljamo na DATA port kombinaciju koja ce ciniti trazeni broj i na kraju stavljamo selekcioni pin displeja 0 na high. U sledecem ciklusu pos ce se inkrementirati i sve ovo ce se ponoviti za displej 1, displej 2...
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
212.178.235.*



+28 Profil

icon Re: 16f877 i 7 seg display05.04.2011. u 17:50 - pre 158 meseci
Ako si vec imao problema sa kodom (prijem podataka i multipleks, sve u interaptu), odradis, kao sto si i sam dosao do zakljucka, pomosu siftera HC595, na primer. Za svaku cifru ce ti biti potreban po jedan cip i 7-8 otpornika, za komunikaciju 3 pina sa uC (Data, Clock i Latch)
 
Odgovor na temu

zero hour

Član broj: 105215
Poruke: 85
*.dynamic.sbb.rs.



Profil

icon Re: 16f877 i 7 seg display05.04.2011. u 20:47 - pre 158 meseci
a skontao sam da mi ne odg multiplex jer ce to sve da trepti kad prima, pa sam i sam mislio to uraditi sa 74hc595, i sad spojim display na jedan cip i ovo sve na uC, e ali me opet muci kod (koristim pbp) , znaci saljem s kompa preko seriskog DB9 porta...e sad primim broj koji hocu s kompa, smestim ga u promenljivu (kako to vec ide) i kako onda to poslati na taj registar ?

primer na portb.0 spojen je jedan registar na njegov serijski ulaz (data)
na portb.1 drugi registar i tako dalje ,na porta.1 je clock, i porta.2 je latch ....i sad

serin porta.0, N2400, ["A"], B0 //primio sam podatak i kako sad to proslediti na odredjen registar...ja sam pokusao nesto ali to nece bas da radi kako treba....pa ako moze pomoc


zero hour
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
212.178.235.*



+28 Profil

icon Re: 16f877 i 7 seg display05.04.2011. u 22:57 - pre 158 meseci
Proton+, slicab PBP-u:

Code:

Shout 
  
Syntax 
Shout Dpin, Cpin, Mode, [OutputData {\Bits} {,OutputData {\Bits}..} ]  
  
Overview 
Shift data out to a synchronous serial device.  
  
Operators 
Dpin is a Port.Pin constant that specifies the I/O pin that will be connected to the synchronous 
serial device's data input. This pin will be set to output mode.  
Cpin is a Port.Pin constant that specifies the I/O pin that will be connected to the synchronous 
serial device's clock input. This pin will be set to output mode.  
Mode is a constant that tells Shout the order in which data bits are to be arranged. Below are 
the symbols, values, and their meanings: -  
  
Symbol  Value  Description 
LsbFirst 
LsbFirst _L 

Shift data out lowest bit first. 
Clock idles low 
MsbFirst 
MsbFirst_L 

Shift data out highest bit first. 
Clock idles low 
LsbFirst _H  4 
Shift data out lowest bit first. 
Clock idles high 
MsbFirst_H  5 
Shift data out highest bit first. 
Clock idles high 
 
OutputData is a variable, constant, or expression containing the data to be sent.  
Bits is an optional constant specifying how many bits are to be output by Shout. If no Bits entry 
is given, Shout defaults to 8 bits.  
  
Notes 
Shin and Shout provide a method of acquiring data from synchronous serial devices. Data bits 
may be valid after the rising or falling edge of the clock line. This kind of serial protocol is com-
monly used by controller peripherals like ADCs, DACs, clocks, memory devices, etc.  
  
At their heart, synchronous-serial devices are essentially shift-registers; trains of flip flops that 
receive data bits in a bucket brigade fashion from a single data input pin. Another bit is input 
each time the appropriate edge (rising or falling, depending on the device) appears on the clock 
line.  
  
The Shout instruction first causes the clock pin to output low and the data pin to switch to out-
put mode. Then, Shout sets the data pin to the next bit state to be output and generates a 
clock pulse. Shout continues to generate clock pulses and places the next data bit on the data 
pin for as many data bits as are required for transmission.  
 
Making Shout work with a particular device is a matter of matching the mode and number of 
bits to that device's protocol. Most manufacturers use a timing diagram to illustrate the relation-
ship of clock and data. One of the most important items to look for is which bit of the data 
should be transmitted first; most significant bit (MSB) or least significant bit (LSB).  

 
Example 
  
  Shout DTA, CLK, MsbFirst, [250]  
  
In the above example, the Shout command will write to I/O pin DTA (the Dpin) and will gener-
ate a clock signal on I/O CLK (the Cpin). The Shout command will generate eight clock pulses 
while writing each bit (of the 8-bit value 250) onto the data pin (Dpin). In this case, it will start 
with the most significant bit first as indicated by the Mode value of MsbFirst.  
  
By default, Shout transmits eight bits, but you can set it to shift any number of bits from 1 to 16 
with the Bits argument. For example: -  
  
 Shout DTA, CLK, MsbFirst, [250\4]  
  
Will only output the lowest 4 bits (%0000 in this case). Some devices require more than 16 bits. 
To solve this, you can use a single Shout command with multiple values. Each value can be 
assigned a particular number of bits with the Bits argument. As in: -  
  
 Shout DTA, CLK, MsbFirst, [250\4, 1045\16]  
  
The above code will first shift out four bits of the number 250 (%1111) and then 16 bits of the 
number 1045 (%0000010000010101). The two values together make up a 20 bit value


Ovo ti je iz Help-a, koliko me memorijapamcenja sluzi, trebalo bi da je u PBP slicno.
 
Odgovor na temu

zero hour

Član broj: 105215
Poruke: 85
*.dynamic.sbb.rs.



Profil

icon Re: 16f877 i 7 seg display08.04.2011. u 11:05 - pre 158 meseci
@Sepa011 hvala ti na pomoci, postoji slicna stvar u PBP komanda je shiftout i to radi ono sto sam ja hteo ....uspeo sam da ispisem na display odredjenu stvar...hvala :)
zero hour
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
212.178.235.*



+28 Profil

icon Re: 16f877 i 7 seg display08.04.2011. u 12:03 - pre 158 meseci

Ovako radi sa 3 komada 7-seg.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: 16f877 i 7 seg display

[ Pregleda: 2164 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.