Разработка инфракрасного пульта и приемника дистанционного управления

Разработка микропроцессорной системы на основе микроконтроллера. Пульт дистанционного управления на инфракрасных лучах. Разработка инфракрасного пульта и приемника дистанционного управления. Технико-экономическое обоснование объекта разработки.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 14.07.2010
Размер файла 5,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

п

8

8

Расстояние между выводами

Р

0.100

2.54

Ширина нижней части вывода

В

0.014

0.018

0.022

0.36

0.46

0.56

Ширина верхней части вывода

В1

0.045

0.058

U.070

1.14

1.40

1.?а

Радиус сгиба вывода

R

0.000

0.005

0.010

0.00

0.13

0.25

Толщина вывода

с

0.008

0.012

0.015

0.20

0.29

0.38

Высота корпуса

А

0.140

0.155

0.170

3.56

3.94

4.32

Толщина корпуса

А2

0.115

0.130

0.145

2.92

3.30

3.68

Расстояние между корпусом и платой

А1

0.015

0.38

Длина нижней части вывода

L

0.125

0.130

0.135

3.18

3.30

3.43

Длина корпуса

D

0.360

0.373

0.385

9.14

9.46

9.78

Ширина корпуса

Е

0.300

0.313

0.325

7.62

7.94

8.26

Ширина корпуса без выводов

Е1

0.240

0.250

0.260

6.10

6.35

6.60

Полная ширина корпуса с выводами

еВ

0.310

0.370

0.430

7.87

9.40

10.92

Угол фаски верхней части корпуса

а

5

10

15

5

10

15

Угол фаски нижней части корпуса

в

5

10

15

5

10

15

Приложение Б

;****** СКАНИРОВАНИЕ КЛАВИАТУРЫ ************************************************

Scan btfss GPIO,5 ; если на входе GP5 низкий уровень - нажата клавиша 1

goto Tx_CMD1

btfss GPIO,2 ; если на входе GP2 низкий уровень - нажата клавиша 2

goto Tx_CMD2

btfss GPIO,4 ; если на входе GP4 низкий уровень - нажата клавиша 3

goto Tx_CMD3

btfss GPIO,1 ; если на входе GP1 низкий уровень - нажата клавиша 4

goto Tx_CMD4

bsf MBC,5 ; установить управляющий бит в 1 (первое нажатие)

goto Scan

;****** ФОРМИРОВАНИЕ МЛАДШЕГО БАЙТА ПАКЕТА ****************************

Tx_CMD1 movlw CMD_1

movwf LBC ;запись номера команды 1 в младший разряд кода

goto TxRC

;********************************************

Tx_CMD2 movlw CMD_2

movwf LBC ;запись номера команды 2 в младший разряд кода

goto TxRC

;********************************************

Tx_CMD3 movlw CMD_3

movwf LBC ;запись номера команды 3 в младший разряд кода

goto TxRC

;********************************************

Tx_CMD4 movlw CMD_4

movwf LBC ;запись номера команды 4 в младший разряд кода

goto TxRC

;******* ПЕРЕДАЧА ПАКЕТА RC-5 *********************************************************

TxRC btfsc MBC,7 ; Startbit 1. Если он равен 1, то выполняется Tx_1,

call Tx_1 ; если он равен нулю, то выполняется Tx_0

btfss MBC,7 ; аналогично остальные биты

call Tx_0

;--------------------------------

btfsc MBC,6 ; Startbit 2

call Tx_1

btfss MBC,6

call Tx_0

;--------------------------------

btfsc MBC,5 ; Toggle bit

call Tx_1

btfss MBC,5

call Tx_0

;--------------------------------

btfsc MBC,4 ; System bit 4

call Tx_1

btfss MBC,4

call Tx_0

;--------------------------------

btfsc MBC,3 ; System bit 3

call Tx_1

btfss MBC,3

call Tx_0

;--------------------------------

btfsc MBC,2 ;System bit 2

call Tx_1

btfss MBC,2

call Tx_0

;--------------------------------

btfsc MBC,1 ;System bit 1

call Tx_1

btfss MBC,1

call Tx_0

;--------------------------------

btfsc MBC,0 ;System bit 0

call Tx_1

btfss MBC,0

call Tx_0

;--------------------------------

btfsc LBC,5 ;Command bit 5

call Tx_1

btfss LBC,5

call Tx_0

;--------------------------------

btfsc LBC,4 ;Command bit 4

call Tx_1

btfss LBC,4

call Tx_0

;--------------------------------

btfsc LBC,3 ;Command bit 3

call Tx_1

btfss LBC,3

call Tx_0

;--------------------------------

btfsc LBC,2 ;Command bit 2

call Tx_1

btfss LBC,2

call Tx_0

;--------------------------------

btfsc LBC,1 ;Command bit 1

call Tx_1

btfss LBC,1

call Tx_0

;--------------------------------

btfsc LBC,0 ;Command bit 0

call Tx_1

btfss LBC,0

call Tx_0

bcf MBC,5 ; установить управляющий бит в 0 (повторное нажатие)

;****** ПАУЗА, РАВНАЯ МЕЖПАКЕТНОМУ ИНТЕРВАЛУ ****************************************

;****** Пауза между пакетами равна 50 bit, т.е. надо послать 100 нулевых полубитов (RCN) ********

movlw .99 ; здесь записано 99, а не 100, т.к. далее call стоит раньше декремента

movwf T_0

pause call RCN

decfsz T_0,F ; декремент T_0

goto pause

goto Scan

;********КОНЕЦ ОСНОВНОЙ ПРОГРАММЫ ***************************************************************

;******* ПОДПРОГРАММЫ ПЕРЕДАЧИ НУЛЯ И ЕДИНИЦЫ ***********************************************

;******* Передача нуля манчестерским кодом **********************

Tx_0 call RCY ; первые полбита единица

call RCN ; вторые полбита ноль

return

;******* Передача единицы манчестерским кодом *******************

Tx_1 call RCN ; первые полбита ноль

call RCY ; вторые полбита единица

return

;*********************************************************************************************

;***** ПОДПРОГРАММЫ ФОРМИРОВАНИЯ СОСТОЯНИЙ "ON" И "OFF" ***********************

;***** Передача единичного полубита ("ON") ******************

RCY movlw NCr ; поместить константу NCr в аккумулятор

movwf T_NC ; скопировать содержимое аккумулятора в регистр T_NC

Y_001 movlw Cr1 ; поместить константу Cr1 в аккумулятор (изменяя Cr1 и Cr0 можно грубо подстраивать частоту несущей)

movwf T_Cr ; поместить содержимое аккумулятора в регистр T_Cr (таймер несущей)

bsf GPIO,0 ; установить на выходе защелки GP0 единицу (установить 1 на выходе)

Cr1_Y decfsz T_Cr,F ; декремент содержимого регистра T_Cr с ветвлением: если f=0 - результат

; сохраняется в аккумуляторе, если f=1 - результат сохраняется в регистре T_Cr.

; Если результат не равен 0, то исполняется следующая инструкция, если равен 0,

; то вместо следующей инструкции исполняется nop, а команда исполняется за 2 м.ц.

goto Cr1_Y ; переход на метку Cr1_Y

nop ; увеличивая здесь длительность паузы (добавляя еще nop) - можно точно подстраивать чатоту несущей

bcf GPIO,0 ; Установить на выходе защелки GP0 ноль (установить 0 на выходе)

movlw Cr0 ; поместить константу Cr0 в аккумулятор (изменяя Cr1 и Cr0 можно грубо подстраивать частоту несущей)

movwf T_Cr ; скопировать содержимое аккумулятора в регистр T_Cr

local Cr0_Y

Cr0_Y decfsz T_Cr,F

goto Cr0_Y ; увеличивая здесь длительность паузы (добавляя еще nop) - можно точно подстраивать чатоту несущей

decfsz T_NC,F

goto Y_001

return

;***** Передача нулевого полубита ("OFF") *******************

RCN movlw NCr ; подпрограмма передачи нулевого полубита имеет

movwf T_NC ; ту же структуру, что и подпрограмма передачи единичного

local N_001 ; полубита только для того, чтобы было легче регулировать

N_001 movlw Cr1 ; их длительности

movwf T_Cr

nop ; вместо bsf GP0

local Cr1_N

Cr1_N decfsz T_Cr,F

goto Cr1_N

nop

nop ; вместо bсf GP0

movlw Cr0

movwf T_Cr

local Cr0_N

Cr0_N decfsz T_Cr,F

goto Cr0_N

decfsz T_NC,F

goto N_001

return

;***********************************************************************************************

end

;------------------------------------------------------------------------------------------------------------------------------

Приложение В

Программа прошивки микроконтроллера PIC12F629 для ИК приемника дистанционного управления

;------------------------------------------------------------------------------------------------------------------------------

list p = 12f629

__config 01FE4h ; 01111 11 1 1 0 0 100 - (7,8)защиты памяти нет, (6)сброс по питанию разрешен,

; (5)GP3/-MCLR работает как -MCLR, (4)PWRT включен, (3)WDT - выключен, (2-0)генератор - внутренний

;********* Переменные ************************************

CBLOCK 0x20 ; Начальный адрес

MBC ; старший байт посылки (полбита - 889uS)

LBC ; младший байт посылки

Schetchik ; счетчик принятых бит

Prov_reg ; регистр для проверки на манчестер (сюда пишем три последних принятых бита)

Adrbit ; адрес бита для записи

Counter ; счетчик для паузы

ENDC ;

;******** Константы ***************************************

T1 equ .205 ; задержка 1

T2 equ .204 ; задержка 2

TP equ .255 ; задержка между приемом посылок

TN equ .125 ; начальная задержка, чтобы попасть на середину полубита

Sys equ .29 ; номер системы

CMD_1 equ .8 ; код команды 000010 00 последние 2 бита не используются, т.е. команда = 2

INDF equ 0h ; регистр косвенной адресации

Status equ 03h ; Регистр выбора банка.

FSR equ 04h ; регистр адреса при косвенной адресации

GPIO equ 05h ; Регистр управления защелками порта.

Cmcon equ 19h ; Регистр Cmcon - компаратора

TrisIO equ 05h ; Регистр выбора направления работы выводов порта.

INTCON equ 0Bh ; Регистр разрешения(1)/запрета(0) прерываний

IOCB equ 16h ; регистр разрешения прерываний по GP0...GP5

OSCCAL equ 10h ; Регистр хранения калибровочной константы

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

;********************************************************

; Пусть у нас GP0 (1-й кр), GP1(2-й кр), GP2(жел), GP4(зел) - выходы на транзисторы управления светодиодов, GP5 - вход ИК-приемника

;********************************************************

org 0

goto start

org 4

;********* ПРЕРЫВАНИЕ *************************************************************

btfsc GPIO,5 ; если вход не = 0, то это не начало приема

goto exit

;********* Установить счетчик принятых бит **********************************************

movlw .1 ;

movwf Schetchik ; 3-й бит определяет - куда пишем, если 1, то в MBC, если 0, то в LBC

;********* Установить адрес бита для записи = 7 (поднять 7-й бит) ***********************

movlw .128

movwf Adrbit

;********* Заполняем три младших бита проверочного регистра нулями *****************

clrf Prov_reg

;********* Установить адрес регистра для записи в регистр косвенной адресации (сначала пишем в MBC) ***

movlw MBC ; записываем адрес MBC в регистр косвенной адресации

movwf FSR ;

;********* Начальная задержка ****************************************

movlw TN

movwf Counter

nach_zad nop

decfsz Counter,1

goto nach_zad

;********* ЗАПИСЬ БАЙТА *****************************************************************

;*********Второй полубит n-го бита **********************************************************

;********* Проверить вход и записать принятый полубит (один полубит пишем, другой - пропускаем) **

zapis btfss GPIO,5 ; если на входе GP5 низкий уровень - пишем единицу (выполняем следующую команду)

goto zapis1

zapis0 comf Adrbit,0 ; записываем позицию бита, которую будем менять

andwf INDF,1 ; побитное "и", - ставим ноль в позиции, указанной в Adrbit

bcf Status,0 ; очищаем флаг переноса

rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево

movlw .7 ; .7 = 00000111

andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех

bcf Prov_reg,0 ; в нулевой бит проверочного регистра пишем ноль

goto sdvig

zapis1 movf Adrbit,0

iorwf INDF,1 ; побитное "или", - ставим единицу в позиции, указанной в Adrbit

bcf Status,0 ; очищаем флаг переноса

rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево

movlw .7 ; .7 = 00000111

andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех

bsf Prov_reg,0 ; в нулевой бит проверочного регистра пишем единицу

;******** меняем адрес записи бита *************************************************

sdvig bcf Status,0 ; очищаем флаг С

rrf Adrbit,1 ; циклический сдвиг вправо через перенос (смещаем позицию)

btfsc Status,0 ; если флаг С = 0, пропускаем следующую команду

bsf Adrbit,7 ; поднимаем 7-й бит (ставим адрес на 7-й бит)

;******** Проверяем на манчестер ****************************************************

movlw .0

xorwf Prov_reg,0 ; проверка - равен ли нулю проверочный регистр

btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду

goto not_manch

movlw .7

xorwf Prov_reg,0 ; проверка - равен ли 00000111 проверочный регистр

btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду

goto not_manch

;******** Задержка 1, чтобы общая длительность от метки zapis до окончания задержки равнялась 889 мкс ***

movlw T1

movwf Counter ; загружаем в Counter таймер T1

Count1 nop

decfsz Counter,1

goto Count1

nop

;******** первый полубит n+1-го бита (писать не надо, но для проверки на манчестер - надо) ******

btfss GPIO,5 ; если на входе GP5 низкий уровень - пишем единицу (выполняем следующую команду)

goto zapis12

zapis02 bcf Status,0 ; очищаем флаг переноса

rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево

movlw .7 ; .7 = 00000111

andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех

bcf Prov_reg,0 ; в нулевой бит проверочного регистра пишем ноль

goto proverka

zapis12 bcf Status,0 ; очищаем флаг переноса

rlf Prov_reg,1 ; сдвигаем биты в проверочном регистре влево

movlw .7 ; .7 = 00000111

andwf Prov_reg,1 ; сбрасываем все биты кроме первых трех

bsf Prov_reg,0 ; в нулевой бит проверочного регистра пишем единицу

;******** Проверяем на манчестер ****************************************************

proverka movlw .0

xorwf Prov_reg,0 ; проверка - равен ли нулю проверочный регистр

btfsc Status,2 ; если флаг Z = 0, то проверочный регистр не равен нулю - пропускаем следующую команду

goto not_manch

movlw .7

xorwf Prov_reg,0 ; проверка - равен ли 00000111 проверочный регистр

btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду

goto not_manch

;******** Задержка 2, чтобы общая длительность от чтения этого полубита до чтения следующего равнялась 889 мкс ***

movlw T2

movwf Counter ; загружаем в Counter таймер T2

Count2 nop

decfsz Counter,1

goto Count2

nop

;******** Сколько бит записали? ******************************************************

movlw .14

xorwf Schetchik,0 ; счетчик = 14?

btfsc Status,2 ; если флаг Z = 0, пропускаем следующую команду

return ; выходим без разрешения прерываний

;****** Если бит 3 счетчика = 1, то мы уже записали 8 бит и следующие надо писать в LBC *****

btfss Schetchik,3 ; если третий бит счетчика равен единице, то следующая инструкция пропускается

goto zap_MBC

zap_LBC movlw LBC ; записываем адрес LBC в регистр косвенной адресации

movwf FSR

goto next

zap_MBC movlw MBC ; записываем адрес MBC в регистр косвенной адресации

movwf FSR

;****** Увеличить счетчик *******************************************************************

next incf Schetchik,1 ; увеличиваем счетчик

goto zapis

;****** Погасить все, зажечь первый красный *************************************************

not_manch bcf GPIO, 1 ; погасить второй красный светодиод

bcf GPIO, 2 ; погасить желтый светодиод

bcf GPIO, 4 ; погасить зеленый светодиод

bsf GPIO, 0 ; зажечь первый красный светодиод

;******* Сбросить признак принятия посылки **************************************

bcf MBC,7

;********* Сбросить флаг прерываний и выйти *************************************

exit bcf INTCON,0

retfie

;******** КОНФИГУРИРОВАНИЕ КОНТРОЛЛЕРА *********************************************

;*** Необходимо помнить, что калибровочные константы стираются при программировании, **********

;*** поэтому их надо сохранять, OSCCAL хранится по адресу 03FFh, биты калибровки схемы BOR - *

;*** 12-й,13-й биты слова конфигурации (в моем случае BOR - 01, OSCCAL - 346C)*****************

;****** Калибровка Генератора *****************************************************************

start bsf Status,5

Call 3FFh ; Загрузить калибровочную константу в w

movwf OSCCAL

;******** Установка направления работы GP5 - на вход, а GP4-GP0 - на выход ********************

bcf Status,5 ; перейти в банк 0

clrf GPIO ; инициализация защелок (нули на всех защелках, кроме GP5)

movlw .7 ; биты 0..2 поднять

movwf Cmcon ; компаратор выключен, GP0, GP1, GP2 - цифровые вх/вых

clrf LBC

clrf MBC

bsf Status,5 ; Перейти в 1-й банк (установить в 1 5-й бит регистра Status).

movlw .40 ; Пишем конф-ю GPIO в аккум. (W) .40=00 101000 GP0, GP1, GP2, GP4 - выходы, остальные - входы

movwf TrisIO ; Скопировать конфигурацию GPIO из W в регистр TrisIO.

;****** Разрешить прерывания на входе GP5 *****************************************************

movlw .32 ; .32 = 00100000

movwf IOCB ; разрешить прерывание на входе GP5, на остальных - нет

bcf Status,5 ; Перейти в 0-й банк (установить в 0 5-й бит регистра Status).

movlw .8 ; .8 = 00001000

movwf INTCON ; разрешить прерывание от GPIO

bsf INTCON,7 ; разрешить прерывания

nop

;****** Сканирование наличия принятой информации ***********************************************

Scan btfsc MBC,7 ; если start бит (7-й) в регистре MBC = 1, то была принята информация (первый старт бит = 1)

goto rab_chast ;

goto Scan

;******* РАБОЧАЯ ЧАСТЬ ***************************************************************

;******* Проверка номера системы **********************************************************

rab_chast movf MBC,0

andlw .31 ; побитное "И" с 00011111 - отрезаем стартовые и управляющий биты

xorlw Sys

btfss Status,2 ; если Z=1, то следующая инстр-я не выполняется (номер совпадает с заданным)

goto nosys ;

;******* Проверка номера команды *********************************************************

movlw CMD_1

xorwf LBC,0

btfss Status,2 ; если Z=1, то следующая инструкция не выполняется

goto nocom

;****** Погасить все, зажечь зеленый *******************************************************

bcf GPIO, 0 ; погасить первый красный светодиод

bcf GPIO, 1 ; погасить второй красный светодиод

bcf GPIO, 2 ; погасить желтый светодиод

bsf GPIO, 4 ; зажечь зеленый светодиод

goto out

;****** Погасить все, зажечь второй красный ***********************************************

nosys bcf GPIO, 0 ; погасить первый красный светодиод

bcf GPIO, 2 ; погасить желтый светодиод

bcf GPIO, 4 ; погасить зеленый светодиод

bsf GPIO, 1 ; зажечь второй красный светодиод

goto out

;******* Погасить все, зажечь желтый ********************************************************

nocom bcf GPIO, 0 ; погасить первый красный светодиод

bcf GPIO, 1 ; погасить второй красный светодиод

bcf GPIO, 4 ; погасить зеленый светодиод

bsf GPIO, 2 ; зажечь желтый светодиод

;******* Сбросить признак принятия посылки и флаг прерывания ******************************

out bcf MBC,7 ; сбрасываем признак принятия посылки

bcf INTCON,0 ; сбрасываем флаг прерывания

;******* Пауза ****************************************************************************

movlw TP

movwf Counter

pause nop

nop

decfsz Counter,1

goto pause

;******* Разрешить прерывания **************************************************************

bsf INTCON,7

nop

goto Scan

end

;------------------------------------------------------------------------------------------------------------------------------

Приложение Д

Рисунок 1 - Схема принципиальная электрическая ИК пульта дистанционного управления

Рисунок 2 - Схема принципиальная электрическая ИК приемника дистанционного управления

Приложение Ж

Расчет стоимости основных элементов ИК - пульта

Приложение К

Расчет стоимости основных элементов ИК - приемника


Подобные документы

  • Пульт дистанционного управления на ИК лучах. Протокол RC-5 и принцип его работы. Разработка ИК пульта и приемника дистанционного управления. Алгоритм программы обработки прерывания ИК приемника. Разработка схемы электрической принципиальной ИК пульта.

    курсовая работа [5,7 M], добавлен 01.02.2013

  • Краткое описание микроконтроллера, периферийные устройства. Структура управления бит ADCCON1. Принцип действия устройства, описание структурной схемы. Краткая функциональная схема, функции блоков. Схема пульт дистанционного управления, спецификация.

    курсовая работа [184,7 K], добавлен 25.12.2012

  • Работа системы инфракрасного дистанционного управления. Параметры и характеристики 6-ти канального регулятора громкости. Выбор технологии разработки печатной платы. Расчет расходов на стадии производства устройства управления акустической системой 5.1.

    дипломная работа [3,6 M], добавлен 01.02.2013

  • Разработка структурной, функциональной, принципиальной схемы тестера для проверки пультов дистанционного управления RC-5. Описание элементной базы: микроконтроллер AT90S2313, приемник ILMS5360, индикатор CA56-12SRD. Временные диаграммы работы устройства.

    курсовая работа [350,4 K], добавлен 21.04.2011

  • Описание разработки прибора. Параметры оптических приборов, используемых в проекте. Электрические и тепловые характеристики реле КР293КП4В. Выходная емкость реле в выключенном состоянии. Напряжение его изоляции. Характеристики фотодиода ФД263-01.

    курсовая работа [928,2 K], добавлен 26.04.2010

  • Этапы разработки микропроцессорной системы на основе микроконтроллера. Общая характеристика солнечных часов. Разработка схемы, программного обеспечения и алгоритма управления солнечных часов. Технико-экономическое обоснование разработки и охрана труда.

    дипломная работа [5,9 M], добавлен 16.07.2010

  • Разработка устройства, срабатывающего при освещении фотоприемника-светодиода лазерной указкой с расстояния до 3 м. Схема приемника подаваемых лазерной указкой сигналов. Печатная плата устройства и размещение элементов на ней. Расчет делителей напряжения.

    курсовая работа [2,3 M], добавлен 10.06.2010

  • Структурная схема системы управления кондиционером. Выбор пульта управления, датчика температуры, вентилятора, микроконтроллера и компрессора. Внутренняя структура и система команд транспортного уровня микросхемы DS18B20. Алгоритм работы кондиционера.

    курсовая работа [2,1 M], добавлен 14.11.2010

  • Общая характеристика авиационных происшествий и инцидентов по техническим причинам. Разработка принципиальной электрической схемы универсального пульта проверки электромеханизмов МПК. Мастерская для изготовления прибора. Компоновка приборной панели.

    дипломная работа [1,5 M], добавлен 29.10.2013

  • Описание алгоритма работы и разработка структурной схемы микропроцессорной системы управления. Разработка принципиальной схемы. Подключение микроконтроллера, ввод цифровых и аналоговых сигналов. Разработка блок-схемы алгоритма главной программы.

    курсовая работа [3,3 M], добавлен 26.06.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.