Рефераты. Разработка автомобильного стробоскопа







 мм(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 ();

PORTA &=~_BV(A0);//A0=0 (команда)

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(0x33);//установка разрядности интерфейса

_delay_ms(40);

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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.