Digitalni sat sa M5451
Moderators: pedja089, stojke369, [eDo], trax
Digitalni sat sa M5451
Dobio sam digitalni sat sa serijskom komunikacijom za koji nemam kontrolni dio koji šalje informaciju
ic kolu M5451 sa ukupno 35 bita koliko sam mogao da vidim iz data sheet.Htio bi da pokušam sa nekim mikrokontrolerom poslati serijsku informaciju i staviti ga u funkciju jer je većih dimenzija pa se vrijedi
potruditi. Dobro bi došli bilo koji dobronamjerni savjeti , nemam previše iskustva sa programiranjem a
radio sam sa pic16f84 i pic16f866 neke jednostavnije projekte.Možda dodati i DCF77 prijemnik za automatsku korekciju vremena, slične projekte sam već vidio na forumima samo sa običnim 7 segmentnim displejom i pic16f84.
ic kolu M5451 sa ukupno 35 bita koliko sam mogao da vidim iz data sheet.Htio bi da pokušam sa nekim mikrokontrolerom poslati serijsku informaciju i staviti ga u funkciju jer je većih dimenzija pa se vrijedi
potruditi. Dobro bi došli bilo koji dobronamjerni savjeti , nemam previše iskustva sa programiranjem a
radio sam sa pic16f84 i pic16f866 neke jednostavnije projekte.Možda dodati i DCF77 prijemnik za automatsku korekciju vremena, slične projekte sam već vidio na forumima samo sa običnim 7 segmentnim displejom i pic16f84.
- Attachments
-
- M5450_51.rar
- M5451
- (132.74 KiB) Downloaded 435 times
Re: Digitalni sat sa M5451
To nije sat, to je samo shift registar....
Re: Digitalni sat sa M5451
Jeste samo kolo M5451 ali se u ovom slučaju upotrebljeno kao drajver za led displej.Imam i bit tabelu pojedinih segmenata na 5 cifrenom 7 segmentnom displeju.U međuvremenu sam našao da koristi I2C , pitanje je dali pic može poslati 35 bita? Za originalni sklop nemam podataka osim dijela sa M5451 na koji bi trebalo dovesti clock i data , stim da clock može biti do 0,5Mhz. Trebalo bi pokušao riješiti sa definisanjem scl i sda uz i2cwrite.
Primjeri neredbe za I2CWRITE možda pomognu.
Primjeri neredbe za I2CWRITE možda pomognu.
- Attachments
-
- Bit TABELA m5451.rar
- (6.83 KiB) Downloaded 384 times
Re: Digitalni sat sa M5451
Slika Displeja sa M5451.
- Attachments
-
- Displej.rar
- (223.62 KiB) Downloaded 395 times
Re: Digitalni sat sa M5451
Lose si nasao. Ne koristi I2C. Koristi najobicniju sinhronu serisku komunikaciju. Imas samo klok i data, postavis data na 1 ili 0, i posaljes 1 period kloka.
Moras napisati koji uC hoces da koristis, i koji jezik, pa ce ti vec neko pomoci...
Za pocetak spoji 2 tastera i 2 otpornika. Na data spoj pullup 10K, i taster prema masi i paralelno tasteru 100-330nF. Na clock spoj taster prema + otpornik prema masi, i kondezator 100-330nF paralelno otporniku.
I probaj rucno slati 1 i 0, pa ces videti sta se desava.
Probaj slati samo 1, pa ces videti sta se desava, pa salji prvu 1 pa nule...
Kad skontas kako radi, dalje ti nece biti problem napisati kod.
Zaboravih napisati dataenable na masu vezi...
Moras napisati koji uC hoces da koristis, i koji jezik, pa ce ti vec neko pomoci...
Za pocetak spoji 2 tastera i 2 otpornika. Na data spoj pullup 10K, i taster prema masi i paralelno tasteru 100-330nF. Na clock spoj taster prema + otpornik prema masi, i kondezator 100-330nF paralelno otporniku.
I probaj rucno slati 1 i 0, pa ces videti sta se desava.
Probaj slati samo 1, pa ces videti sta se desava, pa salji prvu 1 pa nule...
Kad skontas kako radi, dalje ti nece biti problem napisati kod.
Zaboravih napisati dataenable na masu vezi...
Re: Digitalni sat sa M5451
Ok probat ću čim stignem. Ovo za I2c sam našao na nekoj web koja proizvodi nešto slično ovome.
Re: Digitalni sat sa M5451
To bi trebalo biti kao na šemi !
- Attachments
-
- Test.rar
- (5.87 KiB) Downloaded 362 times
Re: Digitalni sat sa M5451
Tako je...
Samo nemoj zaboraviti data enable i onih par komponenti za struju led...
A verovatno i ima vec na ploci.
Iz grafika datasheeta koji si prilozio nacrtano je da se datamenja dok je klok na nuli, iz tog razloga sam ti rekao da stavis taster za klok tako. A sad kontam za data ce ti biti lakse ako je prekidac.
U principu to ti radi tako da se podatci upisuju u registar sve dok se ne isiftuje ona prva jedinica koja je nazvana start, i onda ona aktivira latch registar koji drzi stanja, i resetuje zatim shift registar. I iz latch se podaci preslikavaju na izlaz....
Samo nemoj zaboraviti data enable i onih par komponenti za struju led...
A verovatno i ima vec na ploci.
Iz grafika datasheeta koji si prilozio nacrtano je da se datamenja dok je klok na nuli, iz tog razloga sam ti rekao da stavis taster za klok tako. A sad kontam za data ce ti biti lakse ako je prekidac.
U principu to ti radi tako da se podatci upisuju u registar sve dok se ne isiftuje ona prva jedinica koja je nazvana start, i onda ona aktivira latch registar koji drzi stanja, i resetuje zatim shift registar. I iz latch se podaci preslikavaju na izlaz....
Re: Digitalni sat sa M5451
Spojeno i testirano , pali segmente neodređeno što je normalno jer tasterom neodređeno ide na data.
Ovaj M5451 nema data eneable samo m5450 tako da nisam morao vršiti prepravke.Ostalo je na originalnoj ploči već spojeno za jačinu svjetlosti i sve radi 4+1 .Samo sam morao raspored izlaza prema
segmentima displeja pojedinačno ispitati i napraviti novu tabelu za svaki bit koji segment na određenoj cifri je spojen.Sad mi ostaje da probam nešto sa pic16f84 pa tek onda vezano za vrijeme.
Ovaj M5451 nema data eneable samo m5450 tako da nisam morao vršiti prepravke.Ostalo je na originalnoj ploči već spojeno za jačinu svjetlosti i sve radi 4+1 .Samo sam morao raspored izlaza prema
segmentima displeja pojedinačno ispitati i napraviti novu tabelu za svaki bit koji segment na određenoj cifri je spojen.Sad mi ostaje da probam nešto sa pic16f84 pa tek onda vezano za vrijeme.
- Attachments
-
- Broj tabela ok.rar
- (7.02 KiB) Downloaded 378 times
Re: Digitalni sat sa M5451
Evo jednog primjera ,pošto sam koristio i PBP probat ću nešto kao u primjeru.Nisam siguran kako se postavlja kod na forumu pa je u attacment-u.
- Attachments
-
- SLED4C_Tst.rar
- (2.19 KiB) Downloaded 376 times
Re: Digitalni sat sa M5451
Testirano sa PIC16F876A i pali nedefinisane karaktere na displeju sa ovim primjerom koda.
Stim da M5451 nema data enable .
Stim da M5451 nema data enable .
Code: Select all
'* Notes : Test code for the SLED4C 4-digit serial *
'* : LED / clock display module *
DEFINE OSC 20
DEFINE LOADER_USED 1 ' PIC16F876A @ 20MHz w/loader
include "modedefs.bas"
EN var PORTB.5 ' Enable pin
CLK var PORTB.6 ' Clock pin
DOUT var PORTB.7 ' Data out pin
X VAR WORD ' GP var
Y VAR BYTE ' GP var
' Digit #1 is the colon ":"
D2 VAR BYTE ' Digit #2 rightmost digit
D3 VAR BYTE ' Digit #3
D4 VAR BYTE ' Digit #4
D5 VAR BYTE ' Digit #5 leftmost digit
CFG VAR BYTE ' Holds display band/digit config value
TRISB = 0
Main:
GOSUB Counter2 ' Count from 0 to 1000
GOSUB LampTest ' Lamp test with 8.8.:8.8. + blinking
GOSUB PowerDown ' Demonstrates power-down mode
GOSUB Clock ' 4-digit clock from 16:50 to 17:00 w/blinking colon
GOSUB Counter0 ' Colon ON + 100% bright, count on right 2, then 50% on left 2
GOSUB Help ' Display H.E.L.P. pulsing brightness from 50% to 100%
GOSUB Counter1 ' High speed counter from 9994 to 0000 @ 50% brightness
GOSUB Ouch ' Display OUCH pulsing brightness from 50% to 100%
GOTO Main
PowerDown: ' Routine to enter display low power mode (power down)
CFG = %11110000 ' Digits 5,4 special decode/OFF, 3,2,1 HEX decode
GOSUB Config
PAUSE 3000
RETURN
Counter0: ' Count 00-14h on right 100% bright, then count on left with 50% bright
CFG = %11110001 ' Digits 5,4 special decode/OFF, 3,2,1 HEX decode
GOSUB Config
' Now write data to the display
FOR X = 0 to 20 ' Count from 0 to 14h on digits 3 & 2 with leading 0 blanking
EN = 0 ' Display banks 5 4 3\2 :=ON
Shiftout DOUT, CLK, MSBFIRST, [%1000\4, $0\4, $0\4, X\8, $2\4]
EN = 1 ' Disable display
PAUSE 150 ' Display count from 0 to 14h
NEXT X
CFG = %11001101 ' Digits 5,4,1 HEX decode, 3,2 special/OFF
GOSUB Config
FOR X = 0 to 20 ' Count from 0 to 14h on digits 5 & 4 with leading 0 blanking
EN = 0 ' Display banks 5\4 3 2 :=ON
Shiftout DOUT, CLK, MSBFIRST, [%0000\4, X\8, $0\4, $0\4, $2\4]
EN = 1 ' Disable display
PAUSE 150 ' Display count from 0 to 14h
NEXT X
PAUSE 500
Return
Counter1: ' Count from 9994 to 0000
CFG = %11000011 ' All digits HEX decode
GOSUB Config
' Now write data to the display
D2=4 : D3=9 : D4=9 : D5=9 ' Load count values
FOR X = 0 to 6 ' Count from 9994 to 0000
EN = 0 ' Enable display
IF D2 > 9 THEN D2=0 : D3=D3+1 ' Increment each higher digit # on 9
IF D3 > 9 THEN D3=0 : D4=D4+1 ' value of each lower digit # for BCD
IF D4 > 9 THEN D4=0 : D5=D5+1 ' counting
IF D5 > 9 THEN D5=0 ' dim 5 4 3 2 :=OFF
Shiftout DOUT, CLK, MSBFIRST, [%0000\4, D5\4, D4\4, D3\4, D2\4, $0\4]
EN = 1 ' Disable display
PAUSE 500 ' Without pause, display can count from 0 to 9999 in ~6 seconds
D2=D2+1 ' Increment counter
NEXT X
PAUSE 500
Return
Counter2: ' Count from 0 to 1000
CFG = %11000011 ' All digits HEX decode
GOSUB Config
' Now write data to the display
D2=0 : D3=0 : D4=0 : D5=0 ' Load count values with 0000
FOR X = 0 to 1000 ' Count from 0 to 1000
EN = 0 ' Enable display
IF D2 > 9 THEN D2=0 : D3=D3+1 ' Increment each higher digit # on 9
IF D3 > 9 THEN D3=0 : D4=D4+1 ' value of each lower digit # for BCD
IF D4 > 9 THEN D4=0 : D5=D5+1 ' counting
IF D5 > 9 THEN D5=0' bright 5 4 3 2 :=OFF
Shiftout DOUT, CLK, MSBFIRST, [%0000\4, D5\4, D4\4, D3\4, D2\4, $0\4]
EN = 1 ' Disable display
PAUSE 20 ' Without pause, display counts from 0 to 9999 in ~6 seconds
D2=D2+1 ' Increment counter
NEXT X
PAUSE 500
Return
Help: ' Display H.E.L.P. while toggling brightness from 100% to 50%
CFG = %11101111 ' Special decode 5,3,2,1. 4 = normal
GOSUB Config
' Now write H.E.L.P. to display blinking 50% to 100% brightness
Y = %10001111 ' Setup bit 3 for toggling display brightness
FOR X = 0 to 4 ' and all DP's ON
EN = 0 ' Enable display
Y.0[3] = Y.0[3] ^ 1' Flip Y.bit.3 by XOR-ing with 1 [ 0=DIM, 1=BRIGHT ]
' Y = brightness & DP's 5 4 3 2 :=OFF
SHIFTOUT DOUT, CLK, MSBFIRST, [Y\4, $2\4, $E\4, $5\4, $8\4, $0\4]
EN = 1 ' Disable display
PAUSE 200
NEXT X
PAUSE 500
RETURN
Ouch: ' Display OUCH while toggling brightness from 100% to 50%
CFG = %11010111 ' Special decode 4,2,1. 3,5 = normal
GOSUB Config
'en = 0
'SHIFTOUT DOUT, CLK, MSBFIRST,[%11010111]
'EN = 1
' Now write OUCH to display
Y = %00001000 ' Set bit 3 for toggling brightness & all DP's OFF
FOR X = 0 to 4
EN = 0 ' Enable display
Y.0[3] = Y.0[3] ^ 1' Flip Y.bit.3 by XOR-ing with 1 [ 0=DIM, 1=BRIGHT ]
' 5 4 3 2 :=OFF
SHIFTOUT DOUT, CLK, MSBFIRST, [Y\4, $0\4, $A\4, $C\4, $2\4, $0\4]
' ^--- bit 3 of 4-bit value toggles brightness
EN = 1 ' Disable display
PAUSE 200
NEXT X
PAUSE 500
RETURN
LampTest: ' Lamp test 8.8.:8.8.
CFG = %11000001 ' All digits normal HEX decode
GOSUB Config
' Now write 8.8.:8.8.
EN = 0 ' Enable display 5=8 4=8 3=8 2=8 :=ON
SHIFTOUT DOUT, CLK, MSBFIRST, [$F\4, $8\4, $8\4, $8\4, $8\4, $2\4]
' ^-- bright display + all DP's ON
EN = 1 ' Disable display
PAUSE 250
' Now blink display ON & OFF 3 times
' Note: Toggling bit.0 of the 8-bit config byte toggles the
' display ON (1) & OFF (0) for normal/low power modes
FOR X = 0 to 2
CFG = %11000000 ' All digits HEX decode
GOSUB Config
PAUSE 250
CFG = %11000001 ' All digits normal HEX decode
GOSUB Config
PAUSE 250
NEXT X
RETURN
Clock: ' 24-hour clock times from 16:50 to 17:00 w/blinking colon
CFG = %11000011 ' 5,4,3,2 HEX decode, 1 special decode
GOSUB Config
Y = 8 ' Used to toggle colon 8 = ON, 0 = OFF
' Now write data to the display
D5=1 : D4=6 : D3=5 : D2=0 ' Load clock value with 1650 on start
FOR X = 0 to 10 ' Display clock time from 16:50 to 17:00
EN = 0 ' Enable display
IF D2 > 9 THEN D2=0 : D3=D3+1 ' Increment each higher digit on 9
IF D3 > 5 THEN D3=0 : D4=D4+1 ' Roll-over from 59 minutes
IF D4 > 9 THEN D4=0 : D5=D5+1 ' Roll-over from hours to tens hours
IF D5 > 2 THEN D5=0 ' Never > 2 for 10's hour digit
IF (D5 = 2) AND (D4 > 3) THEN ' Roll-over from 23:59 to 00:00
D5 = 0 : D4 = 0
ENDIF' dim 5=1 4=6 3=5-0 2=0-9 :=Toggle/Blink colon
Shiftout DOUT, CLK, MSBFIRST, [%0000\4, D5\4, D4\4, D3\4, D2\4, Y\4]
Y = Y ^ 8 ' 8^8=0, 0^8=8
EN = 1 ' Disable display
PAUSE 250 ' Update frequency or clock ticks
D2=D2+1 ' Increment low digit counter
NEXT X
PAUSE 500
Return
Special: ' Display characters in special decode mode
CFG = %11111111 ' All digits special decode
GOSUB Config
' Now write data to the display
FOR Y = 0 to 15 ' Display all 15 special characters
EN = 0 ' Enable display
Shiftout DOUT, CLK, MSBFIRST, [%0000\4, Y\4, Y\4, Y\4, Y\4, $0\4]
EN = 1 ' Disable display
PAUSE 250 ' Set display update speed
NEXT Y
PAUSE 500
Return
NoDecode: ' Display with no decode
CFG = %00111111 ' All digits special decode
GOSUB Config
' Now write data to the display
FOR Y = 0 to 15 ' Display all 15 special characters
EN = 0 ' Enable display
Shiftout DOUT, CLK, MSBFIRST, [%1000\4, Y\4, Y\4, Y\4, Y\4, $0\4]
EN = 1 ' Disable display
PAUSE 200 ' Set display update speed
NEXT Y
PAUSE 500
Return
Config:
EN = 0 ' Enable display
Shiftout DOUT, CLK, MSBFIRST, [CFG] ' Write to display config register
EN = 1 ' Disable display
return
End
Re: Digitalni sat sa M5451
trebam pomoć oko naredbe :
SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...]
primjer:
ShiftOut DOUT, CLK, MSBFIRST, [% 0000 \ 4, D5 \ 4, D4 \ 4, D3 \ 4, D2 \ 4, Y \ 4]
data clock highest bit first ????????????? dig5 ? ????
pin pin
za displej drajver trebam slati za svaku cifru 7 bit-a i ukupno 35. Data i clock pin definisani samo
u zagradi mi je nejasno dali /4 znači 4 bita i na kraju y/4 šta definiše .
SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...]
primjer:
ShiftOut DOUT, CLK, MSBFIRST, [% 0000 \ 4, D5 \ 4, D4 \ 4, D3 \ 4, D2 \ 4, Y \ 4]
data clock highest bit first ????????????? dig5 ? ????
pin pin
za displej drajver trebam slati za svaku cifru 7 bit-a i ukupno 35. Data i clock pin definisani samo
u zagradi mi je nejasno dali /4 znači 4 bita i na kraju y/4 šta definiše .
Re: Digitalni sat sa M5451
To su sve promenljive ili konstante. A posle kose crte oznacava broj bitova koji se salje. Definisi 2 promenljive tipa word. I to ti je 32 bajta i jes jedan bajt i to je to... Za mod pogledaj help... Ima lepo objasnjeno.
Re: Digitalni sat sa M5451
Problem se javlja zbog samog riješenja da je ostavljano 7 bita za svaki broj na displeju.Tako da za svaki broj npr. desetice sat , jedinice sat , desetice minuti,jedinice minuti i dodatni imaju rezervisano samo
7 bita .Stim da svaki bi trebao odvojiti u posebnu vrijablu.U slučaju da se pošalje bit više remeti kompletan prikaz na ostalim brojevima na displeju.Što je logično jer je urađen sa shift registrom.Još jedna stvar da imaju redosljed na displeju 12354.Neda mi se da to ispravim na originalnoj štampanoj ploči pa pokušavam da svaku cifru odvojeno pošaljem.Tek na kraju ostaje uključenje DS1307 sa vremenom ili slično.Predpostavljam da postoji riješenje ali još nisam našao.
7 bita .Stim da svaki bi trebao odvojiti u posebnu vrijablu.U slučaju da se pošalje bit više remeti kompletan prikaz na ostalim brojevima na displeju.Što je logično jer je urađen sa shift registrom.Još jedna stvar da imaju redosljed na displeju 12354.Neda mi se da to ispravim na originalnoj štampanoj ploči pa pokušavam da svaku cifru odvojeno pošaljem.Tek na kraju ostaje uključenje DS1307 sa vremenom ili slično.Predpostavljam da postoji riješenje ali još nisam našao.
Re: Digitalni sat sa M5451
Uzmi sa svaku cifru po 1 bajt, i salji samo 7 bita... Tako je sve jedno kako ces spakovati to i poslati.
Re: Digitalni sat sa M5451
Probao sam na više načina i sa ovim kodom ispiše sve cifre 88 : 88 8 ali kad promjeniš neke od brojeva
npr. upišem 0 umjesto 8 sve je ok , međutim pri upisu drugog broja npr 4 desi se da se sve pomjeri za bit
i poremeti ostale cifre npr 8 4 : - 3.sigurno je da griješim pa pokušavan naći gdje?
npr. upišem 0 umjesto 8 sve je ok , međutim pri upisu drugog broja npr 4 desi se da se sve pomjeri za bit
i poremeti ostale cifre npr 8 4 : - 3.sigurno je da griješim pa pokušavan naći gdje?
Code: Select all
Include "modedefs.bas" ; Include shift modes
D1PIN Var PORTB.7 ; Shift data pin 1
C1PIN Var PORTB.6 ; Shift clock pin 1
f1 Var word
f2 Var word
f3 Var word
f4 Var word
f5 Var word
f6 var word
mainloop:
f1=%1111111 ; sat desetice
f2=%1111111 ;dodatna cifra
f3=%1111111 ; sat jedinice
f4=%1111111 ; minuti desetice
f5=%1111111 ; minuti jedinice
; Shift in 7 bits data za svaku promjenjivu od f1-f5
Shiftout D1PIN, C1PIN, MSBPRE, [$0001,f5\7,f4\7,f3\7,f2\7,f1\7]
Pause 1000
Goto mainloop
End
Re: Digitalni sat sa M5451
Izdgleda da je bio problem u smjeru slanja pa kad sam MSBPRE zamjenio sa LSBPRE to jest mod
uspio sam ispisati 12:34 5 na displeju.
uspio sam ispisati 12:34 5 na displeju.
Code: Select all
Include "modedefs.bas" ; Include shift modes
D1PIN Var PORTB.7 ; Shift data pin 1
C1PIN Var PORTB.6 ; Shift clock pin 1
f1 Var word
f2 Var word
f3 Var word
f4 Var word
f5 Var word
f6 var word
mainloop:
f1=%0110000 ; sat desetice
f2=%1011011 ;dodatna cifra
f3=%1101101 ; sat jedinice
f4=%1111001 ; minuti desetice
f5=%0110011 ; minuti jedinice
; Shift in 7 bits data za svaku promjenjivu od f1-f5
Shiftout D1PIN, C1PIN,LSBPRE, [$0001,f5\7,f4\7,f3\7,f2\7,f1\7]
Pause 800
Goto mainloop
End
Re: Digitalni sat sa M5451
Odlicno.
Sad mozes dalje...
Sad mozes dalje...
Re: Digitalni sat sa M5451
Ne znam dali bi mogao koristiti select case da svaki broj konvertujem u 7 bita.Ovo je upotrebljeno u jednom primjeru sat-a sa pic16f84 i pojedinačnim 7 segmentnim displeima.
Code: Select all
select case n
case 0 result =%1111110 ; 7 bita za broj 0 itd..
case 1 result =$0110000
case 2 result =%1101101
case 3 result =%1111001
case 4 result =%0110011
case 5 result =%1011011
case 6 result =%1011111
case 7 result =%1110000
case 8 result =%1111111
case 9 result =%1111011
end select
end sub
Re: Digitalni sat sa M5451
Identicno moze i ovde...