Sprawozdanie mikroprocesory


LABORATORIUM UKŁADÓW MIKROPROCESOROWYCH

Temat ćwiczenia: Obsługa klawiatury i wyświetlacza LCD

Michał Adamczuk

ED 9.8

Wtorek 1715

11.12.2007

Zadanie 1

// ***********************************************************

// Project: Laboratorium mikroprocesorów

// Author: Michał Adamczuk

// Module description:

// ***********************************************************

#include <avr\io.h>

#include <util/delay.h>

#define gwiazdka 0x2A;

#define p1 0x31;

#define p2 0x32;

#define p3 0x33;

#define p4 0x34;

#define p5 0x35;

#define p6 0x36;

#define p7 0x37;

#define p8 0x38;

#define p9 0x39;

#define pA 0x41;

#define pB 0x42;

#define pC 0x43;

#define pD 0x44;

#define p0 0x30;

#define hasz 0x23;

#define nic 0x01;

#define blad 0x21;

void wyswietlacz(int kod)

{ if (kod!=0)

{

_delay_us(500);

PORTD=0b00000011+(kod & 0b11110000);//transmisja starszych bitow - E=1

_delay_us(500);

PORTD=(PORTD & 0b11111101); //transmisja starszych bitow - E=0 (zapis)

_delay_us(500);

PORTD=0b00000011+kod*16; //transmisja mlodszych bitow - E=1

_delay_us(500);

PORTD=(PORTD & 0b11111101); //transmisja mlodszych bitow - E=0 (zapis)

_delay_us(500);

}

};

int klawisz()

{

int k1,k2=0;

int od;

od=PINA;

_delay_us(500);

switch (PORTA)

{

case 0b11101111: //Wiersz pierwszy

switch (od)

{ case 0b11101111: k1=nic; break;

case 0b11100111: k1=pA; break;

case 0b11101011: k1=p3; break;

case 0b11101101: k1=p2; break;

case 0b11101110: k1=p1; break;

default: k1=blad; break;

};

if ((k2==0)&&(k1!=0))

k2=k1;

else

k2=blad;

break;

case 0b11011111: //Wiersz drugi

switch (od)

{ case 0b11011111: k1=nic; break;

case 0b11010111: k1=pB; break;

case 0b11011011: k1=p6; break;

case 0b11011101: k1=p5; break;

case 0b11011110: k1=p4; break;

default: k1=blad; break;

};

if ((k2==0)&&(k1!=0))

k2=k1;

else

k2=blad;

break;

case 0b10111111: //Wiersz trzeci

switch (od)

{ case 0b10111111: k1=nic; break;

case 0b10110111: k1=pC; break;

case 0b10111011: k1=p9; break;

case 0b10111101: k1=p8; break;

case 0b10111110: k1=p7; break;

default: k1=blad; break;

};

if ((k2==0)&&(k1!=0))

k2=k1;

else

k2=blad;

break;

case 0b01111111: //Wiersz czwarty

switch (od)

{ case 0b01111111: k1=nic; break;

case 0b01110111: k1=pD; break;

case 0b01111011: k1=hasz; break;

case 0b01111101: k1=p0; break;

case 0b01111110: k1=gwiazdka; break;

default: k1=blad; break;

};

if ((k2==0)&&(k1!=0))

k2=k1;

else

k2=blad;

break;

default: k2=blad; break;

};

return k2;

}

void diody(int key)

{ int k=0;

DDRB=0xFF;

k = key;

switch (k)

{

case (0x44) : PORTB=0b10000000; break;

case (0x31) : PORTB=0b00000001; break;

case (0x32) : PORTB=0b00000001; break;

case (0x33) : PORTB=0b00000010; break;

case (0x41) : PORTB=0b00000010; break;

case (0x34) : PORTB=0b00000100; break;

case (0x35) : PORTB=0b00000100; break;

case (0x36) : PORTB=0b00001000; break;

case (0x42) : PORTB=0b00001000; break;

case (0x37) : PORTB=0b00010000; break;

case (0x38) : PORTB=0b00010000; break;

case (0x39) : PORTB=0b00100000; break;

case (0x43) : PORTB=0b00100000; break;

case (0x2A) : PORTB=0b01000000; break;

case (0x45) : PORTB=0b01000000; break;

case (0x46) : PORTB=0b10000000; break;

case (0x21) : PORTB=0b01111110; break;

case (0x01) : PORTB=0b00000000; break;

};

}

void main()

{ int kod,kod1;

DDRB=0b11111111;

DDRD=0b11111111;

DDRA=0b11111111;

PORTA=0b11111111;

DDRA=0b11110000;

while (1)

{

PORTA = 0b11101111;

kod = klawisz();

diody(kod);

kod1=klawisz();

if (kod!=0x01)

{ wyswietlacz(kod);

while (kod1==kod)

{ _delay_us(500);

kod1=klawisz();

}

}

PORTA = 0b11011111;

kod = klawisz();

diody(kod);

kod1=klawisz();

if (kod!=0x01)

{ wyswietlacz(kod);

while (kod1==kod)

{ _delay_us(500);

kod1=klawisz();

}

}

PORTA = 0b10111111;

kod = klawisz();

diody(kod);

kod1=klawisz();

if (kod!=0x01)

{ wyswietlacz(kod);

while (kod1==kod)

{ _delay_us(500);

kod1=klawisz();

}

}

PORTA = 0b01111111;

kod = klawisz();

diody(kod);

kod1=klawisz();

if (kod!=0x01)

{ wyswietlacz(kod);

while (kod1==kod)

{ _delay_us(500);

kod1=klawisz();

}

}

}

}

1



Wyszukiwarka

Podobne podstrony:
C1 Techniki mikroprocesorowe sprawozdanie
C2 Techniki mikroprocesorowe sprawozdanie
LAB6MICR, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
MICRO7~1, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
C6 Techniki mikroprocesorowe sprawozdanie
PROCES5, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY
M7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LABOL
Mikroprocki 1kl, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPR
PROC7, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Elektryczny, MIKROPROCESORY LA
Badanie zasilacza ukł. mikroprocesor, Studia, sprawozdania, sprawozdania od cewki 2, Dok 2, Dok 2, P
Mikroprocesory, Proc-cw2', SPRAWOZDANIE Z LABORATORIUM NR 2.
C1 Techniki mikroprocesorowe sprawozdanie
2 definicje i sprawozdawczośćid 19489 ppt
PROCES PLANOWANIA BADANIA SPRAWOZDAN FINANSOWYC H
W 11 Sprawozdania
Wymogi, cechy i zadania sprawozdawczośći finansowej

więcej podobnych podstron