3.Практическая реализация программы на микроконтроллере
Покажем пример программного кода в Arduino «секундомер с кнопкой»
#define SEG_A 0
#define SEG_B 1
#define SEG_C 2
#define SEG_D 3
#define SEG_E 4
#define SEG_F 5
#define SEG_G 6
void setup()
{
DDRB = 0xFF;
DDRC = 0xFF;
PORTD = (1<<PD2)|(1<<PD3);
EICRA = (1<<ISC01)|(1<<ISC11);
EIFR = (1<<INTF0)|(1<<INTF1);
EIMSK = (1<<INT0)|(1<<INT1);
sei();
}
void digit_output (char a, char b)
{
PORTB = (1<<a); //PORTB = PORTB | (1<<a);
switch (b)
{
case 0:
PORTC = ~((1 << SEG_A) | (1 << SEG_B) | (1 << SEG_C) | (1 << SEG_D) | (1 << SEG_E) | (1 << SEG_F));
break;
case 1:
PORTC = ~((1 << SEG_B) | (1 << SEG_C));
break;
case 2:
PORTC = ~((1 << SEG_A) | (1 << SEG_B) | (1 << SEG_G) | (1 << SEG_E) | (1 << SEG_D));
break;
case 3:
PORTC = ~((1 << SEG_A) | (1 << SEG_B) | (1 << SEG_C) | (1 << SEG_D) | (1 << SEG_G));
break;
case 4:
PORTC = ~((1 << SEG_F) | (1 << SEG_G) | (1 << SEG_B) | (1 << SEG_C));
break;
case 5:
PORTC = ~((1 << SEG_A) | (1 << SEG_F) | (1 << SEG_G) | (1 << SEG_C) | (1 << SEG_D));
break;
case 6:
PORTC = ~((1 << SEG_A) | (1 << SEG_F) | (1 << SEG_E) | (1 << SEG_D) | (1 << SEG_C) | (1 << SEG_G));
break;
case 7:
PORTC = ~((1 << SEG_A) | (1 << SEG_B) | (1 << SEG_C));
break;
case 8:
PORTC = ~((1 << SEG_A) | (1 << SEG_B) | (1 << SEG_C) | (1 << SEG_D) | (1 << SEG_E) | (1 << SEG_F) | (1 << SEG_G));
break;
case 9:
PORTC = ~((1 << SEG_G) | (1 << SEG_F) | (1 << SEG_A) | (1 << SEG_B) | (1 << SEG_C) | (1 << SEG_D));
break;
}
delay(1);
PORTB &=~(1<<a);
}
int i;
ISR(INT0_vect)
{
i++;
}
ISR(INT1_vect)
{
i=0;
}
void loop()
{
while (i>=1)
{
for (i=0; i<1000; i++)
{
for (int j=0; j<25; j++)
{
digit_output (0, i/1000); //2354 > 2
digit_output (1, i/100%10); //2354 > 3
digit_output (2, i/10%10); //2354 > 5
digit_output (3, i%10); //2354 > 4
}
}
}
После написания кода достаточно скомпелировать и отправить программу на устройство. Перед этим желательно проверить работу программы в системе автоматического проектирования электронных схем Proteus или его аналогах, чтобы избежать ошибок в коде на начальном этапе.
Заключение
В процессе работы были рассмотрены практические примеры подключения микроконтроллеров и их программирование.
Применение микроконтроллеров в технике очень актуально. Так как они существенно ускоряют работу поставленной им задачи. Отсюда и важность их изучения и применения в устройствах.
Библиографический список
Белов А.Б. Конструирование устройств на микроконтроллерах / Наука и Техника, 2005. - 255 с.
Предко М. Руководство по микроконтроллерам. Том 1. / Пер. с англ. под ред.И. И. Шагурина и С.Б. Лужанского - М.: Постмаркет, 2001. - 416 с.
Угрюмов Е.П. Цифровая схемотехника. - Спб.: БВХ - Санкт-Петербург, 2000. - 528 с.
http://arduino-kit.ru
http://arduino.ru/
Челябинск
