ciao Piccio graqzie della risposta. Allora io nel programma che ho scritto per il micro comunico con il pic usando la funzione shiftout che mi permette di inviare otto bit serialmente al max7219 ecco il programma
const DIN as byte =3D 13 'il piedino 13 del micro =E8 collegato al piedino DIN del max7219 const CLK as byte =3D 14 'il piedino 14 del micro =E8 collegato al piedino CLK del max7219 const LOAD as byte =3D 15 'il piedino 15 del micro =E8 collegato al piedino LOAD del max7219
Public Sub Main() call decodeMode() 'richiamo la routine per settare la modalit=E0 di decodifica call shutDownMode() 'richiamo la routine per settare la modalit=E0 di utilizzo (in questo caso normale) call displayTestMode() 'richiamo la routine per settare la modalit=E0 di test (in questo caso normale) call scanLimit() 'richiamo la routine per impostare quanti display voglio utilizzare call intensity() 'richiamo la routine per settare la luminosit=E0 dei display
'digit 0 call shiftout(DIN, CLK, 8, 00000001) 'invio i primi 8 bit per l'indirizzo call shiftout(DIN, CLK, 8, 00000001) 'invio altri 8 bit per inviare il numero da visualizzare Call PulseOut(LOAD, 1.5E-3, 1) ' mando un'impulso di 1.5 millisecondi al pin LOAD per far accettare i dati inviati call sleep(40)
'digit 1 call shiftout(DIN, CLK, 8, 00000010) call shiftout(DIN, CLK, 8, 00000010) Call PulseOut(LOAD, 1.5E-3, 1) call sleep(40)
'digit 2 call shiftout(DIN, CLK, 8, 00000011) call shiftout(DIN, CLK, 8, 00000011) Call PulseOut(LOAD, 1.5E-3, 1) call sleep(40)
'digit 3 call shiftout(DIN, CLK, 8, 00000100) call shiftout(DIN, CLK, 4, 00000011) Call PulseOut(LOAD, 1.5E-3, 1) call sleep(40)
'digit 4 call shiftout(DIN, CLK, 8, 00000101) call shiftout(DIN, CLK, 8, 00000011) Call PulseOut(LOAD, 1.5E-3, 1) call sleep(40)
End Sub
private sub decodeMode() call shiftout(DIN, CLK, 8, 00001001) call shiftout(DIN, CLK, 8, 00000000) Call PulseOut(LOAD, 1.5E-3, 1) End Sub
private sub shutDownMode() call shiftout(DIN, CLK, 8, 00001100) call shiftout(DIN, CLK, 8, 00000001) Call PulseOut(LOAD, 1.5E-3, 1) End Sub
private sub scanLimit() call shiftout(DIN, CLK, 8, 00001011) call shiftout(DIN, CLK, 8, 00000100) Call PulseOut(LOAD, 1.5E-3, 1) End Sub
private sub intensity() call shiftout(DIN, CLK, 8, 00001010) call shiftout(DIN, CLK, 8, 00000001) Call PulseOut(LOAD, 1.5E-3, 1) End Sub
private sub displayTestMode() call shiftout(DIN, CLK, 8, 00001111) call shiftout(DIN, CLK, 8, 00000000) Call PulseOut(LOAD, 1.5E-3, 1) End Sub
anche se carico questo programma nel micro il max7219 continua a visualizzare cifre a caso oppure visualizza tutti 8
volevo chiedere anche un'altra cosa: non ho ben capito cosa serve la "decode mode", comunque io l'ho impostata a "no decode for digits 7-0"
grazie di tutto ciao luca