Разработка инфракрасного пульта и приемника дистанционного управления
Разработка микропроцессорной системы на основе микроконтроллера. Пульт дистанционного управления на инфракрасных лучах. Разработка инфракрасного пульта и приемника дистанционного управления. Технико-экономическое обоснование объекта разработки.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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