Peg Solitaire. Digitala Projekt EITF10. Lunds Tekniska Högskola. Maria Krantz, Ylva Nordlund
|
|
- Sandra Danielsson
- för 8 år sedan
- Visningar:
Transkript
1 Peg Solitaire Digitala Projekt EITF10 Lunds Tekniska Högskola Maria Krantz, Ylva Nordlund Abstract We have constructed a digital Peg Solitaire game in the course EITF10. The device is built with a 64*128 pixel LCD screen, a keypad consisting of 16 buttons and an AVRMega 16 one-chip microprocessor. Using the keypad the player can navigate the board presented on the screen and choose what pegs to move in order to complete the game. The components were first connected and when we understood how the hardware worked, the programming of the game was made. This document describes the construction as well as the methods used to build and program the device. It also describes problems found during the process and how they were solved.
2 Innehållsförteckning Innehåll Innehållsförteckning Inledning Krav Hårdvara ATMega JTAG LCD-skärm Knappsats, 16 knappar OR-port Resistorer Mjukvara Kod Polling-avbrott Spelet Genomförande Svårigheter Programmera i C Timing Skärmen JTAG Datablad Resultat Utvärderande diskussion Referenslista Appendix Bilaga buttons.c lcdscreen.c digpisolitaire.c... 22
3 10.2 Bilaga 2: h-filer buttons.h lcdscreen.h digpisolitaire.h font.h Bilaga 3: Kopplingsschema Bilaga 4: Knappsats... 34
4 1. Inledning Detta projekt gick ut på att få en inblick i konstruktionsarbete och för att studenterna ska lära sig kopplingen mellan hårdvara och mjukvara. Som studenter från I-programmet var detta ett nytt och spännande ämne. Vi fick själva välja typ av projekt men skulle utgå från mikroprocessorn ATMega16. Vi valde att lägga till en LCD-skärm på 64*128 pixlar och en knappsats med 16 knappar för att göra ett spel som heter Peg Solitaire. Nedan följer rapporten med en bskrivning av krav och komponenter, utförandet, problem på vägen samt resultat och diskussion. 2. Krav Kravspecifikationen var det första som skrevs och styrde senare vad konstruktionen skulle kunna göra. Konstruktionen ska kunna sätta upp ett Peg Solitaire och kunna spela det enligt reglerna för spelet. När bara en kula finns kvar i mitten av brädet är spelet avslutat och man har vunnit. Vid start ska brädet ritas upp på LCD-skärmen med fyllda kulor, förutom i mitten där markören ställs. Navigation på brädet ska skötas av 4 piltangenter, med en markering på den ruta man befinner sig på. Det ska gå att markera den kula man vill flytta på och sedan ska det gå flytta den till en tom plats enligt reglerna för spelet. Det ska finnas en RESET knapp för att starta om brädet. I mån av tid ska följande göras: Sätta en tidsbegränsning för hur länge man får spela och införa ett high score register
5 3. Hårdvara 3.1 ATMega16 ATMega16 är en enchipsprocessor med 16 kb minne med 40 pinnar. Dessa består bland annat av 4 portar som skrivs till med 8 bitar åt gången. Till dessa kopplades skärmen, knappsatsen och en JTAG för kontakt med datorn. 3.2 JTAG JTAG används för att kunna föra över programvaran vi skrev i AVR Studio till processorn så att programmet skulle kunna köra. 3.3 LCD-skärm LCD-skärmen bestod av två skärmar om vardera 64*64 pixlar. Vilken skärm som skrevs på styrdes av genom portarna Chipselect 1 och 2. I x-led var skärmarna uppdelade i 8 stycken pages som alltid skrevs alla 8 pixlar på en gång. I y-led skrevs det på skärmen ut pixel för pixel, för varje pixel som skrevs flyttades markeringen en pixel framåt automatiskt. 3.4 Knappsats, 16 knappar Knapparna hade 8 pinnar, 4 inportar och 4 utportar. Ettor skickades i tur och ordning till inportarna och när en knapp var nedtryckt kunde en etta avläsas från någon av pinnarna på utporten. Knapparna vi använde var följande: RST Reset M Markera J - Jump to W - Winner test Pilar upp, ner, höger och vänster Siffrorna 2-9 används inte. 3.5 OR-port Pinnarna på utporten från knappsatsen kopplades till varsina OR-portar. På så sätt skrevs en etta till PC0 om någon av knapparna blev nedtryckta och då kontrollerades vilken knapp som var nedtryckt. 3.6 Resistorer De fyra utportarna från knappsatsen kopplades även till varsin resistor för att de skulle vara aktiva höga, när ingen knapp var nedtryckt visade de alltså noll.
6 4. Mjukvara 4.1 Kod Koden är uppdelad i tre c-filer med respektive h-filer samt en h-fil för utskrift av brädet och bokstäverna. digpisolitare.c: Huvudprogrammet och de metoder som rör spelets gång. buttons.c: Alla metoder som rör knappsatsen och dess kommunikation med processorn. lcdscreen.c: Alla metoder som rör skärmen och dess kommunikation med processorn. font.h : Definierar utskriftskommando för brädet och bokstäverna. Samtliga filer finns i bilaga Polling-avbrott För att läsa av om en knapp blivit nedtryckt använde vi oss så kallad polling. Knappsatsen hade fyra pinnar dit processorn skickade en etta till en pinne med hjälp av en loop. Vilken pinne som hade en etta bestämde raden på knappsatsen. Efter varje loop lästes pinnen PC0 av för att se om en knapp var intryckt och i så fall bröts loopen och radnumret sparades. Därefter lästes knappsatsens utport av, som bestämde kolonnen. Med värde på både kolonn och rad bestämdes vilken knapp som varit intryckt. 4.3 Spelet Peg Solitaire är ett brädspel för en spelare som flyttar kulor mellan hål på ett bräde. När spelet börjar ser brädet ut enligt följande, där punkterna respresenterar kulor och o representerar ett tomt hål: o Drag görs genom att man tar en kula och hoppar med den över en annan kula till ett tomt hål. Den kula som blivit överhoppad tas då bort från brädet. Spelet är vunnet när det bara finns en kula kvar på brädet. För att göra spelet i digital form ritades brädet på skärmen. Vid spelets början finns också en markör på mittenkulan som visar var på skärmen man befinner sig. Spelaren kan sedan navigera med hjälp av knapparna runt på skärmen. Knappen markerad med M används för att markera den kula som man vill flytta. Knappen J används för att flytta den markerade kulan till den
7 plats på skärmen man befinner sig på. Kulan flyttas bara om draget är möjligt enligt reglerna för spelet. Knappen RST används för att börja om spelet, och knappen W används för testa vad som händer om man lyckas lösa spelet. Då skrivs texten YOU WIN ut på skärmen och man kan sedan trycka RST för att börja om igen. Se även bilaga 1 för spelets kod. 5. Genomförande Vi började vårt projekt med att rita ett kopplingsschema och sätta ihop skärmen och processorn enligt detta. När de var kopplade satte vi in JTAG:en och skrev ett testprogram för att försöka skriva till skärmen. Det tog en hel del tid att förstå hur detta skulle göras och hur man skrev kommandon till processorn så att den läste av på rätt ställe och skrev till rätt ställe på skärmen. Det var då vi lyckats skriva till skärmen som vi insåg att vår ursprungliga idé inte gick att genomföra (se 6.3). Vi fortsatte istället med Peg Solitaire och kopplade in knappsatsen till processorn och ORportarna. Vi fick inte knapparna att fungera förrän vi kopplade dem till varsin resistor så att de blev aktiva höga, dvs. skrev en etta endast då en knapp var nedtryckt. I samma veva fick vi även byta ut vår processor eftersom den inte verkade fungera som den skulle. När väl all hårdvara var igång och fungerade som vi ville gick det snabbt att skriva koden till spelet och börja testa den.
8 6. Svårigheter 6.1 Programmera i C Vi hade ingen tidigare erfarenhet av att programmera i C så vi fick läsa oss till hur man skrev metoder och definitioner. Det var också ovant för oss att inte kunna skriva klasser på samma sätt som i Java. 6.2 Timing När vi började testa skärmen fick vi det inte att fungera tills vi skrev en separat rutin för att aktivera rätt port vid rätt tillfälle när vi ville skriva till skärmen. Rutinen följer schemat nedan. 6.3 Skärmen Från början var det tänkt att vi skulle göra en Sudoku-lösare. Denna skulle rita upp ett sudoku och användaren skulle kunna fylla i siffror och sedan trycka på en solve-knapp för att lösa sudokut. Idéen var att skriva siffrorna om 6*8 pixlar inklusive rutnät, för att få plats på skärmen. Vi insåg att detta skulle bli väldigt krångligt då vi hade fått skärmen att fungera eftersom vi tänkt skriva 6 pixlar i x-led, men dessa skrevs 8 pixlar på en gång. Vi fick därför byta spel till ett Peg Solitaire, 8*8 pixlar men 7*7 stort, som fick plats på skärmen. Vi fick även många avbrott från skärmen som dock försvann när vi bytta ut kabeln mellan skärmen och processorn.
9 6.4 JTAG Vi hade mycket problem i början med avbrott från JTAG:en och konstruktionen är mycket känslig för om man stöter till den. 6.5 Datablad Eftersom vi inte tidigare har arbetat med elektroniska komponenter hade vi ingen erfarenhet av att läsa datablad. Detta var ett bekymmer under hela arbetet med projektet och vi fick fråga vår handledare om många detaljer. 7. Resultat Vår konstruktion fungerar som det är tänkt och det går att spela Peg Solitaire med en markör som kan flyttas över spelplanen och flytta på kulorna. Vi har inte lagt till någon tidtagare eller highscore funktion. 8. Utvärderande diskussion Vi är mycket nöjda med vår konstruktion. I början hade vi svårt att se hur vi skulle klara av att slutföra projektet då vi tyckte att vi saknade många viktiga grundkunskaper. Vi hade mycket hjälp av kursen Datorteknik så att vi i alla fall hade en förståelse för hur mikroprocessorn fungerade på maskinnivå. Vi rekommenderar kursen för andra I-are om de har vissa förkunskaper inom Datorteknik. Önskvärt hade varit en djupare genomgång om hur ATMega16 fungerade innan vi startade med projekten. Slutomdömet är att det har varit roligt och lärorikt. Speciellt att arbeta med hårdvaran var nytt och spännande. Vi fick också oväntade kunskaper i C-programmering som vi kan ha nytta av i framtiden. 9. Referenslista [1] B.W Kernighan, D.M. Ritchie, The C Programming Language, Second Edition, Prentice-Hall PTR 2007 [2] ATMega16 [3] AVR Beginners,
10 10. Appendix 10.1 Bilaga buttons.c #include "buttons.h" #include "lcdscreen.h" #include <avr/io.h> #include "font.h" #include "digpisolitaire.h" * Initialize Buttons void init_buttons() BUTTON_CTRL_DDR = 0xF0; INTERRUPT_CTRL_DDR = 0x00; * Loop buttons by sending signals to keypad void loop_buttons() row = 0; while(check_interrupt() == 0) if(row == 4) row = 0; row += 1; write_button(); check_buttons(); * Sends signals to the keypad void write_button() CLR_BUTTONS; switch(row) case 1: SET_ROW_1; break; case 2: SET_ROW_2;
11 break; case 3: SET_ROW_3; break; case 4: SET_ROW_4; break; default: break; * Checks which button is pressed calls method accordingly * J: Jump to * W: Winner test * RST: Reset game * M: Mark peg * ARROW LEFT: Move left * ARROW RIGHT: Move right * ARROW DOWN: Move down * ARROW UP: Move up * Buttons 2-9 not in use void check_buttons() unsigned char column = (BUTTON_CTRL_PIN & 0x0F); switch(row) case 1: if(column == 0x01) reset_game();//rst break; else if(column== 0x02) mark_peg();//m break; else if(column == 0x04) jump_to(); //J break; else if(column == 0x08) move_left(); //arrow left break; case 2: if(column == 0x08)
12 move_right(); //arrow right; break; else break; case 3: if(column == 0x08) move_down(); //arrow down break; else break; case 4: if(column == 0x08) move_up(); //arrow up break; else if(column == 0x01) winner_test(); break; else break; default: break; * Checks if a buttons is pressed. Returns 1 if pressed, 0 if not unsigned char check_interrupt() if(interrupt_ctrl_pin & 0x01) return 1; else return 0; * Prints on the screen as if the game was completed. void winner_test()
13 for(j = 0; j < 49; j++) if(board[j]!= -1) board[j] = 0; write_no_peg(j/7, j%7*8+4); board[24] = 1; x_pos = 24/7; y_pos = 24%7; write_as_position(x_pos, y_pos*8+4); * Resets game; void reset_game() setup(); * Marks position in the matrix and shows peg as marked on the screen void mark_peg() if(marked!= -1) if(board[marked] == 1) write_full_peg(marked/7, (marked%7)*8+4); else if(board[marked] == 0) write_no_peg(marked/7, (marked%7)*8+4); else write_empty(marked/7, (marked%7)*8+4); marked = x_pos*7+y_pos; write_as_marked(x_pos, y_pos*8+4); * Jumps to chosen position and prints the result of the move on the screen void jump_to() remove_peg(); write_as_position(x_pos, y_pos*8+4);
14 * Moves postition one step to the left * and prints the result of the move on the screen void move_left() p = x_pos*7+y_pos; if(board[p] == 1 && marked!= p) write_full_peg(x_pos, y_pos*8+4); else if(board[p] == 0 && marked!= p) write_no_peg(x_pos, y_pos*8+4); else if(board[p] == -1) write_empty(x_pos, y_pos*8+4); if(y_pos == 0) y_pos = 6; else y_pos--; if(marked!= x_pos*7+y_pos) write_as_position(x_pos, y_pos*8+4); * Moves postition one step to the right * and prints the result of the move on the screen void move_right() p = x_pos*7+y_pos; if(board[p] == 1 && marked!= p) write_full_peg(x_pos, y_pos*8+4); else if(board[p] == 0 && marked!= p) write_no_peg(x_pos, y_pos*8+4); else if(board[p] == -1) write_empty(x_pos, y_pos*8+4); if(y_pos == 6) y_pos = 0; else y_pos++; if(marked!= x_pos*7+y_pos) write_as_position(x_pos, y_pos*8+4); * Moves postition one step up * and prints the result of the move on the screen void move_up()
15 p = x_pos*7+y_pos; if(board[p] == 1 && marked!= p) write_full_peg(x_pos, y_pos*8+4); else if(board[p] == 0 && marked!= p) write_no_peg(x_pos, y_pos*8+4); else if(board[p] == -1) write_empty(x_pos, y_pos*8+4); if(x_pos == 0) x_pos = 6; else x_pos--; if(marked!= x_pos*7+y_pos) write_as_position(x_pos, y_pos*8+4); * Moves postition one step down * and prints the result of the move on the screen void move_down() p = x_pos*7+y_pos; if(board[p] == 1 && marked!= p) write_full_peg(x_pos, y_pos*8+4); else if(board[p] == 0 && marked!= p) write_no_peg(x_pos, y_pos*8+4); else if(board[p] == -1) write_empty(x_pos, y_pos*8+4); if(x_pos == 6) x_pos = 0; else x_pos++; if(marked!= x_pos*7+y_pos) write_as_position(x_pos, y_pos*8+4); lcdscreen.c #include <avr/io.h> #include "lcdscreen.h" #include "font.h" #include "digpisolitaire.h" * Enable E signal to display for timing. void e_strobe(void)
16 SET_EN; CLR_EN; * Starts up lcd-screen. void lcdinit(void) LCD_DATA_DDR = 0xFF; LCD_CTRL_DDR = 0xFF; CLR_RST; SET_RST; * Turns lcd-screen on. void lcdon(void) LCD_CS0; lcdwritecmd(display_on_cmd ON); LCD_CS1; lcdwritecmd(display_on_cmd ON); LCD_NOCS; * Routine for writing comand to the screen. void lcdwritecmd(unsigned char cmd) CLR_RS; CLR_RW; LCD_DATA_DDR = 0xFF; LCD_DATA_PORT = cmd; e_strobe(); SET_RW; * Routine for writing data to the screen. void lcdwritedata(unsigned char data) SET_RS; CLR_RW; LCD_DATA_DDR = 0xFF; LCD_DATA_PORT = data; e_strobe(); SET_RW;
17 * Prints a hole without peg to the screen to page x, pixel-column y. void write_no_peg(unsigned char x, unsigned char y) lcdgoto(x,y); lcdwritedata(no_peg_a); lcdwritedata(no_peg_b); lcdwritedata(no_peg_c); lcdwritedata(no_peg_d); lcdwritedata(no_peg_e); lcdwritedata(no_peg_f); lcdwritedata(no_peg_g); lcdwritedata(no_peg_h); *Prints peg to the screen to page x, pixel-column y. void write_full_peg(unsigned char x, unsigned char y) lcdgoto(x,y); lcdwritedata(full_peg_a); lcdwritedata(full_peg_b); lcdwritedata(full_peg_c); lcdwritedata(full_peg_d); lcdwritedata(full_peg_e); lcdwritedata(full_peg_f); lcdwritedata(full_peg_g); lcdwritedata(full_peg_h); *Checks if there is a peg or not at the position an calls according methods * for printing position square. void write_as_position(unsigned char x, unsigned char y) int pos = x_pos*7+y_pos; lcdgoto(x,y); if(board[pos] == 1) write_as_pos_full(); else if(board[pos] == 0) write_as_pos_no(); else write_as_pos();
18 *Prints position square for peg to the screen at page x, pixel-column y. void write_as_pos_full() lcdwritedata(full_pos_peg_a); lcdwritedata(full_pos_peg_b); lcdwritedata(full_pos_peg_c); lcdwritedata(full_pos_peg_d); lcdwritedata(full_pos_peg_e); lcdwritedata(full_pos_peg_f); lcdwritedata(full_pos_peg_g); lcdwritedata(full_pos_peg_h); *Prints position square for hole without peg to the screen at page x, pixel-column y. void write_as_pos_no() lcdwritedata(no_pos_peg_a); lcdwritedata(no_pos_peg_b); lcdwritedata(no_pos_peg_c); lcdwritedata(no_pos_peg_d); lcdwritedata(no_pos_peg_e); lcdwritedata(no_pos_peg_f); lcdwritedata(no_pos_peg_g); lcdwritedata(no_pos_peg_h); *Prints position square for empty space to the screen at page x, pixel-column y. void write_as_pos() lcdwritedata(pos_peg_a); lcdwritedata(pos_peg_b); lcdwritedata(pos_peg_c); lcdwritedata(pos_peg_d); lcdwritedata(pos_peg_e); lcdwritedata(pos_peg_f); lcdwritedata(pos_peg_g); lcdwritedata(pos_peg_h); *Checks if there is a peg or not at the position an calls according methods * for printing marked square. Goes to page x, pixel column y. void write_as_marked(unsigned char x, unsigned char y) int pos = x_pos*7+y_pos;
19 lcdgoto(x,y); if(board[pos] == 1) write_as_m_full(); else if(board[pos] == 0) write_as_m_no(); else write_as_m(); *Prints marked square for peg to the screen. void write_as_m_full() lcdwritedata(full_m_peg_a); lcdwritedata(full_m_peg_b); lcdwritedata(full_m_peg_c); lcdwritedata(full_m_peg_d); lcdwritedata(full_m_peg_e); lcdwritedata(full_m_peg_f); lcdwritedata(full_m_peg_g); lcdwritedata(full_m_peg_h); *Prints marked square for hole without peg to the screen. void write_as_m_no() lcdwritedata(no_m_peg_a); lcdwritedata(no_m_peg_b); lcdwritedata(no_m_peg_c); lcdwritedata(no_m_peg_d); lcdwritedata(no_m_peg_e); lcdwritedata(no_m_peg_f); lcdwritedata(no_m_peg_g); lcdwritedata(no_m_peg_h); *Prints marked square for empty space without peg to the screen. void write_as_m() lcdwritedata(m_peg_a); lcdwritedata(m_peg_b); lcdwritedata(m_peg_c); lcdwritedata(m_peg_d); lcdwritedata(m_peg_e); lcdwritedata(m_peg_f); lcdwritedata(m_peg_g);
20 lcdwritedata(m_peg_h); *Prints empty space to the screen at page x, pixel-column y. void write_empty(unsigned char x, unsigned char y) lcdgoto(x,y); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); *Prints winning text to the screen at page x, pixel-column y. void write_letter(unsigned char x, unsigned char y) lcdgoto(x,y); lcdwritedata(l_y_a); lcdwritedata(l_y_b); lcdwritedata(l_y_c); lcdwritedata(l_y_d); lcdwritedata(l_y_e); lcdwritedata(l_y_f); lcdwritedata(l_y_g); lcdwritedata(l_y_h); lcdwritedata(l_o_a); lcdwritedata(l_o_b); lcdwritedata(l_o_c); lcdwritedata(l_o_d); lcdwritedata(l_o_e); lcdwritedata(l_o_f); lcdwritedata(l_o_g); lcdwritedata(l_o_h); lcdwritedata(l_u_a); lcdwritedata(l_u_b); lcdwritedata(l_u_c); lcdwritedata(l_u_d); lcdwritedata(l_u_e);
21 lcdwritedata(l_u_f); lcdwritedata(l_u_g); lcdwritedata(l_u_h); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(empty); lcdwritedata(l_w_a); lcdwritedata(l_w_b); lcdwritedata(l_w_c); lcdwritedata(l_w_d); lcdwritedata(l_w_e); lcdwritedata(l_w_f); lcdwritedata(l_w_g); lcdwritedata(l_w_h); lcdwritedata(l_i_a); lcdwritedata(l_i_b); lcdwritedata(l_i_c); lcdwritedata(l_i_d); lcdwritedata(l_i_e); lcdwritedata(l_i_f); lcdwritedata(l_i_g); lcdwritedata(l_i_h); lcdwritedata(l_n_a); lcdwritedata(l_n_b); lcdwritedata(l_n_c); lcdwritedata(l_n_d); lcdwritedata(l_n_e); lcdwritedata(l_n_f); lcdwritedata(l_n_g); lcdwritedata(l_n_h); LCD_NOCS; *Sets the screen position to page x, pixel-column y. void lcdgoto(unsigned char x, unsigned char y) if(y > 63)
22 LCD_CS1; y -= 64; else LCD_CS0; lcdwritecmd(display_set_x x); lcdwritecmd(display_set_y y); *Clears lcd screen. void lcdcls(void) unsigned char x, y; for (x = 0; x < 8; x++) for (y = 0; y < 128; y++) lcdgoto(x,y); lcdwritedata(0x00); lcdgoto(0,0); digpisolitaire.c #include "digpisolitaire.h" #include "lcdscreen.h" #include <avr/io.h> #include "buttons.h" int main(void) setup(); while(1) start_game(); * Sets up lcd screen, buttons and matrix void setup()
23 lcdinit(); lcdon(); init_buttons(); lcdcls(); setup_board(); * Sets up matrix and prints start-up board on the screen void setup_board() k = 1; board[0] = -1; while(k < 49) x = k / 7; y = k % 7; if(x < 2 x > 4) if(y < 2 y > 4) board[k] = -1; else board[k] = 1; write_full_peg(x, y*8+4); else board[k] = 1; write_full_peg(x, y*8+4); k++; board[24] = 0; x_pos = 24/7; y_pos = 24%7; write_as_position(x_pos, y_pos*8+4); marked = -1; * Runs game void start_game() while(check_board())
24 loop_buttons(); print_win(); board[24] = 0; * Performes the move if possible according to Solitaire rules. void remove_peg() k = x_pos*7+y_pos; if(k == (marked+14) && board[marked + 14] == 0) //flyttat ner if(board[k-7] == 1) board[k-7] = 0; board[k] = 1; board[marked] = 0; write_no_peg(x_pos-1, (y_pos*8+4)); write_full_peg(x_pos, (y_pos*8+4)); write_no_peg(x_pos-2, (y_pos*8+4)); marked = -1; else if(k == (marked + 2) && board[marked +2] == 0) //flyttat till höger if(board[k-1] == 1) board[k-1] = 0; board[k] = 1; board[marked] = 0; write_no_peg(x_pos, (y_pos*8-4)); write_full_peg(x_pos, (y_pos*8+4)); write_no_peg(x_pos, (y_pos*8-12)); marked = -1; else if(k == (marked - 2) && board[marked -2] == 0) //flyttat till vänster if(board[k+1] == 1) board[k+1] = 0; board[k] = 1; board[marked] = 0; write_no_peg(x_pos, (y_pos*8+12)); write_full_peg(x_pos, (y_pos*8+4)); write_no_peg(x_pos, (y_pos*8+20)); marked = -1;
25 else if(k ==(marked - 14) && board[marked -14] == 0) //flyttat upp if(board[k+7] == 1) board[k+7] = 0; board[k] = 1; board[marked] = 0; write_no_peg(x_pos+1, (y_pos*8+4)); write_full_peg(x_pos, (y_pos*8+4)); write_no_peg(x_pos+2, (y_pos*8+4)); marked = -1; * Checks if the game is completed. int check_board() int i; int count = 0; for(i = 0; i < 49; i++) if(board[i] == 1) count++; if(count == 1) return 0; else return 1; * Prints winning text. void print_win() write_letter(3, 65);
26 10.2 Bilaga 2: h-filer buttons.h * Define Port D #define BUTTON_CTRL_PORT PORTD #define BUTTON_CTRL_PIN PIND #define BUTTON_CTRL_DDR DDRD *Define Port C #define INTERRUPT_CTRL_PORT PORTC #define INTERRUPT_CTRL_PIN PINC #define INTERRUPT_CTRL_DDR DDRC *Define Columns #define COL_1 (PIND & 0x01) #define COL_2 (PIND & 0x02) #define COL_3 (PIND & 0x04) #define COL_4 (PIND & 0x08) *Define Rows, set and clear #define SET_ROW_1 (BUTTON_CTRL_PORT = (1 << PD7)) #define CLR_ROW_1 (BUTTON_CTRL_PORT &= ~(1 << PD7)) #define SET_ROW_2 (BUTTON_CTRL_PORT = (1 << PD6)) #define CLR_ROW_2 (BUTTON_CTRL_PORT &= ~(1 << PD6)) #define SET_ROW_3 (BUTTON_CTRL_PORT = (1 << PD5)) #define CLR_ROW_3 (BUTTON_CTRL_PORT &= ~(1 << PD5)) #define SET_ROW_4 (BUTTON_CTRL_PORT = (1 << PD4)) #define CLR_ROW_4 (BUTTON_CTRL_PORT &= ~(1 << PD4)) #define CLR_BUTTONS CLR_ROW_1; CLR_ROW_2; CLR_ROW_3; CLR_ROW_4; #define BUTTON_INTERRUPT (INTERRUPT_CTRL_PIN & 0x01) *Methods void init_buttons(); void check_buttons(); void write_button(); unsigned char check_interrupt(); void loop_buttons(); void jump_to(); void mark_peg(); void reset_game();
27 void move_up(); void move_down(); void move_left(); void move_right(); void winner_test(); *Global variables unsigned char row; int p,j; lcdscreen.h * Define Port A for Databus #define LCD_DATA_PORT PORTA //all a-ports #define LCD_DATA_PIN PINA #define LCD_DATA_DDR DDRA //busy-flag * Define Port B for control signals #define LCD_CTRL_PORT PORTB //all b-ports #define LCD_CTRL_PIN PINB #define LCD_CTRL_DDR DDRB //busy-flag * Define control signals to LCD-Display #define LCD_CS1P PB0 #define LCD_CS2P PB1 #define LCD_RST PB2 #define LCD_RW PB3 #define LCD_RS PB4 #define LCD_E PB5 * Define #define SET_CS1 (LCD_CTRL_PORT = (1 << LCD_CS1P)) #define CLR_CS1 (LCD_CTRL_PORT &= ~(1 << LCD_CS1P)) #define SET_CS2 (LCD_CTRL_PORT = (1 << LCD_CS2P)) #define CLR_CS2 (LCD_CTRL_PORT &= ~(1 << LCD_CS2P)) #define SET_RST (LCD_CTRL_PORT = (1 << LCD_RST)) #define CLR_RST (LCD_CTRL_PORT &= ~(1 << LCD_RST)) #define SET_RW (LCD_CTRL_PORT = (1 << LCD_RW)) #define CLR_RW (LCD_CTRL_PORT &= ~(1 << LCD_RW)) #define SET_RS (LCD_CTRL_PORT = (1 << LCD_RS)) #define CLR_RS (LCD_CTRL_PORT &= ~(1 << LCD_RS))
28 #define SET_EN (LCD_CTRL_PORT = (1 << LCD_E)) #define CLR_EN (LCD_CTRL_PORT &= ~(1 << LCD_E)) #define LCD_CS0 SET_CS1;CLR_CS2; #define LCD_CS1 CLR_CS1;SET_CS2; #define LCD_NOCS CLR_CS1;CLR_CS2; #define DISPLAY_STATUS_BUSY 0x80 #define DISPLAY_SET_X 0xB8 #define DISPLAY_SET_Y 0x40 #define DISPLAY_START_LINE 0xC0 #define DISPLAY_ON_CMD 0x3E #define ON 0x01 * Methods void lcdwritedata(unsigned char); void lcdwritecmd(unsigned char); void lcdinit(); void lcdon(); void lcdcls(); void write_no_peg(unsigned char, unsigned char); void write_full_peg(unsigned char, unsigned char); void write_as_position(unsigned char, unsigned char); void write_as_pos_no(); void write_as_pos_full(); void write_as_pos(); void write_as_marked(unsigned char, unsigned char); void write_as_m_no(); void write_as_m_full(); void write_as_m(); void write_empty(unsigned char, unsigned char); void write_letter(unsigned char, unsigned char); void lcdgoto(unsigned char, unsigned char); digpisolitaire.h *Global variables int board[49]; int marked; unsigned char x_pos; unsigned char y_pos; int check_board(); int k,x,y; *Methods
29 void setup(); void setup_board(); void start_game(); void remove_peg(); void print_win(); font.h //empty hole #define no_peg_a 0x00 #define no_peg_b 0x00 #define no_peg_c 0x18 #define no_peg_d 0x24 #define no_peg_e 0x24 #define no_peg_f 0x18 #define no_peg_g 0x00 #define no_peg_h 0x00 //peg #define full_peg_a 0x00 #define full_peg_b 0x00 #define full_peg_c 0x18 #define full_peg_d 0x3C #define full_peg_e 0x3C #define full_peg_f 0x18 #define full_peg_g 0x00 #define full_peg_h 0x00 //position at hole #define no_pos_peg_a 0xAA #define no_pos_peg_b 0x01 #define no_pos_peg_c 0x98 #define no_pos_peg_d 0x25 #define no_pos_peg_e 0xA4 #define no_pos_peg_f 0x19 #define no_pos_peg_g 0x80 #define no_pos_peg_h 0x55 //position at peg #define full_pos_peg_a 0xAA #define full_pos_peg_b 0x01 #define full_pos_peg_c 0x98 #define full_pos_peg_d 0x3D #define full_pos_peg_e 0xBC #define full_pos_peg_f 0x19 #define full_pos_peg_g 0x80 #define full_pos_peg_h 0x55
30 //Position at empty space #define pos_peg_a 0xAA #define pos_peg_b 0x01 #define pos_peg_c 0x80 #define pos_peg_d 0x01 #define pos_peg_e 0x80 #define pos_peg_f 0x01 #define pos_peg_g 0x80 #define pos_peg_h 0x55 //Marked at hole #define no_m_peg_a 0xFF #define no_m_peg_b 0x81 #define no_m_peg_c 0x99 #define no_m_peg_d 0xA5 #define no_m_peg_e 0xA5 #define no_m_peg_f 0x99 #define no_m_peg_g 0x81 #define no_m_peg_h 0xFF //Marked at peg #define full_m_peg_a 0xFF #define full_m_peg_b 0x81 #define full_m_peg_c 0x99 #define full_m_peg_d 0xBD #define full_m_peg_e 0xBD #define full_m_peg_f 0x99 #define full_m_peg_g 0x81 #define full_m_peg_h 0xFF Marked at empty space #define m_peg_a 0xFF #define m_peg_b 0x81 #define m_peg_c 0x81 #define m_peg_d 0x81 #define m_peg_e 0x81 #define m_peg_f 0x81 #define m_peg_g 0x81 #define m_peg_h 0xFF //Empty space #define empty 0x00 //Letter Y #define l_y_a 0x00 #define l_y_b 0x00 #define l_y_c 0x06 #define l_y_d 0x08
31 #define l_y_e 0xF0 #define l_y_f 0x08 #define l_y_g 0x06 #define l_y_h 0x00 //Letter O #define l_o_a 0x00 #define l_o_b 0x38 #define l_o_c 0x44 #define l_o_d 0x82 #define l_o_e 0x82 #define l_o_f 0x44 #define l_o_g 0x38 #define l_o_h 0x00 //Letter U #define l_u_a 0x00 #define l_u_b 0x7E #define l_u_c 0x80 #define l_u_d 0x80 #define l_u_e 0x80 #define l_u_f 0x80 #define l_u_g 0x7E #define l_u_h 0x00 //Letter W #define l_w_a 0x00 #define l_w_b 0x00 #define l_w_c 0x7E #define l_w_d 0x80 #define l_w_e 0x70 #define l_w_f 0x80 #define l_w_g 0x7E #define l_w_h 0x00 //Letter I #define l_i_a 0x00 #define l_i_b 0x00 #define l_i_c 0x00 #define l_i_d 0x82 #define l_i_e 0xFE #define l_i_f 0x82 #define l_i_g 0x00 #define l_i_h 0x00 //Letter N #define l_n_a 0x00 #define l_n_b 0xFE #define l_n_c 0x04
32 #define l_n_d 0x08 #define l_n_e 0x10 #define l_n_f 0x20 #define l_n_g 0xFE #define l_n_h 0x00
33 10.3 Bilaga 3: Kopplingsschema
34 10.4 Bilaga 4: Knappsats W J M R 21
Digitala projekt HT 2007 PONG
Digitala projekt HT 2007 PONG Emil Klasson, Fredrik Eneroth Grupp 3 2007-12-04 Digitala projekt Abstract This document describes our own construction and implementation of the first video game ever made
Digitala Projekt(EITF40) - Larm
Digitala Projekt(EITF40) - Larm Handledare: Bertil Lindvall Erik Oredsson, I-09 Sara Sellin, I-09 2012-05-08 1. SAMMANFATTNING I denna rapport presenteras vårt projekt att bygga ett huslarm från grunden
Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall
Rapport Digitala Projekt EITF11 2017-05-08 Rapport Fyra i rad-spel Sammanfattning: Detta dokument beskriver arbetsprocessen i det projekt som är en del av kursen Digitala Projekt(EITF11) vid Lunds Tekniska
EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11
EITF11 WormFight Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11 Innehåll Inledning... 3 Kravspecifikation... 3 Teori - Hårdvara... 3 Processor - AVR ATMega16... 3 Display - GDM12864C...
LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall
LARMANLÄGGNING Digitala Projekt, EITF11 Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall 1. Sammanfattning Vi har byggt ett larm vars syfte är att användas i hemmet. Larmet använder
Digitala Projekt (EITF11) Hemlarm
Digitala Projekt (EITF11) Hemlarm Karl Nordenstorm, I-12, gem12kno 2014-05-16 Handledare: Bertil Lindvall Sammanfattning Den här rapporten beskriver arbetet bakom hur en prototyp för ett hemlarm har utvecklats
Digitala projekt VT Myran
Digitala projekt VT 2010 Myran Lina Ottosson I07, Lovisa Svensson I07 Grupp 02 Handledare: Bertil Lindvall Institutionen för elektro- och informationsteknik 2010-05-17 Abstract This report is about the
#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;
#include #include #include unsigned char num; int count = 0; // antal i lokalen char larmtriggered = 0; //om larmet är utlöst char larmactivated = 0; //om larmet
Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)
Skola: Institution : Kurs : Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11) Projekttyp : Rapportsammanfattning Handledare : Bertil Lindvall Studenter : Datum : 2015-05-11
Thunder s Truck projektrapport
LTH Thunder s Truck projektrapport EITF11 Digitala projekt 2012-05-10 Abstract The goal of this project was to build a truck operated by an IP-remote. The robot is built using standard parts such as two
Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,
Snake Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola, 2015-05-18 Oskar Petersen, I-12 Handledare: Bertil Lindvall Abstract Denna rapport beskriver ett projekt där ett klassiskt
Digitala Projekt(EITF40) - Larm
Digitala Projekt(EITF40) - Larm Handledare: Bertil Lindvall Kristoffer Sätermark, dt08ks6 Magnus Johansson, dt08mj9 Innehåll 1 Introduktion 1 2 Kravspec 1 3 Hårdvara 2 3.1 knappsats och decoder........................
The Phenomenal Doorbell Bilaga 2. Källkod
The Phenomenal Doorbell Bilaga 2. Källkod #include #include #include //Variabler int flag = 0; int count = 0; int timevect[8]; int bellbutton = 0; int waitbutton
Helena Harrysson och Linnéa Wickberg
Snake Ett klassiskt spel i ny tappning Helena Harrysson och Linnéa Wickberg 2013-05-20 Handledare Bertil Lindvall Abstract The course Digitala Projekt, EITF11, focuses on the process of constructing a
The Intelligent Timer
The Intelligent Timer Linnea Karell och Oscar Bagge, I10 Handledare: Bertil Lindvall 2013-05-20 Abstract The objective of this project was to build a prototype of a digital timer. The product design specification
Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA 2015-05-18
2015 Larmcentral Digitala Projekt Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA 2015-05-18 Inledning Denna rapport är en sammanställning av projektet i kursen Digitala
Rapport Digitala Projekt EITF Grupp 12 Elin Blomstergren, Victor Sundgren Handledare: Bertil Lindvall. Fyra i rad
Fyra i rad Sammanfattning Detta dokument behandlar ett projekt genomfört i kursen Digitala Projekt vid Lunds Tekniska högskola. Syftet med det projekt som avhandlas i denna rapport var att sammanställa
TETRIS. LTH, Campus Helsingborg EITA15 Digitala System
TETRIS LTH, Campus Helsingborg EITA15 Digitala System Handledare: Bertil Lindvall Författare: Isak Shamun, Viktor Kulle, Mark Slipac och Dennis Järnåsen Datum: 2019-05-09 Abstract This report concerns
Växtviskaren EITF11 Digitala projekt VT15, I12
Växtviskaren EITF11DigitalaprojektVT15,I12 NathalieLiljebrunn,EbbaRiismark,AnnaNorelius LundsTekniskaHögskola Institutionenförelektro ochinformationsteknik Handledare:BertilLindvall,AndreasJohansson 2015
Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall
Sammanfattning I denna rapport behandlas ett projekt inom kursen Digitala Projekt, EITF11, vid Lunds Tekniska högskola. Syftet med projektet är att konstruera en enkel digital prototyp samt programmera
EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall
EITF11 Digitala Projekt TIC TAC TOE Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall Lunds Tekniska Högskola VT 2016 0 Sammanfattning Rapporten handlar om ett projekt i kursen EITF11
Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare
Feeding Daisy En automatisk blomvattnare EITF11 Lunds Tekniska Högskola Grupp 12: Pontus Akervall Louise Landare Anton Schölin Handledare: Bertil Lindvall Introduktion... 3 Hårdvara... 3 Processor... 3
Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren
Lunds Tekniska Högskola EITF11 Digitala projekt Bandspelaren Johan Hansson & Cecilia Skoglund 22 maj 2017 Abstract This is a report describing the work process, hardware, software and results of a project
Digitala Projekt VT13. PING-Pong
Digitala Projekt VT13 PING-Pong Författare: Patrik Karlsson I-10, Erik Friberg I-10 Handledare: Bertil Lindvall Projektarbete Institutionen för Elektro- & Informationsteknik 2013-05-20 Abstract The purpose
Pulsmätare Digitala Projekt EITF11
Pulsmätare Digitala Projekt EITF11 Grupp 5 Sebastian Mattsson, 900611 ain09sma@student.lu.se Johannes Persson, 880823 ain09jpe@student.lu.se Handledare: Bertil Lindvall Innehållsförteckning Inledning...3
Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola
Väderstation Anna Kjölstad Svedu och Emma Sikander, I09 The overall purpose of this project was to gain further knowledge of the making of digital devices, including the complexity of the process as well
Pulsmätare med varningsindikatorer
Pulsmätare med varningsindikatorer Elektro- och informationsteknik Projektrapport, EITF11 Digitala Projekt Charlie Hedhav Sofia Johansson Louise Olsson 2016-05-17 Abstract During the course Digitala Projekt
Effektpedal för elgitarr
EITF11 - Digitala Projekt Effektpedal för elgitarr Handledare: Bertil Lindvall Ivan Rimac (I05) Jimmy Lundberg (I08) 2011-05-10 Contents Bakgrund... 3 Kravspecifikation... 3 Kravspecifikation Effektpedal...
TEMPERATURMÄTARE MED GRAFRITARE
LUNDS TEKNISKA HÖGSKOLA TEMPERATURMÄTARE MED GRAFRITARE Grupp 6 Jesper Henrikson & Viktor Sköld Handledare: Bertil Lindvall 1 Innehållsförteckning Innehållsförteckning 2 Inledning 3 Kravspecifikation 4
EITF11 - Digitala Projekt
EITF11 - Digitala Projekt Tvåfaktorslås Lunds Universitet, Lunds Tekniska Högskola Skriven av Erik Mellberg, Hannes Olsson & Zack Jeppesen 22 maj 2018 Sida 1 av 16 Abstract The purpose of this report is
EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson
EITF11 - Digitala projekt Hastighetsmätare Hugo Backmyr 2015-05-17 Inledning Syftet med kursen är att illustrera industriellt utvecklingsarbete. Målet med projektuppgiften är en prototyp för vidareutveckling
Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*
Digitala System Projekt - EITA15 VT - 2019 *SUPER DUPER KLOCKAN* Handledare: Bertil Lindvall Studenter: NamWan Chansaeng Janne Stojovski Joakim Svensson Daniel Löfgren Abstract The goal of this project
1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5
Larmanläggning Tor Berglund Sebastian Svensson Bromert Projektarbete inom Digitala Projekt EITF11 Institutionen för elektro- och informationsteknik Handledare: Bertil Lindvall 2017-05-20 Abstract In the
DIGITALA PROJEKT Väderstation
DIGITALA PROJEKT Väderstation Christian Lindquist, E03 Leonardo Bello, E03 Abstract Almost everybody has some kind of temperature measurement device in their home. The latest in this industry are more
Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...
Abstract Syftet var att konstruera en väder station som håller koll på temperaturen. Huvudfunktionen var att få en grafisk visning av temperaturen över ett visst tidsintervall eftersom vi valde den grafiska
Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.
ATMega16 Laborationer av Kjell 2 Rev:5 Datum: 29.09.2010 Page 1 of 7 Laboration 4: Knappstuds Drivrutiner för att eliminera störningar. Inledning: Laborationskortet EasyAVR6 har bland annat tryckknappar
Bilen som inte kan krocka
Projektrapport Digitala system EITA15 Bilen som inte kan krocka Gruppmedlemmar: Oscar Skarler, Jonathan Persson, Erik Schiemann och Mohammed Abou Naasa vt 2019 Sammanfattning Inom kursen Digitala system
Kla ggvisarskylt. -med en underton av rassel. av Jonathan So nnerup & Gabriel Jo nsson
Kla ggvisarskylt -med en underton av rassel av Jonathan So nnerup & Gabriel Jo nsson May 29, 2012 Abstract This report describes the creation of the Kläggnummerskylt, a project in the course Digital Projects
The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall
The Secure Light Digitala Projekt EITF11 Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12 Handledare: Bertil Lindvall Lunds Tekniska Högskola 2015-05-18 ABSTRACT The Secure Light is the new
Digitala Projekt (EITF11)
Digitala Projekt (EITF11) Temperaturgivare med larm Handledare: Bertil Lindvall 2014-05-20 Erik Hellered, I-11 Andreas Sjöblom, I-11 Philip Dahlström, I-11 Table of Contents Inledning... 1 Kravspecifikation...
DIGITALA PROJEKT (EITF40) Fartmätare
ELEKTRO- OCH INFORMATIONSTEKNIK DIGITALA PROJEKT (EITF40) Fartmätare Handledare: Bertil Lindvall Per Fernström, ie09pf7 Albin Nilsson, ie09an4 5/14/2012 1 Abstract The purpose behind this project is to
Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Marcus Skog. Reaktionsspel EITF11
Digitala Projekt EITF11 Grupp 9 Projektarbete Hanna Bondesson Handledare: Bertil Lindvall Albin Schurmann 2018-05-19 Marcus Skog Reaktionsspel EITF11 Abstract This report is an outcome of the Digital Projects
LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall
LARMANLÄGGNING Digitala Projekt, EITF11 Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall 1. Sammanfattning Vi har byggt ett larm vars syfte är att användas i hemmet. Larmet använder
LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel
LTH Ingenjörhögskolan vid Campus Helsingborg Mastermindspel Handledare: Bertil Lindvall, Lars-Göran Larsson 2019 Projektarbete för kursen Digitala System, EITA15 Utförd av: Henrik Brange, Linus Piggott,
Datorprojekt, del 1. Digitala system 15 p
Namn: Laborationen godkänd: Digitala system 15 p L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Datorprojekt, del 1 Projektet består i att skapa en klocka där tiden visas
Source code. #undef F_CPU. #define F_CPU 8000000UL. #include <avr/io.h> #include <avr/delay.h> #include <string.h> #include <avr/eeprom.
Source code #undef F_CPU #define F_CPU 8000000UL #include #include #include #include #define LCD_DATA_PORT #define LCD_DATA_DDR #define LCD_DATA_PIN PORTA
Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3
LCD Display och Grafik Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3 Målsättning: Efter lektionen ska alla självständigt kunna slutföra
High Core Remote Car X8000 Cool
High Core Remote Car X8000 Cool Ett projekt i kursen Digitala projekt EITF11 Grupp 13 Niklas Ohlsson Anna Rengstedt Per Vingå Handledare: Bertil Lindvall Abstract: This project was made when taking the
EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6) 2012-02-28
EITF40 - RFID-terminal Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6) 2012-02-28 Contents 1 Introduktion 3 2 Kravspecifikation 3 3 Prototypen 4 3.1 Hårdvara............................... 4 3.2
Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt
Battleships Lunds tekniska högskola EITF11 Digitala projekt Gustaf Backman, Anton Nystedt & Nicholas Peebo 1 1. Inledning 1.1 Bakgrund Digitala projekt (EITF11) är en konstruktionskurs där studenter delas
Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors
Avståndsmätare Digitala System EITA15 2019-05-21 Grupp 7 Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors Handledare: Bertil Lindvall, Lars-Göran Larsson Abstract There are some situations
Digitalt Projekt: Radiostyrd Bil
Digitala Projekt EITF11 Digitalt Projekt: Radiostyrd Bil Elektro- och informationsteknik, Lunds Tekniska Högskola och Handledare: Bertil Lindvall 2015-05-20 1 Digitala Projekt EITF11 Abstract This project
Datorteknik 1 (AVR 1)
Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 1 (AVR 1) LTH Ingenjörshögskolan vid Campus Helsingborg Introduktion till datorteknikutrustningen. Laborationens syfte. Syftet med laborationen
Digitala Projekt (EITF11) Larmanläggning
Digitala Projekt (EITF11) Larmanläggning Handledare: Bertil Lindvall 2013-05-20 Caroline Brandt, Jonathan Bratel, Angelika Jansson, Sammanfattning Kursen Digitala Projekt (I) har som syfte att skapa förståelse
Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13
Lunds Tekniska Högskola Elektro- och informationsteknik Liftmaestro Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13 Handledare: Andreas Johansson, Bertil Lindvall 2016-05-20 Projektarbete, EITF11
Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.
Namn: Laborationen godkänd: Digitala system 15 p Datorprojekt, del 2 L T H I n g e n j ö r s h ö g s k o l a n v i d C a m p u s H e l s i n g b o r g Projektlaboration 2, skrivning till LCD. Förberedelser:
Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN
2016 Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN Innehållsförteckning INLEDNING... 3 KRAVSPECIFIKATION AV PROTOTYP... 3 FUNKTIONELLA
Digitala Projekt. Chip Quiz. Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand. Grupp 9
Digitala Projekt Chip Quiz Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand Grupp 9 050516 Abstract We have accomplished a project in the course Digital Systems, Project Laboratory. We decided to
Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall
Pulsmätare EITF11 Digitala Projekt VT15 Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall Abstract As part of the course Digital Projects EITF11
EDI021 Digitala projekt. Rapport LARMSYSTEM. Utförd av: Niklas Eklund E03 David Olsson E04. Inlämnad:
EDI021 Digitala projekt Rapport LARMSYSTEM Utförd av: Niklas Eklund E03 David Olsson E04 Handledare: Bertil Lindvall Inlämnad: 2007-12-04 1 Abstract The market for security devices, both for consumers
Projektrapport Målgång
Projektrapport Målgång Lunds Tekniska Högskola EITF11 Digitala Projekt 2016-05-23 Grupp 3 Författare: Albert Johansson Ludvig Brisby Jeppsson Mattias Hamberg Handledare: Bertil Lindvall 1 Inledning...
EIT. Digitala projekt EITF11. Larmanläggning. Handledare Bertil Lindvall Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10
EIT Digitala projekt EITF11 Larmanläggning Handledare Bertil Lindvall 2014-05-14 Anna Lindberg I-11 Caroline Vitasp I-11 Eric Eliason I-10 Sammanfattning I kursen digitala projekt (EITF11) på Lunds Tekniska
Vi har i kursen Digitala Projekt EITF11 byggt en spelkonsol på vilken man kan spela Snake. Mjukvaran programmerades i C på en AVR Mega32 processor.
Vi har i kursen Digitala Projekt EITF11 byggt en spelkonsol på vilken man kan spela Snake. Mjukvaran programmerades i C på en AVR Mega32 processor. Övrig hårdvara som användes var en 128x64-pixlars LCD-display,
Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson
Department of Information Technology Digitala projekt SuperKull Daniel Öhman Alexander Persson Abstract The purpose of this course was to design and construct an electronic
Projektrapport i Digitala projekt EITF11. Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola
RADIOSTYRD BIL Projektrapport i Digitala projekt EITF11 Institutionen för Elektro- och informationsteknik, Lunds tekniska högskola Victor Girardin (I-10), Rickard Olsson (I-10) & Staffan Theander (I-09)
PlantPuppy Räddaren för den som inte kan hålla växterna vid liv
Lunds Tekniska Högskola Elektro- och informationsteknik Digitala Projekt PlantPuppy Räddaren för den som inte kan hålla växterna vid liv Gerda Sidwall Thygesen Sofia Sundbom Zoë Wyon ine14gth@student.lu.se
Programmering av grafisk display
Programmering av grafisk display Arbetsboken avsnitt 5 - Drivrutrin för grafisk display, uppg. 5.10-5.16. Datablad LCD Grafisk under resurser på kurshemsidan, s.14-23. Lab 3 - Drivrutiner - Enkel grafik
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng
Projektrapport - Feststation
Projektrapport - Feststation Program: Industriell Ekonomi, LTH Kurs: EITF11 Digitala projekt Elever : Simon Janzon, Ellen Peber & Love Regefalk, Handledare: Bertil Lindvall & Christoffer Cederberg Datum:
Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik
Projekt Väckarklocka LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik Grupp:, och Handledare: Bertil Lindvall och Lars Göran Larsson Kurs: EITA 15 Lunds Tekniska Högskola Datum: 2019-05-21 Sammanfattning
Support Manual HoistLocatel Electronic Locks
Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing
EITF11: Bandkanon Grp 05
EITF11: Bandkanon Grp 05 Kristofer Adolfsson John Karlsson Erik Lagerberg Handledare: Bertil Lindvall Abstract This project was planned and completed during the course EITF11 at Lund Tekniska Högskola
Programmering av grafisk display
Programmering av grafisk display Arbetsboken avsnitt 5 - Drivrutrin för grafisk display, s. 86-96. Datablad LCD Grafisk under resurser på kurshemsidan, s.14-23. Lab 3 - Drivrutiner - Enkel grafik Lab 5
GPIO - General Purpose Input Output
GPIO - General Purpose Input Output Ur innehållet: Digital IO Ideala och verkliga signaler Bitvis in- och utmatning Anslutning - fysiskt gränssnitt F407 - GPIO-modul tillämpningar Programmering av enkelt
Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall
Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall Zoltan Darvas (dt06zd8) Nicklas Nidhögg(dt06nn8) 2010-03-01 1 Abstract I detta project har vi skapat ett huslarm där det finns två stycken sensorer,
Datorteknik 2 (AVR 2)
Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra
Projektrapport Digitala System
Projektrapport Digitala System - Token Ring LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap Ferit Bölezek Nicolo Ridulfo Aisha Kujovic Ugljanin Li Zhu Copyright Ferit Bölezek,
Projektrapport - Roterande digital LED-klocka
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
Rapportsammanfattning. Optima Sous Vide
Rapportsammanfattning Optima Sous Vide Elektro- och informationsteknik, Lunds Tekniska Högskola Anton Bengtsson, Hannes Helin, Ingrid Hyltander Handledare: Bertil Lindvall 2017-05-20 Abstract The following
Det finns en handledning till kortet på hemsidan. AVR STK500.
Laboration 1 (ver 1) Uppgifter: AVR Studio 4.lnk Bli bekant med utvecklingskortet, och AVR studio. Skriva in program för binärräknare. Simulera detta samt ladda ner det till kortet. Förse ovanstående program
Rafiki Wa Kupanda. EITF11, Digitala projekt VT18. Linnea Håkansson, Anton Gunneberg, Ruben Schultz
Rafiki Wa Kupanda EITF11, Digitala projekt VT18 Linnea Håkansson, Anton Gunneberg, Ruben Schultz Lunds Tekniska Högskola Institutionen för elektro- och informationsteknik Handledare: Bertil Lindvall och
RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk
RemoteBud Inlämnas: 2005-02-01 Patrik Johnsson, e01pjo Viktor Karlsson, e01vk Abstract Skulle du också vilja styra dina lampor och rulla ner dina persienner med hjälp av din TV-fjärrkontroll? Remotebud
ETSA01 Digitala Projekt (I) VT- 13. Projektarbete AC- 58008. Handledare Bertil Lindvall
ETSA01 Digitala Projekt (I) VT- 13 Projektarbete AC- 58008 Victor Bodin Albert Strömberg Alexander Söderberg Handledare Bertil Lindvall 1 Sammanfattning Rapporten behandlar processen kopplat till konstruktionen
Par m 328 feet. Lång höger sväng. Korgen står placerad i en skogsglänta OB-linje på vänster sida.
1 100 m 328 feet Lång höger sväng. Korgen står placerad i en skogsglänta -linje på vänster sida. Long right turn. Basket are placed in a forrest glade. -line on the left side. Snälla, skräpa ej ner vår
Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation
Microprocessor / Microcontroller Varför? Billiga Innehåller bara det nödvändigaste Kräver få kringkomponenter Enkla att programmera PIC16F887 PIC16F887 In- och utgångar Pinnar på PIC16F887 Exempel: pinne
Fan Controller Digital projects (EITF01) Lund University, Faculty of Engineering John Hedestig, Karl Fogelström Handledare: Bertil Lindvall
Fan Controller Digital projects (EITF01) Lund University, Faculty of Engineering John Hedestig, Karl Fogelström Handledare: Bertil Lindvall Abstract The aim of this digital project was to construct a controller
Blue Key Digitala projekt VT
Blue Key Digitala projekt VT 2 2004 Maj 2004 Martin Erikson, E00 Mikael Andersson, E00 Department of Information Technology 0 Lund Institute of Technology Sammanfattning Denna rapport behandlar vårt projekt
Digitala Projekt: Digitala Projekt, EITF11 - VT17 Oscar Ahlgren, Patrik Lorentsson och Sten Hellberg Handledare: Bertil Lindvall
Digitala Projekt: Arcade Basket Digitala Projekt, EITF11 - VT17, och Handledare: Bertil Lindvall Industriell Ekonomi, Lunds Tekniska Högskola 2017-05-22 Abstract This project is a part of the course Digital
Digitala projekt Linjeföljande bil
Digitala projekt Linjeföljande bil EITA15 Elektro- och informationsteknik Handledare: Bertil Lindvall Grupp 17 Hannes Adolfsson Milad Amini Albin Svärd Almir Šaran Emir Zukic EITA 15 - Digitala projekt
ATtiny 85. Krympa projekt från Arduino Uno
ATtiny 85 Krympa projekt från Arduino Uno Material: Arduino Uno Attiny 85 Breadboard Jumper wire Kondensator 10µF Börja med att öppna Arduino-programmet. I Arduino väljer du exempel och laddar ner ArduinoISP
Projektrapport - RoboWalter
Projektrapport - RoboWalter Projektarbete i kursen Digitala System (EITA15) vid Lunds Tekniska Högskola (LTH) Grupp 1: Angelika Larsson, Oscar Persson, Albin Andersson och Fanny Zolotarevskaia Handledare:
Lunds Tekniska Högskola. I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall
2013 Lunds Tekniska Högskola I-10 Grupp 11: David Sundström Max Schulz Albert Lundberg Handledare: Bertil Lindvall DIGITALA PROJEKT The objective of the course Digital Project is letting a group of students
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
F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot
TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION
TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION Digitala Projekt EITF 11, 18 maj 2015 Grupp 13; Morten Rosén, Henrik Boris-Möller, Christoffer Nordberg Projekthandledare: Bertil Lindvall Innehållsförteckning
DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14
DEPARTMENT OF INFORMATION TECHNOLOGY Digitala Projekt Redovisning av Projekt - Grupp 14 Carl Hoffstedt (c03cho@student.lth.se) & Gustaf Lund (d02gl@student.lth.se) 5/19/2007 How can you construct an embedded
Rapport i Digitala Projekt (EDI021)
Rapport i Digitala Projekt (EDI021) Grupp 6 Daniel Raneland, dt05dr1 2009-03-01 1 Sammanfattning Idag är det väldigt vanligt att man har en termometer hemma som mäter temperaturen både inomhus och utomhus.
THE VISUAL EGGTIMER. Skola: Lunds Tekniska Högskola Institution: Elektro- och informationsteknik Kurs: Digitala projekt (EITF11)
THE VISUAL ABSTRACT The following report compiles the process of constructing a prototype called The Visual Eggtimer. The Visual Eggtimer is an eggtimer which is supposed to facilitate the boiling of a
Programmeringsuppgift Game of Life
CTH/GU STUDIO TMV06a - 0/0 Matematiska vetenskaper Programmeringsuppgift Game of Life Analys och Linär Algebra, del A, K/Kf/Bt Inledning En cellulär automat är en dynamisk metod som beskriver hur komplicerade
Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.
CT3760 Mikrodatorteknik Föreläsning 12 Torsdag 2006-10-05 Naxos Pollning Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå. En
Modbus Seriell Kommunikation
Översikt Modbus protokollet är en allmänt använd och väldokumenterad kommunikationsmetod. Det är ett enkelt och effektivt sätt att programmera våra olika produkter A typiskt Modbus-paket ser ut så här: