мм(5.16)
Определим число витков во вторичной обмотке
(5.17)
Определим число витков в обмотке обратной связи
(5.18)
Рассчитаем диаметры проводов обмотки d, в мм трансформатора [3], значения токов первичной и вторичной обмоток возьмем из математической модели построенной в MATLAB.
Зададимся плотностью тока J = 2.5 А/мм2.
i1 = 0.096 A;
i2 = 0.005 A;
мм(5.19)
мм
6. БЛОК СХЕМЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СТРОБОСКОПА
Блок – схема «основной цикл»
Нет
Да
=3
=1
=2
Рисунок 6.1 – Основной цикл
Блок – схема «инициализация ЖКИ»
Рисунок 6.2 – Инициализация ЖКИ
Блок – схема «вывод информационной строки»
Рисунок 6.3 – Вывод информационной строки
Блок – схема «подпрограмма – установка курсора на начало строки»
Рисунок 6.4 – Подпрограмма – установка курсора на начало строки
Блок – схема «подпрограмма – передача данных»
Рисунок 6.5 – Подпрограмма – передача данных
Блок – схема «подпрограмма напряжение»
Рисунок 6.6 – Подпрограмма напряжение
Блок – схема «подпрограмма – импульсы на лампу»
Рисунок 6.7 – Подпрограмма – импульсы на лампу
Блок – схема «Выбор»
Обработка подпрограммы «Выбор» осуществляется по внешнему прерыванию INT0 микроконтроллера.
Рисунок 6.8 – Подпрограмма – выбор
7. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СТРОБОСКОПА
#include <avr/io.h>
#include <avr/interrupt.h> //для доступа к sei
#include <avr/signal.h>//для доступа к макросу SIGNAL
#include <avr/delay.h>
#include <util/delay.h>
#include <math.h>
#define Freq 8000000//частота системной синхронизации в Гц
int ZhachPreob,Napr,n,R,Pezim,c,U,Z,Z1,I,N;
unsigned int CurrentTime,PreviousTime,T,UGL;// временные переменнные
unsigned char addr;
//---------Интерфейс ЖКИ-----------//
// A0 R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7//
// PA5 PA6 PA7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7//
//---------------------------------//
#define A0 PA5//линия выбора регистра
#define RW PA6//линия выбора операции
#define E PA7//линия стробирования / синхронизации
#define BS PC7//флаг занятости
unsigned char str1[] = "Работа";
unsigned char str2[] = "Стробоскоп";
unsigned char str3[] = "Тахометр";
unsigned char str4[] = "Вольтметр";
char buffer[15];
//--------------------------Ожидание готовности------------------------------------
void LCD_wait (void)
{
do
while (bit_is_set(PINC,BS)); //ожидать сброса флага занятости
PORTA &=~_BV(RW);//RW=0
PORTA &=~_BV(E);//E=0
}
//-------------------------Запись в LCD------------------------------------------------
void LCD_write (unsigned char p)
= 0b00000000;//подтяжка порта C
//------------------------Чтение из LCD----------------------------------------------
unsigned char LCD_read(void)
//-----------Функция ЗАПИСИ КОМАНДЫ (IR) в ЖКИ-----------------------
void LCD_com_write (unsigned char p)//p-байт команды
LCD_wait ();//ожидание готовности
PORTA &=~_BV(A0);//A0=0 (команда)
LCD_write (p);//запись команды в ЖКИ
//---------Функция ЗАПИСИ ДАННЫХ (DR) в ЖКИ--------------------------
void LCD_data_write (unsigned char p)//p-байт данных
=_BV(A0);//A0=1
//----------Функция ЧТЕНИЯ СЧЕТЧИКА АДРЕСА ЖКИ-------------------
unsigned char LCD_addr_read(void)
unsigned char p;//содержимое счетчика адреса
LCD_wait ();
p = LCD_read();//чтение команды из ЖКИ
p = (p & 0b01111111);//отбрасывание бита занятости
return (p);//функция возвращает прочитанное
// содержание адреса счетчика
//--------Функция ЗАПИСИ команды в ЖКИ (при инициализации)--------
void LCD_com_init (unsigned char p)
PORTC
//---------------Функция иницилизации ЖКИ-------------------------------------
void LCD_init ()
_delay_ms(20);//ожидание 20 мс
LCD_com_init(0x33);//установка разрядности интерфейса
_delay_ms(40);
LCD_com_init(0x3A);//8 битный интерфейс, 1 страница знакогенератора
LCD_com_init(0x08);//включение дисплея
LCD_com_init(0x01);//очистка дисплея
LCD_com_init(0x06);//сдвиг курсора вправо
LCD_com_init(0x0F);//включение дисплея, мигающий курсор
//--------Функция вывода строки в ЖКИ по адресу "addr"-------------------
void LCD_out_str(unsigned char str[],unsigned char addr)
unsigned char a;//номер символа в стоке
unsigned char addr_t;//текущее содержание счетчика адреса ЖКИ
a = 0;
LCD_com_write ((addr + 0x80));//установка курсора на начало строки
while (str[a] !='\0')//ждать окончания строки
addr_t = LCD_addr_read();//стение текущего адреса вЖКИ
if (addr_t > 0x10)//если курсор уходит из видимой
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10