22.05.2013
Mikronapędy w systemach komputerowych
Laboratorium 4:
Krzysztof Wroński
Marcin Zalepa
L16
1. Wstęp
Celem ćwiczenia było stworzyć program sterujący pracą silnika z komutacją elektroniczną. Dodatkowo mieliśmy wykorzystać kod z 2 laboratorium, który obsługiwał klawiaturę oraz wyświetlacz LCD.
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 wpisywać z klawiatury częstotliwość z jaką ma się kręcic silnik
Program na laboratoriach działał poprawnie. Został w nim wykorzystany kod z laboratorium 2 odpowiedzialny za obsługę klawiatury i wyświetlacza. Z wyświetlacza można było wybrać z jaką częstotliwością ma się kręcić silnik.
#include <reg515.sfr>
#include <lcd.h>
unsigned char tablica1[6] = {0xDE, 0xDB, 0xF9, 0xED, 0xE7, 0xF6};
unsigned char tablica2[6] = {3, 1, 5, 4, 6, 2};
unsigned char znak, znak_poprzedni;
unsigned int liczba = 100;
unsigned int czest;
int j = 0;
int flag_enter = 0;
int ent_aktywny = 0;
int i;
_interrupt 5 void nowe(void)
{
while((P4 & 0x07) != tablica2[j]);
P1 = skok[j];
k++;
if (j > 5)
j = 0;
TF2 = 0;
}
void main ()
{
IEN0 = 0x20;
T2CON = 1;
EAL = 1;
T2R1 = 1;
lcd_init();
out_char(48);
czest = 1000000/liczba;
czestotliwosc = 65535 - czestotliwosc;
CRCH = (czestotliwosc>>8);
CRCL = czestotliwosc;
flag_enter = 1;
while (1)
{
znak = get_kb();
if (znak != '\0' && znak_pop == '\0')
{
if (znak >= '0' && znak <= '9')
{
if (flag_enter == 1)
{
out_instr(0x1);
flag_enter = 0;
liczba = 0;
ent_aktywny = 0;
}
out_char(znak);
liczba = liczba*10 + (unsigned int)(znak-48);
for (i=0; i<25000; i++);
}
if (znak == 'e' && ent_aktywny == 0)
{
flag_enter = 1;
ent_aktywny = 1;
if (liczba < 100)
{
liczba = 100;
out_instr(0x1);
out_char(1+48);
out_char(48);
out_char(48);
}
if (liczba > 800)
{
liczba = 800;
out_instr(0x1);
out_char(8+48);
out_char(48);
out_char(48);
}
czestotliwosc = 1000000/liczba;
czestotliwosc = 65535 - czestotliwosc;
CRCH = (czestotliwosc >>8);
CRCL = czestotliwosc;
}
}
znak_pop = znak;
}
}