Sari la conținut
ELFORUM - Forumul electronistilor

Matrice 5x8 cu 2x74HC164


Vizitator 3Nigma

Postări Recomandate

Vizitator 3Nigma

Am urmatoarea schema electrica:

Posted Image

Si urmatorul cod [PIC-C]:

#include <16F628A.h>#fuses INTRC_IO, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP#use delay(clock=4000000)void sendToClock(int clock_pin,int data_pin,int data){  int i;  for(i=0;i<8;i++)  {  output_bit(data_pin,shift_left(&data,1,0));  output_high(clock_pin);  output_low(clock_pin);  }}void main(){   setup_comparator(NC_NC_NC_NC);   set_tris_a(0b00000000);      sendToClock(PIN_A4,PIN_A2,0);      while(1){    sendToClock(PIN_A3,PIN_A2,0b10101010);    delay_ms(500);    sendToClock(PIN_A3,PIN_A2,0b01010101);    delay_ms(500);  }}

 

Conectarea cu MCU se face in felul urmator :

RA2 -> Data [ambele 74HC164]

RA3 -> Clk

74164 Reset -> 10K -> +5v

Rezistentele de pe anoadele matricei sunt de aprox 100ohmi.

U3 -> anoade

U4 -> catoade

 

Daca va uitati in codul sursa o sa vedeti ca ar trebui sa aprinda alternativ cele 8 randuri dupa tiparul 10101010/01010101.

Da...ar trebui, dar nu se intampla lucrul asta. Codul sursa scris pe pic este verificat si este corect.

Mi se intampla uneori sa se aprinda doar la inceput randul 4 si apoi randul 8 apoi nimic.

Am scos integratul de pe catoade si am legat catoadele direct la -, cu acelasi rezultat inasa: , matricia nu urmareste tiparul introdus de mine.

Am folosit si delay-uri in speranta ca registrele nu sunt suficient de rapide sa comute datele, nimic ...

 

PIC-ul este 100% bun lafel si matricea ...verificat.

 

Daca ajuta cu ceva:

Posted Image

 

O fi integratele-registre de vina?

 

Care are vreo idee? Ca eu nu stiu ce sa ii mai fac :|

 

P.S : precizez inca odata ca folosesc 74HC164 si NU 74HC595. Am inteles ca 595-urile sunt mai bune, e adevarat?

Link spre comentariu
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • bogdanm

    5

  • kit

    3

Top autori în acest subiect

S-ar putea sa fie cam putin 100ohmi. In datasheet-ul de la 74HC164 scrie ca nu prea suporta mai mult de 25mA pe iesire, ori cred ca tu ii ceri mai mult cu aia 100ohmi. Incearca cu 330ohmi sau chiar 470ohmi.

Link spre comentariu
Vizitator 3Nigma

Am Pull-up pe MCLR [schema nu are, dar daca te uiti mai bine in poza, e deasupra mcu]Schimbat cu 330, dar cam aceleasi simtome. Cand zic cam ... remarc urmatoarele :Cateodata imi ia bine programul, cateodata nu ... am pus legat Data de la 164 printr-un pull-up la 5V ca sa vad daca clock-ul il primeste bine si am observat ca, desi data este mereu 1, sunt momente in care nu primeste clock... sa se piarda semnalul oare? O fi interferentele de la fire ? [sunt mici ... nu cred, dar nici nu stiu]@kit : seria 74, dupa cum bine stiti e TTL : 1 logic = min aprox 2.4 v

Link spre comentariu

Scoate rezistenta aia de pe pinii 1 si 2 intr-o prima faza, nu te ajuta la nimic.Dupa aceea incearca un program foarte simplu cu PIC-ul, gen led blink pe un singur bin. Daca nu merge macar stii ca ai o problema cu el.

Link spre comentariu

VIHMinimum High?Level Input VoltageptrVout = 0.1 V or VCC ? 0.1 V|Iout| <=20uA=============================VCC=2.0 V => VIH=1.5 VVCC=4.5 V => VIH=3,15 VVCC=6.0 V => VIH=4,2 VVILMaximum Low?Level Input VoltageptrVout = 0.1 V or VCC ? 0.1 V|Iout| <=20uA=============================VCC=2.0 V => VIL=0,3 VVCC=4.5 V => VIL=0,9 VVCC=6.0 V => VIL=1,2 Vce mai tura-vura, scoate rezistentele alea, nu cred ca te ajuta cu nimic. De asemenea, poti incerca sa-i introduci un delay intre data si clock (stiu ca are deja, dar...) Eu, cu 595 am rezolvat problema doar pe osciloscop...Acuma logica programului... nu m-am uitat extrem de atent, dar pare ca n-are noima:Ii dai clock pe RA4 o data, dar nu-i transmiti nici o data (ii dai ZERO-LOW), deci registrul de pe RA4 nu va face mai nimic. In schimb faci shift la greu pe celalalt registru... De 2x pe bucla while. Eu cred ca ar trebui sa faci shift pe RA4 dupa fiecare apel sendToCLock(RA3,RA2,0b10101010);Mai bine ar fi doua cicluri for imbricate: in primul faci shift la un registru, iar in celalalt, secondar, faci shiftul pe al doilea.La fiecare 8 clock-uri ii transmiti o data HIGH (1L), apoi ii dai doar clock, asta pentru RA4, iar pentru RA3 apelezi send...cred, nu m-am uitat prea atent. daca am gresit, mii de scuze. :jytuiyu oricum, in faza asta nu inteleg cum a mers ... doar cu ceva paraziti, de aia iti recomand sa pui pe alimentarea fiecarui circuit cate un cond de 100nF.bafta!

Link spre comentariu

Alta chestie: scoate afisoru din circuit si incearca sa scoti un output fix (de exemplu 0b10101010) la iesirea unui 164. Masoara cu aparatul de masura nivelele logice la iesire ca sa vezi daca e bine.

Link spre comentariu
Vizitator 3Nigma

O mica explicatie este in ordine :Codul sursa asa cum l-am postat reprezinta o faza de test de-a mea. Am facut un circuit integrat sa latch-uie [pus pe catoade] pe cand cu celalalt am incercat sa generez un tipar de alternanta 01010101 / 10101010. A fost doar de test. Modul in care datele sunt trimise pe port sunt in regim serial [asa cum bine v-ati dat seama] - 1 bit pe rand. Registrele avanseaza "pe culmea-a crescatoare" a clockului deci -> tranzitia low-high din functie.Am incercat sa pastrez logica in regim de KISS [Keep It Simple Stupid],dar se pare ca nu mi-a iesit asa cum am dorit. :)In alta ordine de idei : Rezistenta respectiva [pull-down -ul de pe pin1 si 2] a fost pusa cu ideea de a deparazita inputul , dar inteleg acum ca nu e necesara.Am condensatori de filtrare pe sursa : e sursa normala cu convertor de tensiune si 2x100nf pe intrare si iesire.PIC-ul merge bine : verificat tensiunile de la prorgam cu V-Metru.Problema am rezolvat-o : se pare ca la cei 10 cm de fir cat e intre sursa si placa de test, se aduna zgomot : am mai pus un condensator in paralel cu alimentarea si merge acum.Eh lasa, ca asa se invata.Mersi baieti de timpul acordat :aplauzeP.S : am verificat registrele "manual" ... in sens ca am pus data pe high si am conectat clockul pe high si asa mi-am dat seama ca sunt bune. Don't ask :nas:

Link spre comentariu

ma bucur ca ai rezolvat-o, dar, desi nu vreau sa ma bag in seama degeaba, as dori sa-ti atrag atentia asupra unei chestii: la mine alimentarea se face pe fire la fel de lungi, dar fara probleme. Dar am pus cate un cond de 100nF pe alimentarea fiecarui integrat (intre VDD-VSS), cat mai aproape de acesta. De asemenea, mai pun si niste conzi (de fapt 2) de 10uF pe stabilizator... La inceput imi faceau si mie figuri montajele, dar am gasit pe aici, pe forumul nostru, solutia.in rest... :101

Link spre comentariu

Ma bucur ca ti-a mers pana la urma. Doua chestii totusi:- e greu sa deparazitezi cu rezistente :) Unii ar spune ca e chiar imposibil.- e ciudat ca sursa aia iti face atatea figuri pe o distanta atat de mica totusi. Asta nu e un montaj prea pretentios, dar pe viitor s-ar putea sa ai nevoie de alta sursa.Bafta!

Link spre comentariu
Vizitator 3Nigma

"Tips"uri notate :)

O dovada ca cu 3 fire poti controla oricate matrici se doreste [in limita bunului simt desigur ;) ] este aici:

[Programul genereaza randomuri de 8biti si le incarca pe portul de data,iar impingerea selectiva a bitilor se face prin cele 2 porturi de clock.Asta asa ... ca si concept.Poate are cineva dubii .]

 

Eu voi mai zabovi pe la voi, daca nu are cineva nimic impotriva :)

 

Mersi inca odata,

Victor

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări