Arvutid ja kaasaegsed vidinad

Väga mitmekülgse funktsionaalsusega elektroonilised kellad on igapäevaelus üks enim kasutatavaid elektroonikaseadmeid, mille juhtimine põhineb lõpliku olekuga masinamudelil. Elektroonilised kellad näitavad reeglina kellaaega, kuupäeva, võimaldavad määrata kellaaega ja kuupäeva ning täidavad ka palju muid funktsioone (näiteks saab neist teha nullimise ja seiskamisega stopperi, äratuskella jne). Kõiki neid võimalusi juhib sisseehitatud lõpliku olekuga automaatmuundur, mille sisenditeks on väliste juhtnuppude vajutamise sündmused. Elektroonilise kella plokkskeem on näidatud joonisel fig. 3.11. Juhtnupud on siin tähistatud kui “a” ja “b”. Lisaks numbreid kuvavale kuvaseadmele ja kuvaahelale, mis teisendab numbrite BCD-koodid seitsmekohaliseks LED-juhtkoodiks, näitab diagramm nelja kuvaregistrit, mis salvestavad hetkel ekraanil kuvatavate nelja numbri BCD-koodid. vooluringi ja seadme kuvasid kasutav ketas, "VÕI" kombineeritud ahelad, mis edastavad mis tahes lubatud koodidest kuvaregistritele, "Control" siini, mis võimaldab igas olukorras väljastada ainult stopperi, kella või kuupäeva signaale. kuva registrid. Ahel sisaldab ka stopperi registreid ja tiksugeneraatorit, mis toodab signaali sagedusega 1 Hz. Joonisel on jäädvustatud hetk "19. juuni, 15 tundi 04 minutit, 43 sekundit".

Joon.3.11. Elektroonilise kella plokkskeem

Elektroonilise kella kõigi elementide tööd korraldav juhtseade on ehitatud lõpliku olekusmasina mudeli alusel. Selle automaati üleminekugraafik on näidatud joonisel fig. 3.12. Algolekus kuvatakse kellaaeg. See tähendab, et selle oleku binaarkood (pärast dekodeerimist) avab nelja ühikuid ja kümneid minuteid ning ühikuid ja kümneid tunde salvestava binaar-kümnendregistri väljundid nelja kombineeritud VÕI ahela sisenditele.

Joon.3.12. Automaatne elektrooniline kella juhtimisseade

Olekumasin reageerib kella korpusel oleva nupu “a” vajutamise sündmusele üleminekuga “olekusse” Minutite määramine”, mille puhul nupu “b” vajutamine suurendab minutiteks eraldatud registritesse salvestatud arvu. Sel juhul blokeeritakse ülekanded sekundite registrist ja numbrite salvestamiseks reserveeritud registrisse. Nupu “b” vajutamine olekus “ Hinnang kuud” põhjustab kuuks eraldatud registritesse salvestatud arvu suurenemist. Joonisel fig. 3.12 ei näita stopperiga töötamise võimalust ja algoritmi.

Tööstus toodab mitut tüüpi erinevate funktsioonidega elektroonilisi kellasid. Selliste kellade juhtimisahelaid saab konstrueerida, kui teil on oskus rakendada piiratud funktsionaalseid muundureid ja konstrueerida diskreetsete juhtimissüsteemide lõplikke automaatseid mudeleid.

Küsimus: probleem. Lihtsatel aritmeetilistel tehtel põhinevad elektroonilised kellad


Tere, foorumi kasutajad!
Aidake mind selle probleemiga, palun >><
Ülesanne:
Elektroonilised kellad näitavad aega formaadis h:mm:ss ehk siis kõigepealt salvestatakse tundide arv, seejärel on vaja kahekohalist minutite arvu, seejärel kahekohalist sekundite arvu. Vajadusel täidetakse minutite ja sekundite arv kahekohalise numbriga nullidega.

Päeva algusest on möödas N sekundit. Printige välja, mida kell näitab.
Sisendandmed
Sisestage täisarv n.

Väljund
Printige nõutud vormingus ülesande vastus.

Näited
sisendandmed
3602
väljund
1:00:02

Siin on see, mida ma sain:

Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import ; importida javax.swing.plaf.synth.SynthOptionPaneUI; import java.util.Scanner ; avalik klass quest ( public static void main(String args) ( Skanner sisse = uus Skänner (Süsteem .in ) ; pikk n,h,m,s; n = sisse.nextLong () ; h = (n % (3600 * 24) ) ) /3600 ; m = (n % 3600 ) / 60 ; s = (n % 60 ) ; kui (m< 10 ) { if (s< 10 ) { System .out .println (h+ ":0" +m+ ":0" +s) ; } else if (s>10 ) ( System .out .println (h+ ":0" +m+ ":" +s) ; ) ) else if (m> 10 ) ( if (s)< 10 ) { System .out .println (h+ ":" +m+ ":0" +s) ; } else if (s>10 ) ( System .out .println (h+ ":" +m+ ":" +s) ; ) ) )

See lahendus pole kõigil juhtudel õige, kuigi ma ei saa aru, miks =c
Aidake mul probleem leida, olen tänulik!

Vastus:

Java
1 2 3 int i = 3602; Kohalik aeg = LocalTime.MIDNIGHT .plus (i, SEKUNDIT) ; System .out .println (aeg) ;

Küsimus: Elektrooniline kell äratuskellaga Delphi


Sõbrad, me peame oma praktikat kaitsma, meile anti ülesandeks äratuskellaga elektrooniline kell, kes aitab või viskab ära?)
Olen väga-väga tänulik)

Lisatud 1 minuti pärast
sõbrad, soovitavalt sõnastusega)

Vastus:

Sõnum saatjalt anegdot

Selgub, et elektrooniline kell

Vaatame teie kella ja seda, mis seal ei tööta.


Sisendandmed

Väljund





Python
1 2 3 4 5 6 7 8 9 n = int (sisend()), kui n< 1440 : print (n//60 ) print (n%60 ) else : a = 1440 - n a *= -1 print (a//60 ) print (a%60 )

Vastus: Saab tingimusteta lahendada:

Küsimus: Elektroonilised kellad


Vaja on välja töötada programm, mis realiseerib elektroonilist kella.Numbreid realiseeritakse graafiliselt läbi ristkülikute komplekti, mitte teksti kujul.
Nõutavad liidese elemendid: peamenüüriba, kujundielemendid või atribuudi Canvas kasutamine numbrite ja juhtnuppude joonistamiseks.

Vastus: xxbesoxx, mitte nii lihtne. Ülesanne

Sõnum saatjalt Kapetra

Numbrid realiseeritakse graafiliselt läbi ristkülikute komplekti, mitte teksti kujul

Kapetra,

P.S. kui teemat hoolega vaadata, siis leiad palju huvitavat

Küsimus: probleem elektrooniliste kellade kohta


Arv n on antud. päeva algusest on möödas n minutit. Määrake, mitu tundi ja minutit digitaalkell sel hetkel näitab.

Sisendandmed
Sisestage arv n – positiivne täisarv, mis ei ületa 10 seitsmenda astmeni.

Väljund
Programm peaks väljastama kaks numbrit: tundide arv (0 kuni 23) ja minutite arv (0 kuni 59).

Pange tähele, et n võib olla suurem kui minutite arv päevas.
__________________________________________________________________________________________
minu lahendus, aidake mul viga leida.
___________________________________________________________________________________________

Pythoni kood
1 2 3 4 5 6 7 8 9 n = int (sisend()), kui n< 1440 : print (n//60 ) print (n%60 ) else : a = 1440 - n a *= -1 print (a//60 ) print (a%60 )

Vastus:

Sõnum saatjalt Andrei_Goa

Uuri päevade arvu

Miks on see? Päevade arvu pole kuskil vaja, ainult ülejäänud jaotust

Pythoni kood
1 2 tundi = (n % 1440 ) // 60 minutit = (n % 1440 ) % 60

Küsimus: "Elektroonilised kellad"


Ülesanne ise: “Elektrooniline kell näitab kellaaega h:mm:ss formaadis ehk kõigepealt kirjutatakse üles tundide arv, siis on vaja kahekohalist minutite arvu, seejärel kahekohalist sekundite arvu Vajadusel täiendatakse minutite ja sekundite arvu kahekohalise numbriga nullidega.
Päeva algusest on möödas N sekundit. Printige välja, mida kell näitab."
Link sellele: .
Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Programmi aeg2; var a, n: Integer ; Alusta Readln (n) ; Kui n= 0, siis Writeln ("00" , ":" , "00" , ":" , "00" ) else Kui (n<3600 ) and ((n div 60 ) <10 ) and ((n mod 60 ) <10 ) then Writeln ("00:0" , n div 60 , ":0" , n mod 60 ) else If (n<3600 ) and ((n div 60 ) >= 10 ) ja ((n mod 60 ) >= 10 ) siis Writeln ("00:" , n div 60 , ":" , n mod 60 ) else If (n<86400 ) and (n>3600 ) ja ((n div 3600 )<10 ) and (((n mod 3600 ) div 60 ) <10 ) and (((n mod 3600 ) mod 60 ) <10 ) then Writeln ("0" , n div 3600 , ":0" , (n mod 3600 ) div 60 , ":0" , (n mod 3600 ) mod 60 ) else If (n<86400 ) and (n>3600 ) ja ((n div 3600 ) >= 10 ) ja (((n mod 3600 ) div 60 ) >= 10 ) ja (((n mod 3600 ) mod 60 ) >10 ) siis Writeln (n div 3600 , " :" , (n mod 3600 ) div 60 , ":" , (n mod 3600 ) mod 60 ) else If (n mod 86400 = 0 ) then Writeln ("00" , ":" , "00" , ":" , "00" ) else a: = n mod 86400 ; Kui (n > 86400 ) ja ((a div 3600 ) >= 10 ) ja (((a mod 3600 ) div 60 ) >= 10 ) ja (((a mod 3600 ) mod 60 ) >= 10 ), siis alusta ( a:=n mod 86400;) Writeln (a div 3600 , ":" , (a mod 3600 ) div 60 , ":" , (a mod 3600 ) mod 60 ) end else If (n>86400 ) ja (a div 3600)<10 ) and (((a mod 3600 ) div 60 ) <10 ) and (((a mod 3600 ) mod 60 ) <10 ) then Writeln ("0" , a div 3600 , ":0" , (a mod 3600 ) div 60 , ":0" , (a mod 3600 ) mod 60 ) end .

Probleem on selles, et kuni ma ei hakanud proovima seda "õiges" vormingus väljastada, oli kõik korras. See andis välja suvaliste numbrite korral, katsetas 30 varianti.. Hakkasin kannatama nende nullidega, mis peaksid ilmuma enne minuteid või sekundeid, kui neid on alla 10 ja kõik läks põrgusse. Nüüd töötab programm õigesti ainult teatud numbrite puhul ja ma ei ole veel suutnud välja mõelda "käivitusalgoritmi". Enamiku numbrite puhul ei tooda programm lihtsalt midagi. Oleks tore, kui see näitaks vähemalt mingeid vigu, aga ei, lihtsalt tühi ekraan.
Kas sellel meetodil "õige" kirjutamine "Kui" kaudu on üldse õigus elule?
Siin on esialgne versioon, kus kõik oli välja antud vales formaadis, aga sisuliselt korrektne

Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Programmi aeg2; var a, n: Integer ; Alusta Readln (n) ; Kui n= 0, siis Writeln ("00" , ":" , "00" , ":" , "00" ) muidu Kui n<86400 then Writeln (n div 3600 , ":" , (n mod 3600 ) div 60 , ":" , (n mod 3600 ) mod 60 ) else If n mod 86400 = 0 then Writeln ("00" , ":" , "00" , ":" , "00" ) else If n>86400, siis alusta a: = n mod 86400 ; Writeln (a div 3600 , ":" , (a mod 3600 ) div 60 , ":" , (a mod 3600 ) mod 60 ) ; lõpp lõpp .

Ja millisel juhul on programm üldiselt "lihtsalt vaikne"?

Vastus:

Pascal
1 2 3 4 5 6 7 8 9 10 11 12 var n: Longint ; h, m, s: täisarv ; alustada ReadLn (n) ; h: = n div 3600 mod 24 ; m: = n mod 3600 div 60 ; s: = n mod 3600 mod 60 ; Kirjutage (h, ":" ) ; kui m<10 then Write ("0" ) ; Write (m, ":" ) ; if s<10 then Write ("0" ) ; WriteLn (s) ; end .

Küsimus: Elektrooniline kell äratuskellaga


Tere inimesed! Palun aidake mul probleemist aru saada. On olemas elektroonilised kellad, mis näitavad reaalaega. Vormile peate asetama 3 nuppu: "H", "M", "A". Nupp
“H” (tunnid) suurendab tundide arvu ühe võrra ja nupp “M” (minutid) suurendab minutite arvu. Kasv toimub vastavalt modulo 24 ja 60. Sellistel kelladel on lihtne käitumine, kuna iga kahest sisestustoimingust (esimese või teise nupu vajutamine) viib ühe ettemääratud
teatud kella reaktsioon. Lisanupp “A” (Alarm) on mõeldud äratuskella sisse- ja väljalülitamiseks. Kui äratuskell on välja lülitatud, lülitab nupp “A” selle sisse ja paneb kella režiimi
milles nupud “H” ja “M” ei määra mitte praegust aega, vaid reageerimisaega
Äratuskell Nupu “A” uuesti vajutamine naaseb kella tavarežiimi. Pealegi tuleks seda kõike teha automaatse programmeerimise abil. Siin on projekt:
Kuid õpetaja andis programmi nimekirja, kuid ainult C++ keeles. Palun aidake, äkki on keegi midagi sarnast teinud. Ehk saab seda kuidagi ümber teha.
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 classAlarm_Clock(public: voidh_button() //Nupu H vajutamine( if (on_alarm_time_mode) ( alarm_hours= (alarm_hours+ 1 ) % 24 ; ) else ( tunnid= (tunnid+ 1 ) % 24 ; ) ) voidm_button() //NupuvajutusM ( if (on_alarm_time_mode) (alarm_time_minute) (alarm_time_minutes) (alarm_time_minute) ; ) else ( minutid= (minutid+ 1 ) % 60 ; ) ) voida_button() //Vajutage nuppu A( if (on_alarm_on) ( if (on_in_alarm_time_mode) ( is_in_alarm_time_mode= false ; ) else ( bell_off() ; is_alarm_on= false ; ) ) else ( is_alarm_on= true ; is_in_alarm_time_mode)()= true ; //Käivitage minutitaimer( if (on_alarm_on&&! is_in_alarm_time_mode) { kui(( minutit == alarm_minutes1 ) && ( tundi == alarm_tunnid ) || ( alarm_minutes == 0 ) && ( minutit == 59 ) && ( tundi == alarm_hours1 ) ) bell_on () ; elseif (( minutit == alarm_minutes ) && ( tundi == alarm_tunnid ) ) bell_off () ; } minutit = ( minutit + 1 ) % 60 ; kui( minutit == 0 ) tundi = ( tundi + 1 ) % 24 ; } privaatne: tundides ; //Kella praegune aeg minutid ; //Praeguse aja minutid intalarm_hours ; //Äratuskell intalarm_minutes ; //Alarmi helisemiseks minut boolis_alarm_on ; //Kas äratus on sisse lülitatud? boolis_in_alarm_time_mode ; //Kas äratuse aja määramise režiim on aktiivne? voidbell_on () { ...} //Luba kõne voidbell_off () { ...} //Lülita kõne välja } ;

Parandasin digitaalse kella. See on ebareaalselt lahe, arvestades, et ma pole kunagi elektroonikaekspert olnud. See on esimene kord mu elus. Probleem oli selles, et nad hakkasid välja lülituma, kui äratus hakkas tööle. Arvasin, et konditsioneer on oma õhukvaliteedi kaotanud. Hoolimata kolimisest on mul konditsioneerid endiselt mingist vanast trükkplaadist joodetud. Jalad olid vastavalt väga lühikesed. Lisasin juhtmed. Joodis paralleelselt vanaga ja töötas. Huvitaval kombel oli tahvlil ruumi veel vaid ühe konditsioneeri jaoks.

Üldine vorm:

Aga roheline tünn on see, mille ma jootsin:

Töötab suurepäraselt.

Ühe asjana otsustasin katsetada. Hiljuti õppisin tundma dünaamilisi näitajaid. See tähendab, et paljude seadmete helendavad indikaatorid ei põle pidevalt, vaid vilguvad pidevalt, kuna see on odavam, juhtmeid on vähem. (See ei kehti vedelkristallide kohta. Need ei põle üldse, need on filtrid ja nende all olev lambipirn helendab.) Huvitav, kuidas see närvisüsteemile mõjub... Kontrollimiseks võite pildistada mingisugust ekraani lühikese säriajaga mitu korda ja seal tuleb kogu segadus nähtavaks. Sellel kellal sai see nähtavaks juba 1/150 säriajal.





Kui keegi aru ei saa: ma filmisin täiesti töökorras kella. Ükskõik kui lähedalt sa ka ei vaataks, on palja silmaga võimatu värelust näha. Seadsime säriajaks 1/25 - kõik muutub normaalseks:

Ja ka silmadega tundub kõik hästi. Nii petavad meid indikaatorid. Kõik.

Tõenäoliselt pole ükski seade nii vastuvõtlik igasugustele muutustele ja ebatavalistele kehastustele kui tavaline käekell. Alustades päikeseenergiast ja lõpetades aatomitega - ja kui palju erinevaid variatsioone nende vahel on... Postitades perioodiliselt välismaistest allikatest pärit eriti huvitavaid diagramme ja kujundusi ning seekord tutvustame teile veel üht hetke kellaaja kuvamise seadet, milleks on mitte ainult vanal kodusel vaakumnäidikul, on ka ainult üks number.

Ühekohaline kellaskeem

See kell kasutab PIC16F84A mikrokontrollerit. Ahel on üsna lihtne, kuna see kasutab ühte indikaatorit, mida juhivad transistorid ja ei vaja väga võimsat võimsusmuundurit.

Lamp, mida nad kasutasid, oli Nõukogude IN-12A. Kõrgepinge toide saadakse odava (mittetöötava) digikaamera komponentidest, seega ei maksa see peaaegu midagi.

Kell kuvab aega nii, et perioodiliselt muutuvad indikaatorite numbrid kümnetelt tundidelt minutiteks. Seejärel kustuvad nad mõneks sekundiks. Näiteks kellaaja näitamiseks 12:45 , süttib esmalt sekundiks 1 , Siis 2 , Siis 4 , Siis 5 . Ja paar sekundit pausi.

Kellaaja määramiseks peate vajutama nuppu ja seejärel suureneb number, mida soovite muuta, iga kord, kui vajutate, ja nii edasi ringikujuliselt vahemikus 0 kuni 9.

Emaplaat sisaldab kõiki komponente, välja arvatud kõrgepinge võimsuse muundamise moodul. Kõik tahvlite, püsivara jms failid asuvad ühises arhiivis. Ahela jaoks vajalikud komponendid:

  • IN-12 indikaator
  • MK PIC16F84A
  • 10x kõrgepinge SMD transistorid MMBTA42
  • 13x 0805 takistid
  • Kvarts 4 MHz
  • 2x 22pF kondensaatorit
  • Nupp

Kõrgepingemuundur, nagu eespool mainitud, kasutab kaamera välklambilt eemaldatud komponente – trafot, dioodi ja väljundkondensaatorit.

Kui otsustate selle kella kokku panna, pidage meeles, et see kasutab kõrget pinget - kuni 400 V. Olge kokkupanemisel ja töötamisel ettevaatlik!

Koodi programmeerimiseks PIC-i vajate programmeerijat ja programmeerimistarkvara. Siin kasutasime Hiina k150 programmeerijat. Peate programmi laadima hex-faili ja põletama MK-kiibi.

Enne esimeste kellade leiutamist mõõdeti aega päikest vaadates. Hommikul tõuseb päike ühelt poolt horisondi kohale, seejärel ületab taeva vastasküljele ja loojub horisondi alla. Järgmisel hommikul kordub sama.

Aega, mis kulub päikesel täielikuks pöördeks, nimetatakse päeval. Päevad muutuvad nädalateks. Nädalaid kuudesse. Kuudest aastatesse. Aastatest sajanditeks.

Ühes sajandis on 100 aastat.

Ühes aastas on 12 kuud.

Ühes kuus on 30 või 31 päeva.

Aja jooksul jagunes päev kaheks osaks ennelõunal ja pärastlõunal. Iga osa oli jagatud 12 osaks – tunniks. Seetõttu on kellal 12 jaotust. Ööpäevas on ainult 24 tundi.

Vaatame kella. Rasvased jooned ja numbrid tähistavad siin tunde, kellal on neid 12. Väike osuti näitab tundi. Päeva jooksul teeb väike käsi kaks pööret 12 tundi. Aeglaselt liigub väike käsi kellast kellani.

Tund on jagatud 60 osaks – minutiks. See tähendab, et 1 tund 60 minutit.

Kella sihverplaat on jagatud 60 osaks (üks jaotus - üks minut). Suur käsi näitab minuteid. Kui suur käsi teeb ühe pöörde, möödub tund ja väike käsi liigub 1 tunni edasi.

Loendus algab kell 12. Keskööl - 0 tundi 0 minutit või kell 12 öösel.

Kui väike käsi teeb täispöörde, möödub 12 tundi ja kell on 12 – lõuna.

Elektroonilisel kellal kuvatakse kellaaeg numbritega, näiteks kell 1 öösel kuvatakse järgmiselt:

AM (ladina ante meridiem – enne keskpäeva) tähendab, et kuvatav aeg on vahemikus südaööst keskpäevani või 0 kuni 12 tundi.

Pärast kella 12 jätkub loendus. Tunni pärast on kell 13 tundi või 1 tund pärast keskpäeva, siis 14 (või 2 tundi pärast keskpäeva):

PM (lat. post meridiem – pärast lõunat) – kuvatav aeg on vahemikus keskpäevast südaööni, st kella 12–12 öösel või 12–24 tundi

Minutiosuti teeb ringi ühe tunniga. Üks jaotus – 1 minut. Kui minutiosuti näitab 1, on see 5 minutit, 2 on 10 minutit, 3 on 15 minutit ja nii edasi, kuni minutiosuti teeb täisringi ja naaseb 12 kuni 60 minutini:

Koostame päeva tundide tabeli:

00:00 AM

01:00 AM

02:00 AM

03:00 AM

04:00 AM

05:00 AM

06:00 AM

07:00 AM

08:00 AM

09:00 AM

10:00 HOMMIKUL

11:00

12:00 PM

01:00 PM

14:00

15:00

16:00

Kui märkate viga, valige tekstiosa ja vajutage Ctrl+Enter
JAGA:
Arvutid ja kaasaegsed vidinad