Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 (modificato) #programma1 unsigned char num; // numero da visualizzare //array con la codifica per i displayunsigned char DISPLAY[10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};void main(){ TRISA=0; TRISB=0; num=0;for(;; ){if(num==10) num=0; PORTB=DISPLAY[num]; num++; Delay_ms(1000); } } GLI ERRORI DEL PROGRAMMA DA TE POSTATO Modificato: 26 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 ahah questa è un'altra questione.. tu hai detto che non faceva niente non che dava errori Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 (modificato) #programma2 // #include <p16f84.h> #define BTN1 RA0 // pulsante PIU #define BTN2 RA1 // pulsante MENO #define a RB0 // led A_1 #define b RB1 // led B_2 #define c RB2 // led C_3 #define d RB3 // led D_4 #define e RB4 // led E_5 #define f RB5 // led F_6 #define g RB6 // led G_7 void LedAcceso(int n) { switch(n) { case 0: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=0; break; case 1: PORTAbits.RB0=0; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=0; break; case 2: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=0; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=0; PORTAbits.RB6=1; break; case 3: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=1; break; case 4: PORTAbits.RB0=0; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 5: PORTAbits.RB0=1; PORTAbits.RB1=0; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 6: PORTAbits.RB0=1; PORTAbits.RB1=0; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 7: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=0; PORTAbits.RB4=0; PORTAbits.RB5=0; PORTAbits.RB6=0; break; case 8: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=1; PORTAbits.RB5=1; PORTAbits.RB6=1; break; case 9: PORTAbits.RB0=1; PORTAbits.RB1=1; PORTAbits.RB2=1; PORTAbits.RB3=1; PORTAbits.RB4=0; PORTAbits.RB5=1; PORTAbits.RB6=1; break; } }; void loop () { for (int n=0;n<10;n++) { LedAcceso(n); delay (1000); } } void main() { /* Insert your code here. */ } >>>>> NON VA DOVE HO SBAGLIATO io vorrei capire anche perche non va questo #programma1 #programma2 Modificato: 26 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 (modificato) nel main richiama la funzione loop void main() { /* Insert your code here. */ loop(); } devi sostituire PORTAbits con PORTBbits perché stai usando la porta b le istruzioni trisa e trisb definiscono se le porte a o le b sono di ingresso o uscita devi scrivere questo all'inizio del (mio) programma #include "pic.h" Modificato: 26 gennaio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 Perché? Scrivetemi come verrebbe il programma funzionante Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 26 gennaio 2015 Segnala Share Inserita: 26 gennaio 2015 io ti consiglio di provare prima con questo: #include<pic.h> main(void) { TRISB = 0x00; // set PortB as out PORTB = 0b00000010; // set PortB bit1 = 1 } se funziona e si accende un segmento del display analizziamo il tuo Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 26 gennaio 2015 Autore Segnala Share Inserita: 26 gennaio 2015 Ok proverò e ti saprò dire Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 27 gennaio 2015 Segnala Share Inserita: 27 gennaio 2015 #include<pic.h> flg_loop = 0; main(void) { while (true); { TRISB = 0x00; // set PortB as out PORTB = 0b00000010; // set PortB bit1 = 1 } } L'istruzione while (true) esegue la stessa funzione della funzione "Loop" di arduino, in cui scrivi lo sketch applicativo. le istruzioni racchiuse tra le grafe son ripetute all'infinito. La sintassi può essere leggermente differente in funzione del compilatore usato. Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 27 gennaio 2015 Autore Segnala Share Inserita: 27 gennaio 2015 #include<pic.h> main(void) { TRISB = 0x00; // set PortB as out PORTB = 0b00000010; // set PortB bit1 = 1 } il display non fa nulla Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 27 gennaio 2015 Segnala Share Inserita: 27 gennaio 2015 (modificato) Scusa ma almeno una misura dell'uscita la vogliamo fare? COn questo programma, anche se ripetuto una sola volta, l'usicta B!1 del pic deve essere alta. Quindi verificare se questo avviente, poi verificare se con quell'uscita alta il display deve illumare qaulche segmento. Modificato: 27 gennaio 2015 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 27 gennaio 2015 Autore Segnala Share Inserita: 27 gennaio 2015 Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 27 gennaio 2015 Autore Segnala Share Inserita: 27 gennaio 2015 Ho aggiunto dei led prima delle resistenze e con quel programma le uscite sono sempre accese perciò alte ma il dislay non fa nulla Link al commento Condividi su altri siti More sharing options...
gabri-z Inserita: 27 gennaio 2015 Segnala Share Inserita: 27 gennaio 2015 Buona sera a tutti ! Ho aggiunto dei led prima delle resistenze e con quel programma le uscite sono sempre accese perciò alte ma il dislay non fa nulla Scusami . siamo sicuri di avere un display catodo comune ? e se SI , il suo catodo è collegato allo stesso negativo (massa)? Chiedo scusa se in precedenza avevi nominato il tipo del ''U2'' , mi sarà sfuggito . Ma l' U2 è ''sano'' ? Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 27 gennaio 2015 Autore Segnala Share Inserita: 27 gennaio 2015 non ho capito Link al commento Condividi su altri siti More sharing options...
gabri-z Inserita: 27 gennaio 2015 Segnala Share Inserita: 27 gennaio 2015 non ho capito Cosa è che non hai capito ? Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 27 gennaio 2015 Autore Segnala Share Inserita: 27 gennaio 2015 (modificato) #include<pic.h> //#include <p16f84.h> #define BTN1 RA0 // pulsante PIU #define BTN2 RA1 // pulsante MENO #define a RB0 // led A_1 #define b RB1 // led B_2 #define c RB2 // led C_3 #define d RB3 // led D_4 #define e RB4 // led E_5 #define f RB5 // led F_6 #define g RB6 // led G_7 void main() { TRISA=1; TRISB=1; void LedAcceso(int n) { switch(n) { case 0: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=0; break; case 1: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 2: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=0; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 3: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 4: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 5: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 6: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 7: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 8: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 9: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; } }; void loop () { for (int n=0;n<10;n++) { LedAcceso(n); delay (1000); } } } Modificato: 27 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 27 gennaio 2015 Segnala Share Inserita: 27 gennaio 2015 Non si può definire una funzione dentro un'altra, in questo caso void LedAcceso(int n) dentro a main().Devi scriverevoid LedAcceso(int n){...}void main(){...LedAcceso(n);...}Ciao. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 28 gennaio 2015 Segnala Share Inserita: 28 gennaio 2015 E' inutile continuare a mettere listati e schemi. Da tutto quanto hai scritto sino ad ora si deduce che: Conosci poco o nulla dei PIC Conosci quasi niente del "C". Cercare di fare qualche cosa senza sapere quello che si sta facendo è solo una perdita di tempo. lavorare con un micro, anche semplicissimo, come quello che stai usando è molto differente dal fare qualche giochino, tipo accendi e spegni un LED, con arduino. Li c'è tutto pronto, funzionanete e già fatto e collaudato. Se vuoi lavorare con i micro, prima devi capire e sapere come lavorano (potresti leggerti l'ottimo tutorial si Sergio Tanzilli); poi, se vuoi lavorare in "C", tidevi studiare il lingiaggio. Non ci sono scorciatoie, le cose per impararle vanno studiate dedicandoci tempo e fatica. La scienza infusa non esiste. Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 28 gennaio 2015 Autore Segnala Share Inserita: 28 gennaio 2015 Ok proverò Ma so cosa sono e come lavorano li ho fatti ha scuola con voti abbastanza alti Link al commento Condividi su altri siti More sharing options...
dott.cicala Inserita: 28 gennaio 2015 Segnala Share Inserita: 28 gennaio 2015 li ho fatti ha scuola con voti abbastanza alti .....emblematica Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 28 gennaio 2015 Autore Segnala Share Inserita: 28 gennaio 2015 (modificato) il programma sottostante non da errori ma non va il display #include<pic.h> //#include <p16f84.h> #define BTN1 RA0 // pulsante PIU #define BTN2 RA1 // pulsante MENO #define a RB0 // led A_1 #define b RB1 // led B_2 #define c RB2 // led C_3 #define d RB3 // led D_4 #define e RB4 // led E_5 #define f RB5 // led F_6 #define g RB6 // led G_7 void LedAcceso(int n) { switch(n) { case 0: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=0; break; case 1: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 2: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=0; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 3: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 4: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 5: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 6: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 7: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 8: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 9: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; } }; void main() { TRISA=1; TRISB=1; } void loop () { for (int n=0;n<10;n++) { LedAcceso(n); } } il programma sottostante ho aggiunto trisa e trisb all' interno del main non da errori ma non va il display #include<pic.h> //#include <p16f84.h> #define BTN1 RA0 // pulsante PIU #define BTN2 RA1 // pulsante MENO #define a RB0 // led A_1 #define b RB1 // led B_2 #define c RB2 // led C_3 #define d RB3 // led D_4 #define e RB4 // led E_5 #define f RB5 // led F_6 #define g RB6 // led G_7 void LedAcceso(int n) { switch(n) { case 0: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=0; break; case 1: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 2: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=0; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 3: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=1; break; case 4: PORTBbits.RB0=0; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 5: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 6: PORTBbits.RB0=1; PORTBbits.RB1=0; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 7: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=0; PORTBbits.RB4=0; PORTBbits.RB5=0; PORTBbits.RB6=0; break; case 8: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=1; PORTBbits.RB5=1; PORTBbits.RB6=1; break; case 9: PORTBbits.RB0=1; PORTBbits.RB1=1; PORTBbits.RB2=1; PORTBbits.RB3=1; PORTBbits.RB4=0; PORTBbits.RB5=1; PORTBbits.RB6=1; break; } }; void main() { TRISA=0x30; TRISB=0x00; PORTB=0x00; } void loop () { for (int n=0;n<10;n++) { LedAcceso(n); } } questo programma e' la gestione di un pulsante per accendere un led (fatto da me) , come faccio ad applicarlo al progetto del display ///ho gia' inizializzato la variabile led1 e pulsante while (1) {if (pulsante == 0) { led1=1; } else { led1=0; } } Modificato: 28 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 28 gennaio 2015 Segnala Share Inserita: 28 gennaio 2015 (modificato) non so più come dirtelo... se non richiami la funzione loop dal main il tuo programma non farà mai niente.. l'unica funzione che parte è il main.. la funzione loop se non la richiami non parte MAI! te l'ho scritto io, Livio e anche giacomo56 dentro il main devi scrivere loop(); dentro un ciclo che la richiama per sempre quando avrai imparato ad accendere un led ti aiuto/aiutiamo a fare andare il tuo programma ma se non sai fare accendere un led il tuo programma non andrà mai.. chi sa se è un problema del circuito o del programma? sei sicuro che il circuito funziona? Modificato: 28 gennaio 2015 da simuffa Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 28 gennaio 2015 Autore Segnala Share Inserita: 28 gennaio 2015 An scusa non avevo capito come faccio ad richiamare loop() nel main perche' se lo inserisco nel main mi da errore il compilatore Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 28 gennaio 2015 Segnala Share Inserita: 28 gennaio 2015 che errore dà? Link al commento Condividi su altri siti More sharing options...
Alessandro Dj-alex Turco Inserita: 28 gennaio 2015 Autore Segnala Share Inserita: 28 gennaio 2015 (modificato) TRISA=1b11111111; //tutte ingresso TRISB=0b00000000; //metto tutte come uscite PORTA=0; PORTB=0; Modificato: 28 gennaio 2015 da Alessandro Dj-alex Turco Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora