Projektrapport - Roterande digital LED-klocka

Relevanta dokument
Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

Växtviskaren EITF11 Digitala projekt VT15, I12

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Bilen som inte kan krocka

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

Projektrapport Målgång

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Digitala Projekt(EITF40) - Larm

Effektpedal för elgitarr

Digitala Projekt (EITF11) Hemlarm

The Phenomenal Doorbell Bilaga 2. Källkod

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Thunder s Truck projektrapport

Digitala Projekt(EITF40) - Larm

DIGITALA PROJEKT (EITF40) Fartmätare

EITF11: Bandkanon Grp 05

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

Pulsmätare Digitala Projekt EITF11

TEMPERATURMÄTARE MED GRAFRITARE

Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall

Pulsmätare med varningsindikatorer

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

High Core Remote Car X8000 Cool

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz

Digitala projekt Linjeföljande bil

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

Digitala Projekt (EITF11) Larmanläggning

Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

Digitala Projekt (EITF11)

Projektrapport i Digitala System

The Intelligent Timer

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Projektrapport - Feststation

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

Rapportsammanfattning. Optima Sous Vide

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

DIGITALA PROJEKT - EITF11

Digitalt Projekt: Radiostyrd Bil

Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Digitala Projekt VT13. PING-Pong

PROJEKTTYP: Rapportsammanfattning STUDENTER: Larsson, J. ( ) och Oredsson, J. ( ) DATUM: 26 april, 2015

EITF11 - Digitala Projekt

Digitala projekt - Radiostyrd bil

ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC Handledare Bertil Lindvall

Rapport Digitala Projekt EITF Grupp 12 Elin Blomstergren, Victor Sundgren Handledare: Bertil Lindvall. Fyra i rad

EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

JOFEN-Prototypes. Målsökande pansarvagn. Projektarbete i Kursen EITA15. Jonatan Claesson, Olle Jonasson, Felix Rödén, Edvin Rossi & Nils Olén

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Datorteknik 1 (AVR 1)

LOOKY LUKE. Caroline Hellström och Ville Orlander Arvola Industriell ekonomi I10. - Att välja en lyckosam väg EITF11 Digitala projekt

AVR 5. Styrning av trafikljus. Digitala system 15 p

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall

Roboten. Sida 1 av 11

Helena Harrysson och Linnéa Wickberg

DIGITALA PROJEKT Väderstation

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

Innehåll. 1 Inledning 3

Projektrapport - RoboWalter

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

TILLÄMPNINGAR INOM DATORTEKNIK

Digitala projekt, EITF11 - Rapport Handledare: Bertil Lindvall. Fredrik Nylund (ine12fny) Johan Ekman (ine11jek) Olof Wikman (ine11owi)

Datorprojekt, del 1. Digitala system 15 p

Instruktion elektronikkrets till vindkraftverk

Projektrapport i Digitala projekt EITF11. Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola

Laboration 1: Styrning av lysdioder med en spänning

THE VISUAL EGGTIMER. Skola: Lunds Tekniska Högskola Institution: Elektro- och informationsteknik Kurs: Digitala projekt (EITF11)

Linjeföljare Digitala projekt Johan Engström e02je Henrik Persson e02hp

Mekanisk solros, Digitala projekt(edi021) Kristoer Nordvall, Stefan Windfeldt, Inlämmnad: 4 december 2006

Tidsstyrd persiennöppnare

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

Datorteknik 2 (AVR 2)

Digitala Projekt, EITF40

Design av inbyggda system

Rapport i Digitala Projekt (EDI021)

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Transkript:

Projektrapport - Roterande digital LED-klocka Kurs : EITF 11 - Digitala projekt Elever : Axel Truedsson, Erik Lundström, Sara Åkerblom Handledare : Bertil Lindvall Datum : 2017-05-17 Lunds Tekniska Högskola

Sammanfattning Denna rapport beskriver kraven, arbetsprocessen och resultatet av implementering av en roterande LED-klocka. Avslutnignsvis förs en diskussion runt arbetet och möjliga framtida förbättringar. Kraven på klockan är huvudsakligen följande: visa tiden vid rotation, ställa in starttid enligt HH:MM samt att klockan ska kunna hålla tiden. I projektet har en rad olika hårdvarukomponenter använts som vars egenskaper och funktioner beskrivs i teoridelen. Klockans knappar gör det möjligt för användaren att ställa in tiden. Genom att trycka på den gula knappen kan användaren skifta mellan att ställa in timme eller minut. De nästföljande två knapparna (efter den gula) gör det möjligt att öka och minska timme/minut. Den sista knappen används för att starta tidräkningen i processorn. Arbetsprocessen var inledningsvis väldigt teoretisk med framtagning av kopplingsschema och kravspecifikation. Programmeringen av mjukvaran skedde i Atmel Studio 7.0 och efter succesiv felsökning med JTAG kunde slutligen önskat resultat uppnås.

Innehållsförteckning 1 Inledning 3 1.1 Syfte 3 2 Kravspecifikation 3 2.1 Funktionella krav 3 2.2 Kvalitativa krav 3 3 Teori 3 3.1 Hårdvara 4 3.1.1 Processor 4 3.1.2 Mönsterplatta 4 3.1.3 LED-lampa 4 3.1.4 Knapp (strömbrytare) 4 3.1.5 Kristall 4 3.1.6 JTAG 4 3.1.7 Light Sensor AMS 302 4 3.1.8 Batteri 4 3.1.9 Resistorer 4 3.2 Mjukvara 5 4 Användning & instruktionsmanual 5 4.1 Starta klockan 5 4.2 Ställ in tid 5 4.3 Stäng av klockan 5 5 Arbetsprocess 5 5.1 Planering 6 5.2 Konstruktion av hårdvara 6 5.3 Programmering av mjukvara 6 6 Resultat 7 7 Diskussion 7 9 Källor 7 Appendix 7

1 Inledning 1.1 Syfte Syftet med denna rapport är att beskriva och redogöra för projektet roterande digital LED-klocka. Denna projektrapport utgör en del av dokumentationsarbetet i kursen EITF11 Digitala Projekt vid Lund Tekniska Högskola. Kursens övergripande mål är att ge studenten en ökad förståelse och ett begrepp om hur konstruktionsarbete går till samt prestera en fungerande prototyp med tillhörande dokumentation. Med en fungerande prototyp syftar rapporten till att lyckas utveckla en prototyp som når eller försöker nå de funktionella krav och kvalitativa krav som ställs på prototypen i den här rapporten. Den här rapporten behandlar projektets olika delar i form av en kravspecifikation, bakomliggande teori, en användarmanual, en beskrivning av arbetsprocessen och slutligen resultat och en diskussion kring resultatet. 2 Kravspecifikation Här följer de funktionella och kvalitativa krav som ställs på produkten. Dessa har använts som ledstång och utgångspunkt vid utvecklandet av produkten. 2.1 Funktionella krav 1. Klockan ska kunna visa tiden vid rotation med hjälp av LED-lamporna. 2. Användaren ska kunna justera och ställa in tiden. 3. Klockan ska uppdateras i realtid. 4. Tiden ska visas i digital form enligt HH:MM. 5. Siffrorna ska uppdateras varje minut. 6. Prototypen ska ha fyra knappar som ska kunna användas vid inställning av tiden. 7. Klockan ska kunna pausas för att ställa om tiden. 2.2 Kvalitativa krav 1. Klockarmen ska rotera med 1500 hz. 2. Siffrorna ska tydligt kunna urskiljas. 3. Tidsfördröjningen ska inte påverka tidsinställningen med mer än två sekunder.

3 Teori Här följer en sammanfattad beskrivning av den teori som använts under projektets gång. Avsnittet är uppdelat i två delar. Första delen behandlar de hårdvarukomponenter som används och den andra delen behandlar mjukvaran. 3.1 Hårdvara Nedan beskrivs de hårdvarukomponenter som utgör prototypen. 3.1.1 Processor För projektet används en 8 bits-processor av modellen Atmega 16. 3.1.2 Mönsterplatta Detta är plattan som utgör klockarmen. På denna monterades komponenterna. 3.1.3 LED-lampa Prototypen har åtta LED-lampor som lyser rött då de kopplas till ström. 3.1.4 Knapp (strömbrytare) Prototypen består av fyra knappar som gör det möjligt att välja mellan timmar eller minuter, öka eller minska tiden samt pausa eller starta tidräkningen. Utöver detta finns även en strömbrytare som är kopplad till motorn. 3.1.5 Kristall En 16 MHz kristall har använts för att skapa en elektriskt signal med exakt frekvens. Denna frekvens har använts för att få en mer exakt tid än processorns egen tidräknare. Detta för att få en så stabil varvtid som möjligt. 3.1.6 JTAG En AVR JTAG används under projektet för felsökning. 3.1.7 Light Sensor AMS 302 En ljussensor som gör det möjligt att registrera varje gång klockarmen passerar. På så sätt är det möjligt att kartlägga när LED-lamporna ska lysa respektive inte lysa.

3.1.8 Batteri För att klockan ska kunna rotera utan att trassel med lösa sladdar uppstår behövs det ett batteri som förser alla hårdvarukomponenter på mönsterplattan med ström. Batteriet som används har spänning 6 volt. 3.1.9 Resistorer På ett antal ställen på mösnterplattan har resistorar av olika storlek monterats för att komponenterna ska förses med rätt spänning. 3.2 Mjukvara Källkoden för prototypens mjukvara har utvecklats i språket C i programmet AtmelStudio 7. En kopia av källkoden återfinns i Appendix B. Programmets huvudsakliga kod utgörs av en main-metod som möjliggör att klockan räknar tiden från en starttid som användaren ställer in. Koden innehåller även de attribut och metoder som gör det möjligt att lamporna tänds och släcks i ett mönster så att tiden visas vid rotation. Attribut som motsvarar lampornas mösnter, för att kunna avbilda siffror, lagras i vektorer. Varje siffra för 0-9 inklusive ett kolontecken lagras i en 11x5 matris. Metoder för kalibrering och inställning av tiden är kopplade till de insignaler som kommer från knapparna. 4 Användning och instruktionsmanual Nedan följer ett antal manualer för de funktioner som är möjliga hos prototypen. 4.1 Slå på klockan För att starta klockan kopplas ström till klockan. Klockan är nu i pausläge och tiden kan ställas in. 4.2 Ställ in tid Den gula knappen används för att ställa in timme eller minut. Skifte mellan dessa två sker genom en knapptryckning. Knappen närmast den gula knappen används för att öka tiden. En knapptryckning ökar tiden en minut eller en timme. Knappen näst längst ifrån den gula knappen används för att minska tiden. En knapptryckning minskar tiden en minut eller en timme. 4.3 Starta klockan Tryck på paus/start-knappen, som startar prototypens tidräkning. Tryck sedan på strömbrytaren som sitter på motorns baksida. Klockan ska nu rotera och visa tiden som ställts in. För varje minut som går ska tiden uppdateras medan klockarmen roterar.

4.4 Stäng av klockan Stäng av rotationen genom att slå av strömbrytaren på motorns baksida. Bryt sedan strömmen till klockan. 5 Arbetsprocess Här följer en beskrivning av hur arbetet har fortskridit och dess tre huvudsakliga faser. 5.1 Planering Projekt inleddes under i januari 2017 med planering och förberedelse av projektet. Det initiala planeringsarbetet bestod av utforska vilka möjligheter som finns och fatta beslut om vad projektet ska prestera. Efter diskussion beslutades det att projektet ska prestera en roterande LED-klocka. Sedan specificerades de krav som projektet ställer på prototypen. Det fortsatta planeringsarbetet, med interna och externa deadlines, har sedan haft sin utgångspunkt från dessa. Kraven gjorde det även möjligt i ett tidigt skede kunna identifiera vilka hårdvarukomponenter som kommer krävas för prototypen, samt vilka problem som skulle kunna uppstå under projektets gång. Som en del av planeringsarbetet producerades ett kopplingsschema som en övergripande ritning av hur prototypen ska vara uppbyggd. Först när projektidé och kopplingsschema godkänts av handledare inleddes det konkreta arbetet med konstruktion och programmering av prototypen. 5.2 Konstruktion av hårdvara Med utgångspunkt från det godkända kopplingsschemat inleddes konstruerandet av prototypen. Komponenterna löddes fast och kopplades samman i mönsterplattan. De olika kopplingarna testades sedan med hjälp av JTAG. De fel som upptäcktes åtgärdades och behövdes i några fall lödas om. 5.3 Programmering av mjukvara När hårdvaran var testad och fungerade enligt önskemål började källkoden utvecklas. Källkoden började utvecklas småskaligt, till exempel genom att deklarera de attribut och parametrar som skulle kunna tänkas behövas. För att koden skulle vara översiktlig och lättarbetad användes beskrivande namn för deklarationerna och kommentarer i koden. Källkoden testades löpande med hjälp av JTAG och fel modifierades successivt för att uppnå önskat resultat.

6 Resultat Nedan presenteras resultat av prototypen i form av en serie bilder och beskrivande bildtext. Se hemsida för video! Figur 1: Prototypens ursprungsläge med batteriet urkopplad. Överst i bild syns 8 LED som visar tiden och till vänster om LED sitter 4 knappar som används för att konfiguera önskad starttid.

Figur 2: Prototypen med batteriet inkopplat. I inkopplat ursprungsläge lyser den översta lampan, vilket indikerar att prototypen väntar på att användare ska ställa in timme. Figur 3: Genom att trycka på gula knappen, börjar andra lampan lysa och användaren tillåts ställa in minuter.

Figur 4: Genom att klicka på den andra knappen (uppifrån) kan användaren öka timme/minut. Vilken siffra användaren är på beskrivs binärt av de 6 undre lamporna (läses nerifrån). Genom att tryck på den tredje knappen (uppifrån) kan användaren minska timme/minut.

Figur 5: Prototypens baksida. De nedre kablarna driver motorn, de övre ljussensorn.

Figur 6: Prototypen med klockarmen avmonterad. I den röda cirkeln sitter LED som sänder ut IR-ljus. I den gula cirkeln sitter en ljussensor som registrerar IR-ljus.

7 Diskussion Samtliga studenter i gruppen anser att arbetet har utvecklat förmågan att planera och driva ett projekt framåt. Då gruppen saknade stora delar av nödvändig kunskap inför projektet, ägnades en stor del av projektets inledande fas åt faktainsamling. Framförallt inom programmering i språket C. Under kursen har gruppen erhållit stöd och feedback från handledare, men gruppen har också haft mycket användning av de databladsmanualer som finns tillgängliga på kurshemsidan. 9 Källor [1] Datablad till processor Atmega 16 < http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega16.pdf > Hämtad: 2017-05-09 [2] Datablad till Voltage Regulator MCP 1827 < http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/analog/voltage/mcp1827.pdf > Hämtad: 2017-05-09 [3] Datablad till Inverterare Hex Smith Trigger Inverter < http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/logik/74hc/74hc14.pdf > Hämtad: 2017-05-09 [4] Datablad till QUADRUPLE 2-INPUT POSITIVE-OR GATES < http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/logik/74hc/74hc32.pdf > Hämtad: 2017-05-09 [2] Allmän information angående programmering i C < www.avrfreaks.net > Hämtad: 2017-05-09

Appendix Appendix A - Kopplingsschema Figur 1: Till vänster är konstruktionen som är monterad på klockarmen. I höger nedre hörn är kopplingschemat av IR-LED som svarar mot ljussensorn.

Appendix B - Källkod /* * LEDNEW2.c * * Created: 2017-04-24 13:58:57 * Author : kem14sak */ // IMPORTS(?) #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 16000000UL //16MHZ #include<util/delay.h> //FUNCTIONS void settime (); void timerunner (); void counter (); void nbrvector (); void showclock (); void displaytime (); //VARIABLES unsigned int LAMPA = 0; unsigned int HOUR = 0; unsigned int MIN = 0; unsigned int SEC = 0; unsigned int HOURORMIN = 1; //0=timmar, 1=minuter unsigned int PRESSEDBUTTON ; unsigned int bispressed = 0; // sant falskt unsigned int pausetime = 0; unsigned int count = 0; unsigned int count1 = 0; unsigned int count2 = 0; unsigned int count3 = 0; unsigned int place = 0; unsigned int playpause = 0; //0 = PAUS unsigned int hourfirst = 0; unsigned int hoursecond = 0; unsigned int minfirst = 0; unsigned int minsecond = 0; unsigned int onepos = 0; unsigned int roundtime = 0; static int numbers [11][5] = { {193, 190, 190, 190, 193, //0

; {238, 222, 128, 254, 254, //1 {222, 188, 186, 182, 206, //2 {221, 190, 182, 182, 201, //3 {135, 247, 247, 247, 128, //4 {133, 182, 182, 182, 184, //5 {193, 182, 182, 182, 217, //6 {191, 191, 188, 179, 143, //7 {201,182, 182, 182, 201, //8 {207, 183, 183, 183, 128, //9 {255, 255, 204, 255, 255 //dots // INTERRUPTS FROM BUTTONS ISR ( INT0_vect ){ bispressed = 1; PRESSEDBUTTON = PINB ; _delay_ms (20); //INTERRUPTS FROM LIGHT SENSOR ISR ( INT2_vect ){ roundtime = count2 ; onepos = roundtime /60; count2 =0; count3 =0; GIFR = 1<< INTF2 ; /*INTERRUPTS FOR TIME*/ ISR ( TIMER1_OVF_vect ){ TCNT1 = 0xffff - 5; if ( playpause ==1){ count = 1; //counter(); //MAIN int main ( void ) { SEC = 0; GICR = 1<< INT0 1<< INT2 ; // ENABLE INT0 & INT2 MCUCR = 1<< ISC01 1<< ISC00 ; //RISING EDGE ON INT0 MCUCSR = 1<< ISC2 ; //RISING EDGE ON INT2 GIFR = 1<< INTF2 ; TCCR1B = (1 << CS12 ); // (0 << CS10); //Prescaler 1024, skalar ner klockan --> 15625 Hz TIMSK = (1 << TOIE1 ); TCNT1 =0xffff - 5;

sei (); //Enable global interrupt DDRA = 0xff; //PORTA output (lampa) 0 = LYSER PORTA = 0xff; //PORTA '1' (släckt) DDRB = 0x00; //PORTB input (knapp) PORTB = 0xff; //PORTB internall pullup (ska reagera då vi trycker LAMPA = 127; PORTA = LAMPA ; playpause = 0; //DET SOM SKA KÖRAS HELA TIDEN while (1){ if ( bispressed ==1){ PRESSEDBUTTON = PRESSEDBUTTON & 0b11110000; if ( PRESSEDBUTTON == 0b10000000){ //OM PLAY/PAUS-KNAPP BLIR INTRYCKT if ( playpause == 0){ playpause =1; //1 = PLAY showclock (); else { playpause = 0; //0 = PAUS settime (); if ( count == 1){ counter (); // KNAPPAR void settime (){ bispressed =0; if ( playpause ==1){ else { PRESSEDBUTTON = PRESSEDBUTTON & 0b11110000; if ( PRESSEDBUTTON == 0b00010000 ){ //OM GUL KNAPP BLIR INTRYCKT if ( HOURORMIN == 0){ MIN = 191 - LAMPA ; //SPARAR MINUTER HOURORMIN =1; //TIMME LAMPA = 127 - HOUR ; //LADDAR TIMMAR else { HOUR = 127 - LAMPA ; //SPARAR TIMMAR HOURORMIN = 0; //MINUT LAMPA = 191 - MIN ; //LADDAR MINUTER

PRESSEDBUTTON = 0; if ( PRESSEDBUTTON == 0b00100000){ //VI VILL ÖKA TIDEN if ( HOURORMIN == 0){ if ( LAMPA == 132){ //SKA BLI 0 MIN LAMPA = 191; else { LAMPA = LAMPA -1; if ( HOURORMIN == 1){ if ( LAMPA == 104){ //SKA BLI 0 TIMMAR LAMPA = 127; else { LAMPA = LAMPA -1; PRESSEDBUTTON = 0; if ( PRESSEDBUTTON == 0b01000000){ //VI VILL MINSKA TIDEN if ( HOURORMIN == 0){ if ( LAMPA == 191){ //SKA BLI 59 MIN LAMPA = 132; else { LAMPA = LAMPA +1; if ( HOURORMIN == 1){ if ( LAMPA == 127){ //SKA BLI 23 TIMMAR LAMPA = 104; else { LAMPA = LAMPA +1; PRESSEDBUTTON = 0; PORTA = LAMPA ; //UPDATE TIME void timerunner (){ SEC ++; if ( SEC >= 60) {

MIN ++; showclock (); SEC = 0; if ( MIN >= 60) { HOUR ++; MIN = 0; if ( HOUR >=24) { HOUR = 0; //RÄKNA TID void counter (){ count1 ++; count2 ++; if ( count1 >= 12496){ count1 =0; timerunner (); if ( count2 % onepos == 0){ count3 ++; displaytime (); void displaytime (){ //Första if ( count3 >=16 && count3 <= 20){ PORTA = numbers [ hourfirst ][ place ]; place ++; //ANDRA else if ( count3 >=22 && count3 <= 26){ PORTA = numbers [ hoursecond ][ place ]; place ++; //PRICKAR else if ( count3 >=28 && count3 <= 32){ PORTA = numbers [10][ place ]; place ++; //TREDJE else if ( count3 >=34 && count3 <= 38){ PORTA = numbers [ minfirst ][ place ]; place ++;

//FJÄRDE else if ( count3 >=40 && count3 <= 44){ PORTA = numbers [ minsecond ][ place ]; place ++; //RESET else { PORTA = 0xff; //Stäng av alla lampor place = 0; //STARTA SNURRANDE KLOCKA void showclock (){ hourfirst = HOUR /10; hoursecond = HOUR %10; minfirst = MIN /10; minsecond = MIN %10;