Microproc II
Home Sistemas Digitais I Sistemas Digitais II Microproc I Microproc II TI-89 Arq. Computadores Redes Laboratório EC Relatório VHDL, Verilog e AHDL Datasheets Links importantes Java 2 Micro Edition Projetos Finais PCT- Motorola Projetos Integrados Módulos de Aquisição Robótica Outros Dados do professor

 

MSP430
Microchip PIC
8051 / 89C52
Programador EC-PIC
8051 - Login

Datas importantes
Data Dia da Semana Local Atividade
03/07/2008 5a Lab Última data para atividades
09/07/2008 4a Lab Final

Contrato pedagógico: pegue aqui

Calendário de atividades: pegue aqui

Projeto semestral: Projeto Robô

Veja aqui os robôs desenvolvidos pelos alunos (com vídeo):

2o sem 2007 Francesco Jacomel, Gustavo de Faro Colen Nunes, João Paulo da Silva, Rafael Augusto Giliczynski e Welinton Canelo Vídeo
2o sem 2006 Alexandre Perin; Klystofer Ortega; Luciano Motti; Victor Villela Serta Vídeo
Cézar Augusto Gonçalves Barboza; Francisco Wolff Leal; Paulo Ricardo Lopes de Faria; Roger Kenji Tanaka Vídeo
Evandro Fonseca; Franz Gustav Niederheitmann; Teresa Winter Vídeo
1o sem 2006 Lauro Wolf Valente; Michel Tomson Kalil Sphair;Wellington Corrêa Bianchini Vídeo
Eduardo Dalazen; Fernando Sulzbacher ;Marcos Campana
Tatiana Pereira Filgueiras; Sergio Kenzo Wojitani; Diego Cezar Celli; I Jen Fan Vídeo
André Gelasco Malschitzky, Joffer José Novak de Albuquerque
2o sem 2005 Diogo Rodrigues de Jesus,Emerson Antônio Pitlak,Samuel Alessandro Camargo Vídeo
Anderson Trindade Venturini, Barbara Martinazzo,Bruno de Souza Vídeo
Adroaldo Martins Filho, Leandro Diogo Vazatta, Roberto Eliud Marks Farias, Thiago Kendi Shiono Vídeo
Adriano de Miranda, Flávio José de Freitas,Michael Henrique Siegwarth Vídeo
Dennis Carnelossi Furlaneto, Guilherme Spyra Gubert, Hood Wilson Gusso Silva Vídeo
João Pedro Antunes Fontes, Rodolfo E. Rickli Neto, Rafael Girotto Vídeo
Rodrigo Dyck, Zoroastro Santana Vídeo
Peter Marik, Luciano Daniel Amarante e Daniel Rubel Vídeo
D’Olivo, Gustavo Madruga e João Victor Gonçalves Vídeo
1o sem 2005 Margareth Suchÿ, Fábio Henrique Mazarotto, Luiz Teruhiko Akagi Vídeo
FERNANDO HABITZREUTER,RAFAEL CARLECE SERRATO Vídeo
2o sem 2004 Paula, Rafael e Darlan Vídeo
Juarez, Rafael e Rhenyo Vídeo
Alexandre e Henrique Vídeo
Carlos, José e Kimar
Felipe, Fernando e Rafael Vídeo
Alan, Álvaro e Bernando
Vinicius e Roberto

Veja também os projetos integrados

Bibliografia

bullet

Hamacher, V. Carl; Computer Organization; Forth Edition; McGraw-Hill, 1996.

bullet

Heuring, Vincent, JORDAN, Harry; Computer Systems Design and Architecture. Addison Wesley, 1997.

bullet

Tanembaum, Andrew; Organização Estruturada de Computadores; Prentice Hall do Brasil, 1998.

bullet

Goor, A. Van Der; Computer Architecture and Design; Addison Wesley, 1989.

Material

bulletPIC
bulletDatasheet PIC16F87X (PDF)
bulletDatasheet PIC16F87XA (PDF)
bullet8051
bulletDatasheet AT89C52(PDF)
bullet Designing Boards with Atmel AT89C51/52, AT89C1051 for writing Flash at In-Circuit Test
bulletInclude Files for IAR, Keil, Raisonance & Tasking Compilers

Outros

bulletProgramador para vários modelos de PIC (por André Linharth);
bulletLink da Microchip www.microchip.com
bulletLink da ATMEL www.atmel.com

 

Prova Final:

A prova final será realizada no Laboratório de Engenharia de Computação no horário indicado. A prova será com consulta aos seus apontamentos e não será permitida a consulta ou empréstimo de material aos colegas. Na área de trabalho do computador estará disponível apenas o datasheet do PIC.

Importante: todos os computadores do lab estarão desconectados da internet.

O aluno deverá trazer:

bulletDisquete com códigos fonte dos trabalhos implementados (para exemplo);
bulletPIC 16F876 e um 89S52;
bulletUm disquete virgem para a entrega do projeto implementado, etiquetado com seu nome, número e turma;
bulletCabo para conexão serial;
bulletDisplay LCD (o utilizado nas experiências - Os displays do laboratório não estarão disponíveis);
bulletDisplay de 7 segmentos;
bullet7 resistores de 330 ohms para a ligação do display de 7 segmentos;
bulletFios para a montagem;
bulletDemais componentes utilizados nas experiências;
bulletDatasheet impresso do display, do MAX232, display de 7 segmentos e demais componentes utilizados para as experiências.

A não conclusão ou falta de entrega de algum material solicitado resultará em nota ZERO.

Atividades



Atividade 1 - Criar um programa assembly que jogue para a saída P1 do 89C52 um valor de contagem BCD incrementado a cada interrupção nos terminais INT0 do 89C52 (conectar um gerador de funções externo). Esta saída deverá  ser conectada aos dois displays da mesa digital. Como programa principal, implementar um contador seqüencial "ping-pong" que acenda sempre apenas um led das oito saídas de P2.
Atividade 2: Modificar a atividade 1 para apresentar o valor da contagem da interrupção INT0 em dois displays de 7 segmentos multiplexados pela saída P1. Utilizar o bit P1.7 para selecionar o display a ser aceso. Utilizar como clock a mesa digital em 72kHz e fazer a atualização de cada display em 60Hz. Fazer o seqüencial atualizar seu deslocamento a cada 1Hz.
Atividade 3: Implemente um sistema de alarme que ao ser ligado, envie ao PC (pela porta serial) a mensagem "DESATIVADO". Ao digitar uma senha de 4 dígitos, o alarme deverá exibir a mensagem "ATIVADO". Para voltar a situação inicial, basta digitar novamente a mesma senha.

Enquanto estiver ativado, o sistema deverá monitorar um bit, e caso neste bit ocorra uma rampa descendente (por interrupção), um LED deve acender indicando que o alarme está soando, voltando a ser desligado apenas quando o usuário digitar a senha correta (voltando então a situação inicial).

Atividade 4: Modificar a atividade anterior para que cada digito recebido venha e um teclado matricial, tratado por interrupção.
Atividade 5: Fazer do PIC um contador binário de 8 bits. Utilizar o clock da mesa digital;
Atividade 6: Implementar o circuito ON-OFF com o PIC, utilizando clock externo ou a cristal:
PORTB.0 (entrada) PORTC.1(saída) PORTC.0(saída)
0 0 1
1 1 0
Atividade 7: Implementar um decodificador BINÁRIO-7 segmentos utilizando a técnica de tabela (comando RETLW). Trazer um display de 7 segmentos e 7 resistores de 330 ohms;
Atividade 8: Fazer um contador de dois dígitos decimal (deve contar de 00 até 99 voltando a 00). Estes dois dígitos devem ser apresentados no display BCD da mesa digital. Utilizar como saída do dígito da unidade os bits PORTC.[3..0], como saída do dígito da dezena os bits PORTC.[7..4] e como sincronismo (rampa ascendente) o PORTB.1;
 
Atividade 9:Ao ligar o circuito, este deverá exibir em um display LCD o valor 00. Ao ocorrer uma interrupção externa em RB0/INT o valor do display deverá ser incrementado. Conectar os pinos de dados do  display em RC[7..0] e os sinais E e RS nos pinos RB1 e RB2 respectivamente.

 Dica:

bulletleia atentamente o item 12.10.1 do manual do PIC;
bulletverifique a função dos bits do registrador INTCON.
bulletPart I: descrição do funcionamento do display.
Atividade 10: retomar a Aplicação 8 onde a dezena e a unidade são apresentadas na porta C (RC7:RC4 = Dezena e RC3:RC0 = Unidade). Corrija o código para que o incremento e atualização destes valores (PORTC) ocorra dentro de uma interrupção requisitada de um em um segundo através do overflow do TIMER2. Faça como processo principal, a chave ON-OFF (Aplicação 6) funcionar em dois leds (led1 e led0) a partir de uma chave (sw0) no PORTB (RB1) .
bulletRestrições:
bulletajustar a freqüência de clock do PIC para 16kHz.
bulletDicas:
bulletleia atentamente o item 7.0 do manual do PIC; 
bulletajustar prescaler para 1:16 e postscaler para 1:1;
bulleto valor do PR2 é por sua conta;
bulletpara habilitar a interrupção do TIMER2 você precisa ligar o INTCON.PEIE;
bulletregistradores envolvidos para configuração do TIMER2: PIR1;INTCON;T2CON;PIE1;PR2.

Atividade 11: Implementar um sistema de alarme que monitore um sensor de temperatura (LM35). Caso a temperatura fique inferior a 40ºC, um LED verde deverá acender. Se a temperatura ficar superior a 40ºC e inferior a 50ºC um LED vermelho e um beep deverão pulsar na freqüência de 2Hz. Por fim, se a temperatura ficar superior a 50ºC o LED e o sonalarme deverão soar ininterruptamente.

bulletPegue aqui o dataheet do LM35;
bulletObservem que o CAD permite medir tensões entre 0 e Vcc;
bulletEstudar e colocar para funcionar o conversor analógico-digital do PIC16F876. O funcionamento deste CAD está descrito no capítulo 11 (a partir da página 111) do manual do CI. Clique aqui para pegar um código de exemplo para teste do CAD;
bulletPara aquecer o sensor, aproximar um ferro de soldar.
 
Atividade 12: Implementar um circuito onde um microcontrolador posicione um Servo Motor em um ângulo de 0o a aproximadamente 180o em função de mensagens recebidas pela serial. Inicialmente o servo pode ser posicionado em 0o e, a cada caractere "+" recebido, o ângulo aumenta em aproximadamente 18o. Cada vez que o ângulo é atualizado, o microcontrolador deverá enviar um caractere "!". Se o servo estiver com seu ângulo máximo (aproximadamente 180o), caso seja digitado "+", o caractere "#" deve ser enviado pela serial e o comando recebido é ignorado. A cada caractere "-" recebido, o ângulo diminui em aproximadamente 18o. Cada vez que o ângulo é atualizado, o microcontrolador deverá enviar um caractere "!". Se o servo estiver com seu ângulo mínimo (aproximadamente 0o), caso seja digitado "-", o caractere "#" deve ser enviado pela serial e o comando recebido é ignorado.

Veja: Material Eletro Mecânicos (.ppt)

 

Atividade 13: Implementar as seguintes funções em C para o MSP430 Kit Universitário:
bulletDisplay16x2() : configura o display para duas linhas sem cursor;
bulletClear() : limpa o display e posiciona o cursor na 1a posição;
bulletSetPosition(int linha,int coluna): posiciona o cursor do display em uma linha/coluna;
bulletShowCursor(): exibe o cursor;
bulletHideCursor(): apaga o cursor;
bulletPrint(char* str): imprime a string str no cursor.

Testá-la no kit e apresentá-la ao professor. Para isto, implementar um programa que teste todas estas funções e executá-lo passo a passo na presença do professor.

Conexões no kit ao display LCD:

Sinal do display Pino do MSP430
D[7..0] P5
E P2.7
RS P2.6

Os sinais de alimentação do display já está conectados na placa.

 

Atividade 14: Implementar um relógio digital (HH:MM:SS) no display LCD do MSP430, sincronizado pela interrupção do TIMERA. Entre cada interrupção, a CPU do microcontrolador deverá ficar desligada (baixo consumo). Empacotar as funções da atividade anterior em uma classe chamada Display16x2.

 

Atividade 15: Implementar em C++ com MSP430 um programa que controle o LED conectado ao bit 0 da porta P2, através da porta serial. Ao iniciar o programa, o software deverá solicitar uma senha (previamente gravada no código; Exemplo: “1234”), conforme o exemplo abaixo:

Login:

Ao digitá-la corretamente (preencher com * cada tecla recebida), será exibido para o usuário o seguinte menu:

LED = Apagado Digite:
1) Para inverter o estado do LED;
2) Para mudar a senha;
3) Para logoff;

Ao digitar 1, o estado do LED deve inverter e o menu precisa ser atualizado.
Ao digitar 2, será pedida uma nova senha que alterará o valor original.
Ao digitar 3, o programa volta a situação inicial (Login).

 

Atividade 13: Implementar a atividade 5, porem transmitindo as palavras  ON/OFF dos pela porta serial, sendo exibidas no Hyperterminal.

Observações:

1. antes de enviar as strings ON ou OFF enviar o caracter 12 (decimal). Este caracter faz apagar a tela do Hyperterminal;

2. Clique aqui para fazer download do arquivo com código de exemplo de recepção e transmissão serial (implementado pelo aluno André Guilherme Linarth). Neste código, há uma rotina para transmissão e uma para recepção com a taxa de 57600 bps (para um cristal de 3.58MHz).

Atividade 17: Implementar um osciloscópio digital utilizando PIC e um microcomputador. Para isto, os seguintes recursos deverão ser utilizados:

1. utilizar o conversor analógico-digital para aquisição dos sinais. Clique aqui para pegar um código de exemplo para teste do CAD;
2. utilizar o módulo de comunicação serial (do PIC) para transmitir cada valor convertido (utilizar a maior taxa de comunicação possível);
3. implementar um programa em C/C++ que pegue os dados da serial e exiba-os na tela (na forma de gráfico tensão x tempo).
4. devido a dificuldade para ajustar uma taxa de transmissão, utilizar o PIC com um cristal oscilador de 3,58MHz. Este cristal é encontrado nas lojas de eletrônica (para outros valores de cristal, ajustar os correspondentes parâmetros no programa).

Observações importantes:

1. os sinais de entrada deverão estar entre 0 e 5 Volts;
2. será avaliado apenas a exibição da forma de onda correta (não será necessário ajustar nem a escala de tensão nem a escala de tempo adequadamente);
3. Mecanismos para sincronismo devem ser implementados, evitando que os sinais fiquem aparecendo na tela em posições aleatórias;
4. Clique aqui para fazer download do arquivo com código de exemplo de recepção e transmissão serial (implementado pelo aluno André Guilherme Linarth). Neste código, há uma rotina para transmissão e uma para recepção com a taxa de 57600 bps (para um cristal de 3.58MHz);
5. Para maiores informações, consultar o datasheet do microcontrolador PIC utilizado.

Como referência, podem consultar o projeto PIC-Based Dual-Channel Virtual Oscilloscope contido na edição de outubro (pegue aqui - 6,75Mbytes).

Atividade 11: Implementar um circuito de alarme com display LCD e teclado matricial.

bulletAo ligar o sistema, o display deverá apresentar a msg: "Alarme desligado/# para armar". Ao pressionar a tecla # o alarme armará mostrando a msg: "Alarme armado!/Digite a senha". Para desarmá-lo, o usuário deverá digitar uma seqüência de 4 dígitos (senha). Caso uma entrada de sensor (PA) vá para nível lógico 1, o alarme deverá soar (utilizar um sonalarme) e mostrar a msg "*** Alarme ***". Se o alarme estiver soando, este só será desativado se for digitada a senha correta, voltando ao estado inicial.
bulletPara quem não sabe, sonalarme é uma pequena sirene (bem barata). Veja a foto:

                

Comprem um modelo que funcione a partir de 3V (os modelos que funcionam só com 30V não servem).

bulletDica: para utilizar o PORTA como entrada/saída digital, leia o item 3.1 do datasheet e certifique-se de que o registrador ADCON1 (página 112) esteja corretamente configurado.
Atividade 18: utilizando 89C52, fazer um contador de dois dígitos decimal (deve contar de 00 até 99 voltando a 00) com sincronismo(rampa ascendente) pelo bit P3.0 e saída na porta P1. Estes dois dígitos devem ser apresentados no display BCD da mesa digital. Este programa deverá ser feito em C, porém durante a apresentação, a equipe deverá explicar o código em assembly.

O software para assembly/C do 8031 da Keil (versão para teste que atende nossas necessidades) pode ser baixado aqui.

Pegue aqui o arquivo com o programa do emulador de EPROM.

Recomendo a utilização do emulador de EPROM. A PUC possui 20 emuladores e estão a disposição de vocês (com o manual). Na utilização deste emulador, recomendo que simulem a 27512, pois esta foi a memória que testei com a placa e funcionou corretamente.

Atividade 12: Implementar um voltímetro digital. Este voltímetro deve medir tensões de 0 até 25,5V com 8 bits. O valor deve ser enviado pela porta serial e exibido no Hyper Terminal. A atualização do valor na tela deve ser feita a cada 1 segundo.

bulletObservem que o CAD permite medir tensões entre 0 e Vcc. Para medir tensões maiores, utilizar um divisor resistivo.

Importante:

Codificar uma função que converta um número de 8 bits (obtido a partir do CAD) para BCD (divisão por DEZ), permitindo a exibição do valor na tela. A figura abaixo mostra o fluxograma desta função:

Esta função foi originalmente projetada para outro processador, porém pode ser facilmente adaptada ao PIC.

Para executá-la, passar para esta função em R2 o valor a ser dividido por 10. Ao terminar sua execução, teremos o resultado em R3 e o resto em AC.

Clique aqui para fazer download do arquivo com código de exemplo de recepção e transmissão serial (implementado pelo aluno André Guilherme Linarth). Neste código, há uma rotina para transmissão e uma para recepção com a taxa de 57600 bps (para um cristal de 3.58MHz).

 

Atividade 13 Implementar um circuito onde um microcontrlador faça, a cada 30s, uma varredura em um ângulo de aproximadamente 180º (com servo motor) localizando o ângulo de maior incidência de luz em um LDR.
Após a varredura, o servo deverá ser posicionado no ângulo encontrado, aguardando até o início da próxima varredura. Para referência de luz, utilizar uma lanterna ou LED de alta intensidade.