Vous êtes sur la page 1sur 4

Mestrado Integrado em Engenharia Electrotécnica e de Computadores

Telecomunicações
Microprocessadores, Periféricos e Interfaces 2009/10

Controle Remoto por Infravermelhos


José Borges (ee05227@fe.up.pt), Odarley Pereira (ee07390@fe.up.pt), Patrício Ferreira (ee06038@fe.up.pt)

1. Introdução
O presente trabalho consiste em desenvolver um controlo remoto por infravermelhos baseado na
norma RC-5 da Philips. Foi utilizado o programa de desenvolvimento Keil uVision para a simulação e
microcontrolador AT89C51 para a implementação.

2. Objectivos
Os objectivos deste trabalho estão divididos em duas partes:
i. Desenvolver o controlo em modo autónomo, através de quatro teclas locais que são lidas
directamente pela porta 1 do micro controlador;

ii. Controlo através de um PC, sendo neste caso os comandos recebidos através da porta série do
89C51.
A figura seguinte mostra a configuração geral do circuito utilizado

3. Desenvolvimento do código

O código do programa deve produzir, de acordo com o comando executado, uma sequência de 14
bits que vão ser emitidos através do pino P1.3, o qual encontra-se conectado ao circuito modulador
de trem de IV.
Partindo do código base fornecido, o valor a ser carregado pelo acumulador antes de chamar a
rotina de atraso, de forma a encontrar os 889us, foi calculado da seguinte forma:

a. Cálculo de tempo para o nível alto

889µ𝐬 × 11,0592MHz = 9831,6288 𝑐𝑖𝑐𝑙𝑜𝑠

𝑚𝑜𝑣 + 𝑚𝑜𝑣 + 𝑐𝑎𝑙𝑙 + 𝑎𝑡𝑟𝑎𝑠𝑜 = 12 + 12 + 24 + 12 4𝐴𝑐𝑐 + 2

<=> 72 + 48𝐴𝑐𝑐 = 𝐴𝑡1 𝐴𝑡1 = 𝐴𝑡2 = 9831,6288

𝐴𝑡1 − 72 9831,6288 − 72
<=> 𝐴𝑐𝑐 = =
48 48

<=> 𝐴𝑐𝑐 = 203,3256

<=> 𝐴𝑐𝑐 = 203

b. Cálculo de tempo para o nível baixo

𝑐𝑝𝑙 + 𝑚𝑜𝑣 + 𝑐𝑎𝑙𝑙 + 𝑎𝑡𝑟𝑎𝑠𝑜 + 𝑑𝑗𝑛𝑧 + 𝑚𝑜𝑣 + 𝑟𝑙𝑐 + 𝑚𝑜𝑣 + 𝑚𝑜𝑣 + 𝑟𝑙𝑐 + 𝑚𝑜𝑣 + 𝑐𝑝𝑙 = 𝐴𝑡2

12 + 12 + 24 + 12 4𝐴𝑐𝑐 + 2 + 24 + 12 + 12 + 12 + 12 + 12 + 12 + 12 = 𝐴𝑡2

<=> 180 + 48𝐴𝑐𝑐 = 𝐴𝑡2

𝐴𝑡2 − 180 9831,6288 − 180


<=> 𝐴𝑐𝑐 = =
48 48

<=> 𝐴𝑐𝑐 = 201,0756

<=> 𝐴𝑐𝑐 = 201


3.1 Descrição do código de controlo em modo autónomo

3.2 Tratamento de interrupção da porta série

Dado que se requer um Baud Rate de 1028, o valor de TH1 é dado por:

𝐾∙𝐹𝑟𝑒𝑞 𝑂𝑠𝑐
𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒 = 32∙12∙ 256 −𝑇𝐻1 .

𝐾∙𝐹𝑟𝑒𝑞 𝑂𝑠𝑐 2∙11,0532 𝑀


𝑻𝑯𝟏 = 256 − 384 ∙𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒
𝑻𝑯𝟏 = 256 − 384 ∙1028
= 200.

Pseudo-codigo da função de tratamento de interrupção


 No inicio limpa a flag RI
 E depois salta para o processamento do comando.
 No processamento do comando começa por guardar o valor lido através da porta serie.
 Repara se o código ASCII é maior ou igual 31 (31 a 39 representam os números de 1 a 9).
 Se for maior ou igual a 31 repara se é menor que 40, caso seja então é um número, então converte o
código ASCII num número valido e envia para mudar para o canal respectivo.
 Caso não seja um numero então é um letra (C,c,V,v), ou um símbolo (+,-), onde faz também a
comparação com os respectivos códigos ASCII.
 Caso seja uma das letras acima, então ela guarda num registo para depois usa-la no + ou -.
 Caso seja um dos símbolos acima, então repara se anteriormente foi enviado uma letra (C,c,V,v),
caso seja então, envia o comando respectivo.
 Caso não seja nenhum das letras ou símbolos acima, então ela retorna da interrupção sem dar
instruções de comando.

Visualização dos sinais

Trem da saída P1.3 observado no SCope da uVision (T≈889us)

Sinal modulado observado no osciloscópio (T1=5*1.4=7≈ 𝟔. 𝟗𝟒𝟒us e T0=5*4=20≈ 𝟐𝟎. 𝟖𝟑us)

4. Conclusão

Neste trabalho foi apresentado o projecto de um controlador remoto por infravermelhos utilizando o
microcontrolador AT89C51.

A aplicação desenvolvida permitiu enviar comandos ao aparelho da TV de duas formas diferentes,


conforme foram especificados nos objectivos deste trabalho.

Vous aimerez peut-être aussi