Рис.6.1 - Устройство инициализировано, готово к работе
Рис. 6.2 - Обработка прерывания при нажатии кнопки «MENU», установка в ноль текущего угла поворота антенны
Рис. 6.3 - Поворот антенны на право на 1 градус
Рис. 6.4 - Поворот антенны на лево в случае, когда кнопка «LEFT» нажата более 0,3 с
ЗАКЛЮЧЕНИЕ
Разработан контроллер опорно-поворотного устройства антенны. Написана программа для микроконтроллера ATmega8535 на языке Assembler AVR и СИ. Произведено моделирование синтезированного устройства в среде Proteus.
ПРИЛОЖЕНИЕ
Листинг
программы
инициализации
устройства
// прерывания кнопок
// меню
#define MENUPORT PORTB
#define MENUDDR DDRB
#define MENUBIT 2
#define INT_MENU EXT_INT2
// лево
#define LEFTPORT PORTD
#define LEFTDDR DDRD
#define LEFTPIN PIND
#define LEFTBIT 2
#define INT_LEFT EXT_INT0
// право
#define RIGHTPORT PORTD
#define RIGHTDDR DDRD
#define RIGHTPIN PIND
#define RIGHTBIT 3
#define INT_RIGHT EXT_INT1
// двигатель
#define MOTORPORT PORTC
#define MOTORDDR DDRC
char nSteps[4], nCurrentStep;
/*****************************************************
*** Функция InitButtons ***
*** Инициализация прерывания кнопок ***
*****************************************************/InitButtons(void)
{
// настройка портов.MENUBIT = 1;
MENUDDR.MENUBIT = 1;
LEFTPORT.LEFTBIT = 1;.LEFTBIT = 1;.RIGHTBIT = 1;.RIGHTBIT = 1;
// Настройка прерываний
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
// INT2: On
// INT2 Mode: Falling Edge|=0xE0;=0x0A;=0x00;=0xE0;
}
/*****************************************************
*** Функция InitMotor ***
*** Инициализация двигателя ***
*****************************************************/InitMotor(void)
{= 0x00;= 0xFF;
[0] = 0x09;[1] = 0x03;[2] = 0x06;[3] = 0x0C;
= 0;
}
Листинг программы контроллера опорно-поворотного устройства антенны
/*****************************************************: Контроллер опорно-поворотного устройства антенны
Chip type : ATmega8535
*****************************************************/
#include <mega8535.h>
// Alphanumeric LCD Module functions
#asm
.equ lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
// настройки платы
#include <BoardConfig.h>
// прототипы фунцийRotateLeft(unsigned short nCount);RotateLeftStep(unsigned short nCount);RotateRight(unsigned short nCount);RotateRightStep(unsigned short nCount);ShowCurrentAngle(void);Initialization(void);
Самое читаемое:
Динамическое торможение электропривода
Динамическое
торможение электропривода, режим работы электропривода, при котором в
результате взаимодействия постоянного магнитного потока в электродвигателе с
током замкнутого электропроводящего контура создаётся тормозное усилие. В
электроприводе с электродвигателем постоянного тока Д. т. осуществляется замыканием
обмотки якоря н ...