PUCRS - Faculdade de Informatica
Laboratorio de Programacao IV, semestre 2004/1.
Prof. Eduardo Augusto Bezerra
 
Trabalho 3 - Relogio digital com termometro
 

O trabalho consiste na implementacao de um relogio digital com mostrador para apresentacao da hora, minuto e segundos, no LCD da plataforma de desenvolvimento utilizada nas aulas praticas. Devera' apresentar tambem no LCD a temperatura ambiente obtida do sensor de temperatura disponivel no chip.

O programa devera' possuir facilidades para o usuario acertar o relogio utilizando as chaves e botoes disponiveis na placa, e tambem devera' ser implementado um protocolo que possibilite ao usuario obter informacoes sobre a hora e temperatura, via comunicacao serial em um computador hospedeiro.

O programa deverá ser escrito em assembly para a familia 8051 e compilado utilizando as ferramentas disponiveis para o processador existente na plataforma disponibilizada (MSC1210 da familia 8051). O objetivo principal do trabalho e' possibilitar ao aluno a oportunidade de desenvolver uma aplicacao real para um processador (microcontrolador) de larga utilizacao comercial.

Neste trabalho o aluno ira' exercitar conceitos de grande importancia na computacao e em sistemas embarcados em geral como, por exemplo, gerencia de interrupcoes, gerencia de temporizacao, leitura de sensores e perifericos, e comunicacao serial. A seguir estão listadas algumas dicas e ferramentas de apoio:
  • Repositorio local (inclui material sobre a plataforma de desenvolvimento a ser utilizada)
  • Documentacao sobre o MSC1210, microcontrolador utilizado na plataforma de desenvolvimento: User Guide e Data Sheet
  • Dicas para o uso do conversor A/D para leitura de temperatura
    • Programa fonte em C para ser utilizado como exemplo (sensor_t.c)
    • Esqueleto de programa em assembly implementado baseado em sensor_t.c: (sensor_t.asm, MOD1211). O arquivo ti.h contem definicoes para o MSC1210 que podem ser utilizadas para completar o MOD1211 caso necessario.
    • Pagina 12-5 do user guide do MSC1210 contem informacoes detalhadas inclusive sobre o programa exemplo em C.
    • Paginas 31 e 32 do data sheet contem um resumo com todos os registradores do microcontrolador.

 

Especificacao

 

O produto final (programa + placa com LCD fornecida) devera' ser utilizado para informar ao usuario a hora atual e a temperatura medida. Apresentar essas informacoes simultaneamente no display (LCD), na mesma linha ou nas duas linhas disponiveis. A hora devera' aparecer no formato HH:MM:SS, sendo atualizada a cada segundo. O relogio devera' funcionar nos dois modos: 24 horas ou am/pm. No caso de programado para o formato am/pm, o formato de apresentacao no display devera' ser: HH:MM:SS xx, onde "xx" sera' "am" ou "pm". A temperatura,em graus celcius, devera' ser apresentada no formato TT C, onde TT e' a temperatura, sendo atualizada aproximadamente a cada minuto.

Para obter a temperatura utilizar o sensor de temperatura contido no circuito integrado do microcontrolador.

Para atualizar a hora, e' sugerido programar um dos timers disponiveis no microcontrolador, e utiliza-lo para gerar interrupcoes para atualizar os segundos (minutos e horas).

Para acertar o relogio, utilizar os botoes disponiveis na placa filha. Por exemplo, a chave 1 quando pressionada por mais de 3 segundos significa que o usuario deseja alterar a hora. Usar a chave 2, por exemplo, para incrementar a hora. Pressionar novamente a chave 1 para acertar os minutos, e assim por diante. Este e' um procedimento semelhante ao utilizado para acertar um relogio de pulso. A propria chave 1, por exemplo, pode ser utilizada para alternar entre os modos de exibicao am e pm.

O produto devera' possuir tambem a capacidade de responder a comandos recebidos remotamente via porta serial. Ao receber o comando "All" (caracter 'a'), o produto devera' enviar a informacao de hora, minuto e segundo, e tambem a temperatura para o computador hospedeiro. Esta informacao devera' ser apresentada na tela do computador hospedeiro, sendo a mesma apresentada na tela do produto (com a possivel diferenca dos segundos). Ao receber o comando "Hora" (caracter 'h'), o produto devera', de forma semelhante, enviar apenas a informacao de hora, minuto e segundo. Ao receber o comando "Temperatura" (caracter 't'), o produto devera' enviar apenas a informacao de temperatura. Todas as informacoes fornecidas devem ser apresentadas na tela do hospedeiro. O programa terminal utilizado para realizar o download para a placa pode ser utilizado tambem para enviar os comandos, e apresentar as informacoes na tela.

 

Etapas sugeridas para o projeto e implementacao do trabalho

 

  1. Escolha de um simulador assembly para o 803, e desenvolvimento de pequenas rotinas para se familiarizar com o mesmo (ex: JSIM51).
  2. Escolha de um montador assembler para o 8051. Sugestoes: ASM51 (free macro assembler) ou SDCC (compilador C e montador Assembly).
  3. Estudo do 8051 com base no apresentado nas aulas teoricas, e detalhado em livros da biblioteca e no material disponivel na pagina (Arquitetura do microcontrolador e Guia do programador e conjunto de instrucoes). Enfase deve ser dada para as diferencas com relacao aos processadores estudados ate' o momento nas disciplinas de Organizacao de Computadores (Cleopatra e Rn), LABORG (Cleopatra), Arquitetura de Computadores I (Mips) e Lapro IV (80x86). Sugere-se estudar o conjunto de instrucoes, mapa de registradores, mapa de memoria, e perifericos disponiveis.
  4. Estudo do sistema de interrupcoes do 8051 (fazer o exercicio discutido na aula do dia 23/04) descrito em livros da biblioteca, datasheets na internet, e no material disponivel na pagina da disciplina (Guia do programador e conjunto de instrucoes pg. 6 - 8). Implementacao de um pequeno programa de testes utilizando interrupcoes (timer, por exemplo).
  5. Estudo dos recursos para comunicacao serial no 8031 (Guia do programador e conjunto de instrucoes pg. 11 - 12). Implementacao de um pequeno programa de testes utilizando esses recursos.
  6. Estudo dos temporizadores (timers) no 8031, principalmente quando utilizados na geracao ed interrupcoes.
  7. Estudo do sensor de temperatura selecionado com enfase na forma de leitura da temperatura, conforme visto na aula do dia 28/05.

 

 

Entrega e avaliacao

 

O trabalho podera' ser realizado por grupos de ate' tres alunos, porem a avaliacao e' individual. Cada grupo devera' preparar um relatorio descrevendo as estrategias utilizadas para implementar o sistema. No dia da apresentacao serao realizadas perguntas especificas sobre recursos do 8051 utilizados na implementacao do trabalho (ex. funcionamento do sistema de comunicacao serial, programacao do mesmo para outros modos de funcionamento, ...), e tambem sobre as estrategias utilizadas para a implementacao do trabalho. Nesse momento o aluno devera' demonstrar possuir o conhecimento necessario para o desenvolvimento de programas em assembly para a arquitetura alvo (8051). A avaliacao sera' realizada de acordo com a ordem da lista de chamada, e um aluno por vez. Os alunos deverao enviar o relatorio e o programa fonte por email para eduardob@inf.pucrs.br ate' 30 minutos antes do inicio da aula do dia da apresentacao. Programas nao recebidos por email ate' a data/hora limite nao serao avaliados (dia 02/07/2004 ate' as 20:45). Data da apresentação: 02/07/2004.