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

Relevanta dokument
Rörelse- och temperaturkänsligt larmsystem

The Phenomenal Doorbell Bilaga 2. Källkod

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

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

Digitala Projekt (EITF11) Larmanläggning

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

Digitala Projekt(EITF40) - Larm

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

Växtviskaren EITF11 Digitala projekt VT15, I12

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

SIMON SAYS Projekt i EITF11 Digitala Projekt

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

Projektrapport Målgång

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

Thunder s Truck projektrapport

Digitala Projekt (EITF11) Hemlarm

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

TEMPERATURMÄTARE MED GRAFRITARE

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

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

DIGITALA PROJEKT (EITF40) Fartmätare

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

Tidsstyrd persiennöppnare

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

DIGITALA PROJEKT - EITF11

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

Department of Information Technology Digitala Projekt Frysboxregulator. 10 december 2007

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

Digitala Projekt(EITF40) - Larm

Rapportsammanfattning. Optima Sous Vide

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

Projektrapport - Roterande digital LED-klocka

High Core Remote Car X8000 Cool

Digitala System Projekt - EITA15 VT *SUPER DUPER KLOCKAN*

EITF11 - Digitala Projekt

Digitala projekt VT Väderstationen. Av: Andreas Cremon E04 grupp 15 26/2-2007

EITF11: Bandkanon Grp 05

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

Rapport i Digitala Projekt (EDI021)

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

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

LTH. EITF11- Digitalaprojekt. Projektrapport WEB

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

Bilen som inte kan krocka

Aml Abbas, Ali Darwish, Ehsanolah Hafezi, Fatima Zahra Doussi Grupp 15

SNOOZE SNOOZE REVOLUTION

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

Digitala Projekt, EITF40

Projektrapport - Feststation

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

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

Väderstation. EITF11, Digitala projekt RAPPORT. Isabella Bergvik, Emma Sandén & Hanna Åberg

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

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

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

HockeyMate Projektarbete i EITF40 - Digitala Projekt Institutionen för elektro- och informationsteknik

Pulsmätare Digitala Projekt EITF11

RAPPORT: DIGITALA PROJEKT

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

Väderstation. Datum: Projektarbete vid elektro och informationstekniks institution

Projektrapport Digitala System

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

Source code. #undef F_CPU. #define F_CPU UL. #include <avr/io.h> #include <avr/delay.h> #include <string.h> #include <avr/eeprom.

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

Digitala projekt VT Myran

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

Rapport: Väderstation

Effektpedal för elgitarr

Kontrollskrivning Mikrodatorteknik CDT S2-704

Digitala Projekt. Chip Quiz. Projektmedlemmar: Olov Nordenstam och Linus Hägerbrand. Grupp 9

Projektrapport - RoboWalter

KRYPTERING. 23 maj. Vilken jävla duart?

Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Självgående fordon Rapport i kursen digitala projekt, EDI021

Musen. Författare: Joel Guedj e02jg Erik Dahlbäck e02ed. Handledare: Bertil Lindvall. Digitala Projekt SK 2005

LTH Ingenjörhögskolan vid Campus Helsingborg. Mastermindspel

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

Microprocessor / Microcontroller

Fan Controller Digital projects (EITF01) Lund University, Faculty of Engineering John Hedestig, Karl Fogelström Handledare: Bertil Lindvall

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

WALL E. WALL EVADER EDI021 DIGITALA PROJEKT

Digitala projekt HT 2007 PONG

Guitar tuner Digitala Projekt (EITF40)

Digitala Projekt. Ljuskänslig riktningsautomatik. Rasmus Persson dt08rp9@student.lth.se Max Åkesson dt07ma4@student.lth.

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

Demonstration och konsultation Arbetsbokens avsnitt 7 Händelsestyrt processbyte Förberedande inför laboration 4

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Institutionen för informationsteknologi

Linjeföljare. Digitala projekt

Från idé till skapelse av en äkta RoomBot

Digitala projekt Linjeföljande bil

Och!efter!ca!20!omgångar!hamnade!den!på!en!stabil!konfiguration!enligt!nedan! där!den!stannar!kvar.!

Datorteknik 2 (AVR 2)

Voltmeter EITF11 LUNDS TEKNISKA HÖGSKOLA Grupp 3 Timmy Andersson Jesper Tempel Christoffer Lundgren

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Datorprojekt, del 1. Digitala system 15 p

Övning 6. Parallellport, timer

AVR 5. Styrning av trafikljus. Digitala system 15 p

Transkript:

Källkod #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define red_diode PD6 #define green_diode PD5 #define E PD0 #define RW PD1 #define RS PD4 unsigned int password = 1; unsigned int count = 0; unsigned int larm_status = 0; unsigned int alarmactive = 0; unsigned int data_available; unsigned int pincounter = 0; unsigned char pincode[4] = {'1', '2', '3', '4'; unsigned char pincodetry[4]; unsigned char val; unsigned int charnbr = 0; unsigned int unsigned int sec = 0; unsigned int min = 15; unsigned int hour = 10; unsigned int clock = 49911; int timevect[8]; char read_keypad(char code){ if(code == 0b00000000){ return '0'; else if(code==0b00000100){ return '1'; else if(code==0b00001000){ return '2'; else if(code==0b00001100){ return '3'; else if(code==0b00010000){ return '4'; else if(code==0b00010100){ return '5'; else if(code==0b00011000){ return'6'; else if(code==0b00011100){ return '7'; else if(code==0b00100000){

return '8'; else if(code==0b00100100){ return '9'; else if(code==0b00101000){ return 'A'; else if(code==0b00101100){ return 'B'; else if(code==0b00110000){ return 'C'; else if(code==0b00110100){ return 'D'; else if(code==0b00111000){ return 'E'; else if(code==0b00111100){ return 'F'; int main(void) { INIT(); val=0xff; start_display(); set_display(); write_welcome(); while (1) { if(larm_status == 2){ alarmtriggered(); while(new_input == 1){ char input = read_keypad(val); if(input == 'A' ){

int pincount = 0; while(pincount < 3){ write_activatelarm(); for(int k =0; k<4; k++){ while(new_input == 0){ char pin = read_keypad(val); pincodetry[k] = pin; write_char('*'); int wrong = 0; for(int i=0; i<4;i++){ if(pincodetry[i]!=pincode[i]){ wrong = 1; if(wrong == 0){ alarm_on(); pincount = 3; else { pincount++; write_wrongcode(); if(pincount == 3){ larm_status = 2; new_input =0; if(input == 'D'){ int pincount = 0; while(pincount < 3){ write_deactivatelarm(); for(int k =0; k<4; k++){ while(new_input == 0){

char pin = read_keypad(val); pincodetry[k] = pin; write_char('*'); int wrong = 0; for(int i=0; i<4;i++){ if(pincodetry[i]!=pincode[i]){ wrong = 1; if(wrong == 0){ alarm_off(); pincount = 3; else { pincount++; write_wrongcode(); _delay_ms(5000); if(pincount == 3){ larm_status = 2; new_input =0; if(input == 'C'){ int pincount = 0; while(pincount < 3){ write_oldcode(); for(int k =0; k<4; k++){ while(new_input == 0){ char pin = read_keypad(val); pincodetry[k] = pin; write_char('*');

int wrong = 0; for(int i=0; i<4;i++){ if(pincodetry[i]!=pincode[i]){ wrong = 1; if(wrong == 0){ write_newcode(); for(int i=0;i<4;i++){ while(new_input == 0){ else { char newpin = read_keypad(val); pincode[i] = newpin; write_char(newpin); pincount = 3; pincount++; write_wrongcode(); _delay_ms(5000); if(pincount == 3){ larm_status = 2; new_input =0; ISR(TIMER1_OVF_vect) { sec++; if(sec == 60){ min++;

sec = 0; if(min == 60){ hour++; min = 0; if(hour == 24){ hour = 0; ISR(INT0_vect){ val = PINA & 0b00111100; new_input = 1; ISR(INT1_vect){ if(larm_status==1){ larm_status = 2; eller 1) void INIT(){ // Sätter initialtillstånden DDRB = 0b11111111; //vi sätter databussen ut DDRA = 0b00000000; //vi sätter a-porten in DDRD = 0b11110011; //vi sätter RS. RW, E ut DDRC = 0b00000000; // C-porten in PORTD = 0b00001100; //vi sätter RS till 0 och E till 0 även interupt 1 GICR = 0b11000000; MCUCR = 0b0001111; TCCR1B =0b00000101; //inställning för klockan (vet ej om bit 6 ska vara 0 TCNT1 = clock; TIMSK = 0b00000100; // Ska sätta hur ofta interuptet skjer, hur?? sei(); void display_int(int time){ int time1 = time/10; itoa(time1, timevect, 10); write_char(timevect[0]);

int time2 = time%10; time1 = itoa(time2, timevect, 10); write_char(timevect[0]); void showtime(int hour, int min, int sec){ display_int(hour); display_int(min); display_int(sec); void clear_display(){ _delay_ms(10); PORTB = 0b00000001; PORTD = _BV(E); PORTD &= ~_BV(E); _delay_ms(10); void change_curser(){ char location = 0x40; if(location < 0b01111111){ PORTB = 0b10000000 location; PORTD = _BV(E); PORTD &= ~_BV(E); void set_display(){ PORTB = 0b00111100; // Ska sista två vara nollor? - i datablad PORTD = _BV(E); PORTD &= ~_BV(E); void start_display(){ // Används även denna för off? Behövs off? PORTB = 0b00001111; PORTD = _BV(E); // Sätter E till 1 PORTD &= ~_BV(E); // Sätter E till 0 void write_char(char ch){ PORTD = _BV(RS); // Sätter RS hög

PORTB = ch; PORTD = _BV(E); // Sätter E hög PORTD &= ~_BV(E); // Sätter E låg PORTD &= ~_BV(RS); // Sätter rs låg void write_int(int i){ PORTD = _BV(RS); // Sätter RS hög PORTB = i; PORTD = _BV(E); // Sätter E hög PORTD &= ~_BV(E); // Sätter E låg PORTD &= ~_BV(RS); // Sätter rs låg void write_cmd(char cmd){ PORTB = cmd; PORTD &= ~ _BV(PD4); // Sätter RS låg PORTD &= ~ _BV(PD0); // Sätter E låg PORTD = _BV(PD4); // Sätter RS hög PORTD = _BV(PD0); // Sätter E hög void write_alarmon(){ write_char('n'); void write_alarmoff(){

write_char('f'); write_char('f'); void write_wrongcode(){ write_char('w'); write_char('n'); write_char('g'); write_char('c'); write_char('d'); void write_oldcode(){ write_char('d'); write_char('c'); write_char('d'); change_curser(); void write_newcode(){

write_char('n'); write_char('w'); write_char('c'); write_char('d'); change_curser(); void write_welcome(){ write_char('w'); write_char('c'); change_curser(); write_char('s'); void write_activatelarm(){ write_char('c'); write_char('i'); write_char('v');

change_curser(); void write_deactivatelarm(){ write_char('d'); write_char('c'); write_char('i'); write_char('v'); change_curser(); void triggered_at(){ write_char('i'); write_char('g'); write_char('g'); write_char('d');

change_curser(); // LED void greendiode_on(){ PORTD = _BV(green_diode); PORTD &= ~_BV(PD0); PORTD = _BV(PD0); void reddiode_on(){ PORTD = _BV(red_diode); PORTD &= ~_BV(PD0); PORTD = _BV(PD0); void greendiode_off(){ PORTD &= ~ _BV(green_diode); PORTD &= ~_BV(PD0); PORTD = _BV(PD0); void reddiode_off(){ PORTD &= ~ _BV(red_diode); PORTD &= ~_BV(PD0); PORTD = _BV(PD0); void summer_on(){ PORTD = _BV(PD7); PORTD &= ~_BV(E); PORTD = _BV(E); void summer_off(){ PORTD &= ~ _BV(PD7); PORTD &= ~_BV(PD0); PORTD = _BV(PD0); void alarm_on(){ larm_status = 1; greendiode_off(); reddiode_on();

write_alarmon(); void alarm_off(){ reddiode_off(); greendiode_on(); larm_status = 0; summer_off(); write_alarmoff(); void alarmtriggered(){ triggered_at(); showtime(hour, min,sec); while(read_keypad(val)!= 'D'){ summer_on(); reddiode_on(); _delay_ms(1000); summer_off(); reddiode_off(); _delay_ms(1000); if(larm_status == 2){ summer_on(); reddiode_on();