Sari la conținut
ELFORUM - Forumul electronistilor

BASCOM


yo9hnf

Postări Recomandate

Multumesc nico_2010 pentru rapsuns !Pe mine ma intereseaza cum comand efectiv multiplexarea astfel incat sa pot afisa ce doresc.

Vezi exemplul de la ceas, e un bun start, insa cu literele (V, A) o sa fie mai greu deoarece sunt doar 7 segmente.O alta varianta de inspiratie ar fi voltmetrul cu ATMEGA 8 si afisoare LED cu 7 segmente.Cum spunea Einstein: 1% inspiratie si 99% transpiratie!Succes
Link spre comentariu
  • 3 săptămâni mai târziu...

Salut,Doar ca idee de soft, poate te ajuta. Proiectul este cu un display TFT si nu l-am testat hardware. Display-ul folosit in simulare are configuratia pinilor diferita.

mersi, cel mai ciudat este ca am facut simularea in proteus si afisa,dar fizic nuam verificat toate legaturile,am montat si pentru contrast potentiometru(este cu tensiune negativa)am sa mai testez
Link spre comentariu

salut sunt incepator in ale bascom avr

vreau sa fac un releu de timp dar am zis sa nu fie ceva cu 555 sa fac ceva cu atmel

pt proiect am ales attiny13 are adc pinii sunt destui pt ce vreu eu

 

am un releu un buton de pornire un led care licare de la o sec la alta un buzzer cand ajunge la final, timpul il setez dintr-un potentiometru.

 

principiu de functionare al sofului ( nu stiu daca chair merge ce am facut eu acolo )

 

ar fi cam asa

 

pornesc timer 0 (aici as vrea ceva sfaturi cum calculez secunda in functie de cristal) si cum fac legatura intre timer 0 si programul meu

 

sub porneste teoretic ar fi

 

aflu valoarea adc o adun cu secunde si cand ajunge la 600 secunde sare la sub sfarsit

 

sub sfarsit opreste timer 0 da drumu la releu si bipaie un buzzer

 

la compilare am o prob "intrerrupt needs return

 

rog pe cineva sa ma ajute

 

asta ar fi primul program de la 0 facut dupa modul meu de gandire

 

$regfile = "attiny13.dat"'$regfile = "m8def.dat"$crystal = 800000'$crystal = 800000$hwstack = 16$swstack = 16$framesize = 16$noramclearConfig Adc = Single , Prescaler = 64 , Reference = Internal 'offConfig Timer0 = Timer , Prescale = 64Dim Reglez As ByteDim Secunde As ByteDim Buton As BitDim Releu As BitDim Buzz As BitDim Clock As WordDim Led As BitDim Conditie As WordDeclare Sub PornesteDeclare Sub SfarsitDdrb = &B00010001                                           ' setam directia pinilor i/o 1 fiind intrare 0 iesireDdrb = &B00000001                                           ' activam pull up resistor port B bit 0Led = Pinb.3Releu = Pinb.1Buton = Pinb.0Reglez = Pinb.4Buzz = Pinb.2On Timer0 Timer_0_overflow_int:Enable InterruptsEnable Timer0DoTimer_0_overflow_int:Incr ClockIf Clock > 2000 ThenClock = 0Incr Secunde' ledu se aprinde si stinge' 1 sec pornit 1 sec opritLed = Led Xor 1End IfSub PornesteStart Timer0Start AdcReglez = Getadc(2)If Buton = 0 ThenConditie = Secunde + ReglezIf Conditie = 600 ThenGosub SfarsitEnd IfEnd IfLoopEnd Sub PornesteSub SfarsitStop Timer0Releu = 0Led = 1Buzz = 1Wait 1Buzz = 0Waitms 50Buzz = 1Wait 1Secunde = 0End Sub Sfarsit
Link spre comentariu

am verificat toate legaturile,am montat si pentru contrast potentiometru(este cu tensiune negativa)am sa mai testez

Poate te ajuta http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=9286&highlight=graphicTLX-711A, BUILT-IN LCD CONTROLLER T6963C. Am observat ca nu este aceeasi configuratie la pini, dar folosesc amandoua T6963C.Si aici http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=722&highlight=tlx
'T6963C graphic display test'The connections of the LCD used in this test:' LCD pin              connected to: '        /WR            PORTC.0 '        /RD            PORTC.1 '        /CE            PORTC.2 '        C/D            PORTC.3 '        RESET          PORTC.4 '        FS             PORTC.5 '        D0-D7           Port A ' ' External crystal oscillator 8MHz$crystal = 8000000$regfile = "m128can.dat"                                    ' use baud rate$hwstack = 32                                               ' default use 32 for the hardware stack$swstack = 10                                               ' default use 10 for the SW stack$framesize = 40                                             ' default use 40 for the frame space'Definition used a graphic LCDConfig Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8ClsWaitms 500Cursor OffDoLocate 1 , 1 : Lcd "LCD Graphic test"Locate 2 , 2 : Lcd "T6963c support"Locate 3 , 7 : Lcd "ATM128can"Locate 8 , 2 : Lcd "Bascom AVR"Wait 1ClsLoopEnd
Link spre comentariu

Poti sa incerci si codul acesta pentru test. Poti sa testezi si cu un atmega 8, foloseste disable jtag, daca pinii sunt conectati corect, fuse bits sunt corect setate, ar mai fi sa verifici display-ul.

 

$regfile = "8515def.dat"$crystal = 8000000$hwstack = 100                                           $swstack = 100                                           $framesize = 100 Config Graphlcd = 240 * 64, Dataport = Portd , Controlport = Portb , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8Waitms 500Cursor OffClsLocate 1 , 1Lcd "ABCDEFGHIJKLMNOPQRSTUVWXYZ"End
Link spre comentariu

am un releu un buton de pornire un led care licare de la o sec la alta un buzzer cand ajunge la final, timpul il setez dintr-un potentiometru.[/code]

Salut,Care este timpul maxim pe care vrei sa-l setezi din potentiometru?
Link spre comentariu

Poti sa incerci si codul acesta pentru test. Poti sa testezi si cu un atmega 8, foloseste disable jtag, daca pinii sunt conectati corect, fuse bits sunt corect setate, ar mai fi sa verifici display-ul.

$regfile = "8515def.dat"$crystal = 8000000$hwstack = 100                                           $swstack = 100                                           $framesize = 100 Config Graphlcd = 240 * 64, Dataport = Portd , Controlport = Portb , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8Waitms 500Cursor OffClsLocate 1 , 1Lcd "ABCDEFGHIJKLMNOPQRSTUVWXYZ"End
mersi am sa incerc doar la sfirsit de saptamina,da intradevar sunt doua configurati dar m-am ghidat dupa aparatul in care era si este functional
Link spre comentariu

Am si eu o intrebare legat de cod, sunt destul de nou pe aceasta platforma.

 

Am:

 

Config Pord = input

Portd = 255

 

Aici setez tot portul adica toate 8 piciorusele ca input, si le zic sa foloseasca pullup-ul intern.

sau

 

Config Pind.0 = input

 

Aici ii zic ca doar pinul 0 de la portul D este input, cum ii spun sa foloseasca pullup-ul intern?

 

Codul intreg:

Config Pinb.0 = OutputConfig Pinb.1 = Input Pinb.1 = 1 Pinb.0 = 0Do  'For Blink uncomment the next 4 lines, but  'comment the lines untill loop'   Pinb.0 = 1'   Waitms 90'   Pinb.0 = 0'   Waitms 90   'For button-led uncomment the lines bellow but comment the upper 4 lines  If Pinb.1 = 1 Then  Pinb.0 = 1  Else  Pinb.0 = 0  End IfLoopEnd
Link spre comentariu

Am si eu o intrebare legat de cod, sunt destul de nou pe aceasta platforma.

 

Am:

 

Config Pord = input

Portd = 255

 

Aici setez tot portul adica toate 8 piciorusele ca input, si le zic sa foloseasca pullup-ul intern.

sau

 

Config Pind.0 = input

 

Aici ii zic ca doar pinul 0 de la portul D este input, cum ii spun sa foloseasca pullup-ul intern?

 

Codul intreg:

Config Pinb.0 = OutputConfig Pinb.1 = Input Pinb.1 = 1 Pinb.0 = 0Do  'For Blink uncomment the next 4 lines, but  'comment the lines untill loop'   Pinb.0 = 1'   Waitms 90'   Pinb.0 = 0'   Waitms 90   'For button-led uncomment the lines bellow but comment the upper 4 lines  If Pinb.1 = 1 Then  Pinb.0 = 1  Else  Pinb.0 = 0  End IfLoopEnd
pentru a defini un port ca intrare sau iesire folosesti comanda:

PORTX = input

sau

PORTX=output

pentru activarea rezistentelor "pull-up" trebuie sa dai comanda:

PORTX=255

In cazul tau "geaba cerci" sa sa folosesti portul D ca port de iesire deoarece comenzile sunt pentru intrare, respectiv:

Config Pinb.0 = Output

Config Pinb.1 = Input

corect este;

config PORTD.0=output

config PORTD.1=input

 

pentru activarea rezistentei interne:

PORTD.1=1

 

Comanda "PIND.X = 1 sau 0" nu functioneaza decat in cadrul unei bucle if-else-endif pentru a stabili daca pe portul definit ca intrare exista o stare logica 1 sau 0

Link spre comentariu

Mutumesc de raspuns. Acum daca doresc sa folosesc citirea pinului de itnrare si sa scriu pinul de iesire in acel IF atunci ma folosesc de PIN sau tot cu PORT? Sau la input(citire) folosesc PORT iar la output folosesc PIN?

Link spre comentariu

Mutumesc de raspuns. Acum daca doresc sa folosesc citirea pinului de itnrare si sa scriu pinul de iesire in acel IF atunci ma folosesc de PIN sau tot cu PORT? Sau la input(citire) folosesc PORT iar la output folosesc PIN?

La input folosesti PIN, la iesire PORT

Link spre comentariu

Am cumparat de pe forum 4 afisoare LED cu Anod Comun, de dimensiune mare (aproape 6cm are cifra) si acum vreau sa ma apuc de un ceas (stiu...iar :jytuiyu ).

Vreau ca pe langa cele 4 afisoare (hh:mm) sa mai pun inca doua de dimensiuni mici (tot A.C.) pentru secunde...dar nu e musai.

 

Am gasit schema de mai jos pe care o s-o folosesc pentru inspiratie :

 

Posted Image

 

Nu prea inteleg la ce folosesc rezistentele R11-R14 dintre pinii de comanda pentru anozi si +5V.

 

Daca folosesc inca doi digiti mici, trebuie sa le leg si lor anozii la aria de tranzistori?

 

PS : Nu stiu ce uC sa folosesc....Am vreo 4 bucati noi de AT89S51...se merita folosite?

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