рефераты рефераты
Главная страница > Дипломная работа: Система управления механизмом зажигания  
Дипломная работа: Система управления механизмом зажигания
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Дипломная работа: Система управления механизмом зажигания

Кроме того, текст программы, написанный для устройства, отличается от аналогов бесступенчатым изменением момента искрообразования и возможностью регулировки устройства в широких пределах. Так же существенным отличием данного программного обеспечения является возможность работы с любой моделью двигателя.

Несомненным плюсом разработанного устройства, кроме вышеперечисленных, является невысокая стоимость, а следовательно, значительная конкурентоспособность.


Список литературы

1. Быков К.П., Грищенко П.В. «Мотоциклы «Урал», «Днепр». Эксплуатация и ремонт». Чернигов 2004 208с.

2. Вярочкина Г.О. «Радиоэлектронная аппаратура и приборы. Монтаж и регулировка» М. 2004 352с.

3. Гаряев Л. «Нюансы настройки систем зажигания с датчиком Холла.»  МОТО. 2004. №6. с100.

4. Каталог «Промэлектроника. Активные элементы» 2003 108с.

5. Каталог «Промэлектроника. Пассивные элементы» 2003 114с.

6. Косарев С.Н. «Руководство по ремонту автомобилей ВАЗ – 2121 и ВАЗ  21219» М. 1998 184с.

7. Самсонов В.С., Вяткин М.А. «Экономика предприятий энергетического комплекса». М. 2001 315с.

8. Яценков В.С. «Микроконтроллеры MicroCHIP практическое руководство» М. 2005 280с.


ПриложениеА

Программа микроконтроллера системы управления механизмом зажигания.

; Контроллер: PIC16F84, 4MHz

; Контроллер listp=16f84

; Конфигурация

__CONFIG3ff9h

; Параметры

#define TMR_VALUE.182; Квантование таймера 100 мкс

; Назначение портов ввода/вывода

#define pCOILPortB,2; Выход управления коммутатором (RB2)

; Направление работы портов ввода/вывода (0  вывод, 1  ввод)

#define PORTB_IO0xF2; Порт B (11110010) RB1 и RB4RB7 работают на вход, остальные на выход.

; Сбросовые состояния портов

#define PORTB_RESET0x00; Предустановка портов B (Обнуление)

; Системные константы

Fsrequ 0x04

Indf equ 0x00

Tmr0 equ 0x01 ; Регистр TMR0.

OptionR equ 0x01 ; Option  банк1

Status equ 0x03 ; Регистр Status

PortB equ 0x06 ; Порт B

TrisB equ 0x06 ; Tris B  Банк1

IntCon equ 0x0B ; Регистр IntCon

EEData equ 0x08 ; EEPROM  данные

EECon1 equ 0x08 ; EECON1  банк1.

EEAdr equ 0x09 ; EEPROM  адрес

EECon2 equ 0x09 ; EECON2  банк1.

; Память данных

Flags equ 0x10; Флаги состояния

MXHequ 0x0C; Старший байт целой части переменной Х

MXLequ 0x0D; Младший байт целой части переменной Х

EXequ 0x0E; Дробная часть Х, 09;

BHequ 0x1D; Старший байт переменной В

BLequ0x1E; Младший байт переменной В

TimerH equ 0x1A; Счетчик продолжительности сигнала от датчика Холла, старший байт

TimerM equ 0x1B; Средний байт

TimerL equ 0x1C; Младший байт

Secequ 0x11; Счётчик арифметических операций

WrtH equ 0x12; Счётчик времени записи в EEPROM, старший байт

WrtL equ 0x13; Младший байт

MulH equ0x14;Переменные арифметических операций

MulL equ0x15

MulM equ0x16

TmpH equ0x17

TmpM equ0x18

TmpL equ 0x19

Mul1Lo equ0x20

Mul1Hi equ0x21

ResHi equ0x22

DivLo equ0x0F

DivHi equ0x1F

Res1 equ0x23

Res2 equ0x24

Res3 equ0x25

Temp equ0x26

Temp1 equ0x27

Temp2 equ0x28

Temp3 equ0x29

Cntequ0x2A; Счётчик арифметических операций

Res11 equ0x2B

Res22 equ0x2C

Res33 equ0x2D

TmpW equ 0x2E ; Регистр для сохранения состояния W (Аккумулятора)

TmpStatus equ 0x2F ; Регистр для сохранения состояния Status

Системные флаги W equ 0 ; Результат направить в аккумулятор.

F equ 1 ; Результат направить в регистр.

C equ 0 ; Бит флага переносазаема.

Z equ 2 ; Бит флага нулевого результата.

RP0 equ 5 ; Бит выбора банка.

GIE equ 7 ; Бит глобального разрешения прерываний.

T0IE equ 5

T0IF equ 2

; Битовые переменные

#define bLastStateFlags,0; Последнее состояние датчика Холла

#define bSensFlags,1; Флаг состояния датчика Холла после программного фильтра

#define bINCBPortB,7; Флаг нажатия кнопки "Увеличить В"

#define bDECBPortB,6; Флаг нажатия кнопки "Уменьшить В"

#define bINCXPortB,5; Флаг нажатия кнопки "Увеличить Х"

#define bDECXPortB,4; Флаг нажатия кнопки "Уменьшить Х"

#defineTmpFlags,2; Флаг арифметических операций

; Вектор сброса

ORG0x0000

goto Start; Переходим к началу программы

; Вектор прерываний

ORG0x0004

; Interrupt

; Описание: Прерывание от TMR0. Измерение времени прохода шторки по сигналу с датчика Холла.

Interrupt;

movwfTmpW; Сохраняем состояние W и Status в регистры TmpW и TmpStatus

swapfStatus,W

movwfTmpStatus

movlwTMR_VALUE; Квантование таймера

movwfTmr0

bcfIntCon,T0IF; Сбрасываем флаг прерывания от таймера

movfPortB,W; Программный фильтр по входу датчика Холла

xorwfFlags,W

btfssbSens; Проверяем флаг датчика (1  шторка в датчике, 0  вне датчика)

goto _Low; Если 0 преходим

btfscbLastState; Проверяем предидущее состояние датчика

goto _HighToHigh; Если 1 преходим

_LowToHigh; Шторка вошла в датчик bSens=1 bLastState=0

bsfbLastState; Обновляем данные о состоянии датчика bLastState=1

bsfpCOIL; Включаем комутатор (Выставляем бит в RB2)

PLUS00 incf TimerL,F ; Начинаем отсчёт времени (TimerL(H,M) + 1)

btfss Status,Z

goto YES00

incf TimerM,F

btfss Status,Z

goto YES00

incf TimerH,F

YES00

goto _ExitInterrupt; Завершаем прерывание

_HighToHigh; Шторка уже в датчике bSens=1 bLastState=1

PLUS01 incf TimerL,F ; Продолжаем отсчёт времени (TimerL(H,M) + 1)

btfss Status,Z

goto YES01

incf TimerM,F

btfss Status,Z

goto YES01

incf TimerH,F

YES01

goto _ExitInterrupt

_Low; Шторка вне датчика bSens=0

btfssbLastState; Проверяем предидущее состояние датчика

goto _LowToLow

_HighToLow; Шторка вышла из датчика

bSens=0 bLastState=1

bcfbLastState; Обновляем данные о состоянии датчика bLastState=0

call CalculateSparkTime; Переходим к вычислению функции Y=f(T)

goto _ExitInterrupt

_LowToLow; Шторка уже вне датчика

_ExitInterrupt

DecWrt

DEC002

incf WrtH,W  ; Проверяем было ли изменение констант, если было (WrtH<>0xFF), то осчитываем время до записи в память (2 сек)

btfss Status,Z

goto DEC003

goto OK00

DEC003

decf WrtL,F

movlw0xFF

subwfWrtL,W

btfss Status,Z

goto OK00

decf WrtH,F

movlw0xFF

subwfWrtH,W

btfss Status,Z

goto OK00

movlw0xFF; Выставляем 0хFF в WrtH (признак изменения констант)

movwfWrtH

clrfWrtL

call WriteC; Истекло время до записи изменённых переменных в память, переход на подпрограмму записи

OK00

swapfTmpStatus,W; Восстанавливаем соотояние W и Status и выходим из прерывания

movwfStatus

swapfTmpW,F

swapfTmpW,W

retfie

; Start

; Описание: Начало программы, инициализация контроллера и установка в начальное состояние

Start;

clrwdt

clrfIntCon; Обнуляем регистр прерываний

bsfStatus,RP0; Выбор банка памяти 1

movlwPORTB_IO

movwfTrisB

movlw0x88

movwfOptionR

bcfStatus,RP0; Выбор банка памяти 0

movlwPORTB_RESET

movwfPortB

clrf TimerH

clrf TimerM

clrf TimerL

movlw0xFF

movwfWrtH

clrfWrtL

movfPortB,W; Выставляем флаги в начальное состояние

andlw0xF2

movwfFlags

movlwTMR_VALUE; Квантование таймера

movwfTmr0

; Чтение констант из памяти

; movlw 0  ; Записать в регистр W константу 0 (адрес ячейки в памяти).

movwf EEAdr ; Скопировать 0h из регистра W в регистр EEAdr.

bsf Status,RP0 ; Переход в первый банк.

bsf EECon1,0 ; Инициализировать чтение.

bcf Status,RP0 ; Переход в нулевой банк.

movf EEData,W ; Скопировать число из ячейки EEPROM с адресом 0h в регистр W.

movwf MXH  ; Скопировать число из регистра W в регистр MXH.

nop; Пустой оператор (ожидание)

movlw 1

movwf EEAdr

bsf Status,RP0

bsf EECon1,0

bcf Status,RP0

movf EEData,W

movwf MXL

nop

movlw 2

movwf EEAdr

bsf Status,RP0

bsf EECon1,0

bcf Status,RP0

movf EEData,W

movwf EX

nop

movlw 3

movwf EEAdr

bsf Status,RP0

bsf EECon1,0

bcf Status,RP0

movf EEData,W

movwf BH

nop

movlw 4

movwf EEAdr

bsf Status,RP0

bsf EECon1,0

bcf Status,RP0

movf EEData,W

movwf BL

movlw0xA0; Разрешаем прерывания от TMR0, и прерывания глобально, сбрасываем флаги прерываний

movwfIntCon

Cycle; Главный цикл программы

bsfIntCon,T0IE; Разрешаем прерывания от TMR0

bsfIntCon,GIE; Разрешаем прерывания глобально

movfPortB,W

xorwfFlags,W

btfsc bINCB;Если RB7 = 1, то переходим к увеличению переменной В

goto IncB

btfsc bDECB;Если RB6 = 1, то переходим к уменьшению переменной В

goto DecB

btfsc bINCX;Если RB5 = 1, то переходим к увеличению переменной Х

goto IncX

btfsc bDECX;Если RB4 = 1, то переходим к уменьшению переменной Х

goto DecX

gotoCycle

IncB; Подпрограмма увеличения переменной В

PLUS02

incf BL,F

 btfss Status,Z

goto YES02

incf BH,F

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

рефераты
Новости