220.03.2013
Mikronapędy w systemach komputerowych
Laboratorium 2:
Krzysztof Wroński
Marcin Zalepa
L16
1. Wstęp
Celem drugiego laboratorium było napisanie programu, który ma za zadanie sterować obrotami silnika. Z ćwiczeniu należało zmienić komutacje oraz kierunek obrotu. Dodatkowo mieliśmy wykorzystać kod z poprzednich zajęć, który obsługiwał wyświetlacz LCD i połączyć te dwa programy w jedną całość.
2. Program napisany na zajęciach:
3. Wniosek:
Znaczną cześć kodu jest z poprzednich zajęć. Odpowiada za obsługę klawiatury i wyświetlanie na wyświetlaczu. Dzięki temu mogliśmy wywoływać zmiany prędkości obrotu z poziomu klawiatury. Program nie działał do końca poprawnie, udało nam się uzyskać możliwość częstotliwości obrotów silnika oraz wpisywanie i akceptowanie z poziomu klawiatury. Nie udało się zrobić komutacji silnika.
#include <reg515.sfr>
#include <lcd.h>
unsigned char tablica[4] = {1, 4, 2, 8};
int i=0, czestotliwosc=0;
_interrupt 5 void nf(void)
{
P1 = tablica[i];
i++;
if(i==4) i = 0;
TF2=0;
}
void main(void)
{
unsigned int liczba=0,i;
unsigned char znak;
unsigned int pomocnicza=0,pomocnicza1=1;
int j=0;
IEN0 = 0x20;
EAL = 1;
T2CON = 0x11;
lcd_init();
CRCL = 0;
CRCH = 0;
while(1)
{
znak = get_kb();
if(znak >= '0' && znak <= '9' && pomocnicza1 == 1)
{
if(pomocnicza == 1)
{
out_instr(0x01);
liczba = 0;
pomocnicza = 0;
}
out_char(a);
pomocnicza1 = 0;
liczba = liczba*10 + (znak -'0');
for(i=0;i<20000;i++);
}
if(znak == 'e')
{
pomocnicza = 1;
czestotliwosc = 1000000/liczba;
CRCL = -czestotliwosc;
CRCH = -czestotliwosc>>8;
}
}
if(get_kb() == '\0')
{
pomocnicza1 = 1;
}
}