Programação microcontroladores 8051 utilizando linguagem c

Programação microcontroladores 8051 utilizando linguagem c

(Parte 1 de 6)

Departamento de Sistemas de Informação Curso: Bacharelado em Sistemas de Informação

Erick Barros Nascimento

APLICAÇÃO DA PROGRAMAÇÃO DE MICROCONTROLADORES 8051 UTILIZANDO LINGUAGEM C

Paulo Afonso – BA Novembro/2009 i Erick Barros Nascimento

APLICAÇÃO DA PROGRAMAÇÃO DE MICROCONTROLADORES 8051 UTILIZANDO LINGUAGEM C

Projeto apresentado ao curso de Bacharelado em Sistemas de Informação para cumprimento da disciplina Trabalho de Conclusão de Curso - TCC, sob orientação do professor Msc. Igor Medeiros Vanderlei e co-orientação do professor Esp. Ricardo

Azevedo Porto.

Paulo Afonso – BA Novembro/2009 i Erick Barros Nascimento

APLICAÇÃO DA PROGRAMAÇÃO DE MICROCONTROLADORES 8051 UTILIZANDO LINGUAGEM C

Projeto apresentado ao curso de Bacharelado em Sistemas de Informação para cumprimento da disciplina Trabalho de Conclusão de Curso - TCC, sob orientação do professor do professor Msc. Igor Medeiros Vanderlei e co-orientação do professor Esp. Ricardo Azevedo Porto.

Aprovada por:

Paulo Afonso – BA Novembro/2009

NASCIMENTO, E. B. Aplicação da Programação de Microcontroladores 8051 utilizando Linguagem C. 2009, 80p. Monografia (Curso Bacharelado em Sistemas de Informação). Faculdade Sete de Setembro – FASETE, Paulo Afonso – BA.

Com o continuado avançado da tecnologia atualmente os Microcontroladores fazem parte das nossas vidas. As aplicações desses dispositivos são as mais variadas, sendo encontrados, por exemplo, em máquinas de lavar, televisores, DVDs, rádios, controles remotos, microondas, entretenimento, segurança, controle de acesso, etc. Esses dispositivos utilizam software que executam tarefas pré-programadas, são encontrados na maioria dos equipamentos, e na maioria das vezes, os usuários não percebem sua presença. Com a utilização da eletrônica digital nas grandes empresas, o emprego dos Microcontroladores vem sendo muito requisitado para obter um controle preciso dos processos, gerando ganho de produtividade para as empresas. Para desenvolvimento de software para Microcontroladores são necessários software e hardware específicos para cada família de Microcontrolador. Inicialmente, os Microcontroladores foram desenvolvidos para trabalharem com linguagens de programação de baixo nível, mas ao longo dos anos, esses dispositivos passaram a trabalhar com linguagens de alto nível, tornando o desenvolvimento de sistemas embarcados mais flexíveis e mais portáveis em relação ao hardware. A proposta da pesquisa está em apresentar um protótipo de um sistema embarcado funcionando na arquitetura de um Microcontrolador. Para realizar essa proposta foi utilizada pesquisa bibliográfica tendo como referências livros, artigos e sites além do uso de um KIT de programação para

Microcontroladores para mostrar o uso de linguagens de alto nível nessa arquitetura

Palavras chave: Microcontroladores, software, hardware.

iv

NASCIMENTO, E. B. Application of the Programming of Microcontrollers 8051 using Language C. 2009, 80p. Monograph (Course of Bachelor of Information Systems). Faculdade Sete de Setembro – FASETE, Paulo Afonso – BA.

of our livesThe applications of these devices are highly diverse, being found, for example,

With the continued advancement of the technology currently Microcontrollers are part in washing machines, televisions, DVDs, radios, remote controls, microwave, entertainment, security, access control, etc. These devices use software that perform pre-programmed tasks, are found in many devices, and in most cases, users do not notice their presence. With the use of digital electronics in large companies, the use of microcontrollers has been a staple for precise control of processes, generating productivity gains for companies. To develop software for microcontrollers are necessary software and hardware specific to each family of microcontroller. Initially, the microcontrollers are designed to work with programming languages, low level, but over the years, these devices have to work with high-level languages, making the development of embedded systems more flexible and more portable compared to hardware. The research proposal is to present a prototype of an embedded system running on the architecture of a microcontroller. To accomplish this proposal was used as bibliographic references and books, articles and websites in addition to using a kit for programming microcontrollers to show the use of high-level languages such architecture.

Keywords: Microcontrollers, software, hardware.

Figura 1: Lógica de funcionamento de um Sistema Embarcado18
Figura 2: Sensor de proximidade, ângulo e atuador para freios20
Figura 3: Arquitetura das Linguagens de Programação30
Figura 4: Diferenças entre Microprocessador e Microcontrolador – Nº de circuitos34
Figura 5: Modelo simplificado de uma unidade de memória de um Microcontrolador35
Figura 6:Exemplo simplificado de uma unidade de E/S39
Figura 8: Exemplo da arquitetura de Von Neumann4
Figura 9: Núcleo de um Microcontrolador da família 805145
Figura 10: Demultiplexação de dados e endereços usando o port P047
Figura 1: Comprometimento do Port P3 sendo utilizado para funções especiais48
Figura 12:Organização de ROM interna/externa em função do valor lógico do pino EA49
Figura 13: Esquema de circuito com Reset automático e Reset forçado50
Figura 14: Eclipse com perspectiva para C/C++56
Figura 15: Perspectiva ajustada para Java e QuantumDB57
Figura 16: Simulação de contagem binária de 8 bits e gravação no PORT P259
Figura 17: Tela Principal do SPI-Flash Programmer61
Figura 18: KIT8051LS em funcionamento64
Figura 19: Conexão do LCD e Potenciômetro65
Figura 20: Porta de expansão ligada ao Port P365
Figura 21: Barramento com 8 LED's65
Figura 2: Teclados tipo push6
Figura 23: Conector da alimentação e Porta serial6
Figura 24: Microcontrolador AT89S825267
Figura 25: Cooler de Ventilação69
Figura 26: Cabo Serial e Esquema da pinagem69

LISTA DE FIGURAS Figura 7: Diferença que existe entre a transmissão em série com a transmissão em paralelo.40 Figura 27: Desenho do circuito de um Microcontrolador acionando motor...........................70 vi

Tabela 1: Resumo das Funções especiais do Port P349
Tabela 2: Grandes fabricantes e principais informações sobre suas características51

vii

AD Analógico / Digital CMB Conjunto Motor Bomba DA Digital /Analógico EPROM Erasable Programmable Read Only Memory ETA Estação de Tratamento de Água GSM Global System for Mobile Communications IHM Interface Homem - Máquina ISO Organização Internacional para Padronização LED Light Emitting Diode RAM Random Access Memory ROM Read Only Memory SDCC Small Device C Compiler USB Universal Serial BUS viii

LISTA DE FIGURASv
TABELASvi
LISTA DE ABREVIATURAS E SÍMBOLOSvii
1. CONSIDERAÇÕES INICIAIS1
1.1 Introdução1
1.2 Justificativa12
1.3 Problema da Pesquisa13
1.4 Hipóteses13
1.5 Objetivos14
1.5.1 Objetivo Geral14
1.5.2 Objetivos Específicos14
1.6 Metodologia da Pesquisa15
1.7 Estrutura do Trabalho15
2. SISTEMAS EMBARCADOS17
2.1 Definições e Aplicações dos Sistemas Embarcados18
2.2 Características dos Sistemas Embarcados2
2.2.1 Interação com o ambiente2
2.2.2 Capacidade limitada de recursos23
2.2.3 Forte acoplamento entre hardware s software24
2.2.4 Importância das respostas de tempo real nos sistemas embarcados25
2.3 Linguagens de Programação para Sistemas Embarcados26
2.3.1 Linguagem de Máquina26
2.3.2 Linguagem Assembly27
2.3.3 Vantagens e Desvantagens da linguagem Assembly28
2.3.4 Linguagens de Alto Nível29
2.3.5 Linguagem C29
2.3.6 Vantagens e Desvantagens da linguagem C29
2.3.7 Linguagens de Quarta Geração30
2.3.8 Análise e escolha da linguagem30
3. MICROCONTROLADORES32
3.1 O que são os Microcontroladores3
3.2 Microcontroladores versus Microprocessadores34
3.3 Arquitetura dos Microcontroladores35
3.3.1 Unidade de Memória35
3.3.2 Unidade Central de Processamento – CPU36
3.3.3 Barramentos36
3.3.4 Unidade de Entradas e Saídas37
3.3.5 Comunicação Serial dos Microcontroladores39
3.3.6 CLOCK – O relógio do Microcontrolador40
3.3.7 TIMER41
3.3.8 WatchDog – Cão de Guarda42
3.4 O Microcontrolador 805143
3.4.1 Arquitetura física dos Microcontroladores 80514
3.4.2 Organização da Pinagem dos Microcontroladores 805146
3.4.2.1 Port P046
3.4.2.2 Ports uso geral para E/S e uso das memórias internas e externas-P1,P2,P347
3.4.4 Microcontroladores 8051 mais potentes – Arquitetura ISAC52
4. FERRAMENTAS DE PROGRAMAÇÃO PARA 805154
4.1 Software de Desenvolvimento para Microcontroladores5
4.1.1 Eclipse5
4.1.2 Small Device C Compiler – SDCC57
4.1.3 PDS – 5258
4.1.4 SPI – Flash Programmer60
4.1.4.1 Os lock-bits62
4.2 KIT de Programação 8051LS62
4.2.1 O KIT8051LS63
4.2.2 Os seus componentes64
4.3 Protótipo de teste do Microcontrolador 805167
4.3.1 Sistemática do protótipo68
4.3.2 Especificação técnica da parte física do protótipo69
5. CONSIDERAÇÕES FINAIS72
5.1 Conclusão72

CAPÍTULO 1 CONSIDERAÇÕES INICIAIS

1. CONSIDERAÇÕES INICIAIS

1.1 Introdução

Com o continuado avanço da tecnologia, atualmente os Microcontroladores fazem parte de nossas vidas. Segundo Amadeu Souza (21-), cada um de nós tem acesso em média a nove Microcontroladores por dia. As aplicações destes dispositivos são as mais variadas, sendo utilizadas, por exemplo, em máquinas de lavar, televisores, DVDs, rádios, controles remotos, microondas, entretenimento, segurança, controle de acesso, etc., acompanhado esses Microcontroladores estão software instalados nos mesmos, executando tarefas que foram préprogramadas em linguagens de programação. As combinações entre esses dois fatores denominam-se os Sistemas Embarcados.

Sistemas Embarcados podem ser desde um sistema para uma boneca cantar, até mesmo um sistema para controlar um elevador em um prédio. Basicamente, qualquer equipamento autônomo que não seja um computador, acaba sendo considerado um Sistema Embarcado. (SCHIMIDT 2007)

Segundo Sica (2006), um Microcontrolador é um computador-num-chip, contendo um processador, memória e funções de entrada/saída. É um microprocessador que enfatiza a alta integração, em contraste com os microprocessadores de uso geral (do tipo usado em computadores pessoais). Além dos componentes lógicos e aritméticos, usuais de um microprocessador de uso geral, o Microcontrolador integra no próprio chip elementos adicionais tais como memória RAM, EEPROM ou Memória FLASH para armazenamento de dados ou programas, dispositivos periféricos e interfaces de E/S que podem ir de um simples pino digital do componente a uma interface USB ou Ethernet nos mais avançados. O software escrito para Sistemas Embarcados, ainda segundo Sica (2006), é muitas vezes chamado de firmware e não são armazenados em discos rígidos.

Logo, os Sistemas Embarcados são sistemas que executam funções dedicadas, ou seja, são responsáveis por uma função específica ou um conjunto restrito de funções específicas e co-relacionadas. Estão presentes na maioria dos equipamentos eletrônicos, embora em alguns casos o usuário não chega a perceber sua presença.

Grande parte dos Microcontroladores utiliza a linguagem de programação Assembly, o propósito deste projeto é apresentar os conceitos de desenvolvimento de software para Sistemas Embarcados, utilizando os Microcontroladores da família 8051, mais especificamente com o Microcontrolador da ATMEL, com a linguagem de programação C e o compilador freeware SDCC. Serão apresentados detalhes do hardware, da linguagem de programação e os resultados as experiências práticas do desenvolvimento de um protótipo neste ambiente.

1.2 Justificativa

A automação de processos e o monitoramento remoto de equipamentos são tecnologias que garantem ganho de produção devido ao controle preciso do processo. Com o avanço da tecnologia e a utilização da eletrônica digital por grande parte das empresas, o emprego de Microcontroladores vêm sendo muito requisitado para um melhor desenvolvimento da produção, diminuindo os custos e trazendo benefícios para as empresas que utilizam esse sistema. LOPES (2006/2007)

Como já dito anteriormente, os Microcontroladores são chips que tem um processador, pinos de entradas/saídas e memória. Com o barateamento de Circuitos Integrados – CI e o surgimento dos microprocessadores (CPUs) mais poderosos, começou-se a usar as CPUs mais simples para implementar tarefas dedicadas. Estas aplicações tinham custo dependente da CPU e dos periféricos (ROM, RAM, Portas, A/D, D/A, etc.) e também da quantidade de conexões e do tamanho da placa. Para reduzir o custo, começou a surgir a idéia de colocar todos estes periféricos dentro do chip da CPU, transformando-os nos Sistemas Embarcados. BARRETO (2006)

No inicio da programação desses chips – CPU, a linguagem utilizada era Assembly. A linguagem Assembly é orientada a máquina (ou melhor, para o processador), é necessário conhecer a estrutura do processador para poder programar em Assembly, tornando em alguns casos o desenvolvimento dos sistemas um pouco mais difícil e pouco portável. Essa linguagem utiliza instruções de baixo nível que operam diretamente com registradores e memórias, ou seja, as instruções são executadas diretamente pelo processador.

Atualmente, os Microcontroladores estão sendo desenvolvidos para executarem software em linguagens de alto nível, os software desenvolvidos em linguagens deste tipo, mais especificamente C, terão mais flexibilidade e portabilidade, passando uma sintaxe mais próxima da realidade humana, permitindo a manipulação dos dados nas mais diversas formas

(números inteiros, reais, vetores, etc.), enquanto Assembly trabalha com linguagem pura de máquina bits, bytes, palavras em memória, etc.

Logo, a contribuição que este projeto trará para seus leitores, é conhecer a automação de processos e/ou equipamentos que utilizam este tipo de programação. Serão explanados conceitos de hardware e software para Microcontroladores da família 8051 e os conceitos exemplificados através de uma aplicação exemplo para conhecimento de todos que se interessem por assuntos ligados a Automação Industrial, Robótica e Eletrônica Digital.

1.3 Problema da Pesquisa

Como explicar fundamentos teóricos e práticos sobre os Microcontroladores? Qual KIT de programação que será usado para exemplificar os exemplos práticos?

Este tipo de Microcontrolador possui alguma Interface Homem Máquina – IHM?

Será mostrado um exemplo na linguagem de programação Assembly, visto que o trabalho que será apresentado utilizará a linguagem C?

1.4 Hipóteses

KIT 8051 com Placa ISP (In-System Programmable) é um KIT de desenvolvimento de software para Microcontroladores, sua tecnologia de Dispositivos Montados em Superfície – SMD aumenta a resistência mecânica, reduzindo o tamanho físico da placa, esses fatores resultam em aumento da confiabilidade dos equipamentos que serão utilizados. Sua programação através da porta USB, evita a necessidade de mudança de jumpers1 para configuração de portas, etc.

1 Segundo Wikipédia, Jumper é uma ligação móvel entre dois pontos de um circuito eletrônico. É, geralmente, uma pequena peça plástica que contém um metal no seu interior, responsável pela condução de eletricidade.

Para exemplificar a saída de informações dos software gravados do Microcontrolador

Atmel AT89S8251 e/ou AT89S8252, seria necessário a utilização de uma fonte gráfica para visualização, visto que este KIT disponibiliza um conector de pinos onde pode ser ligado um display de LCD 2x6, LCD 4x16 com ou sem Back Light2.

Poderemos utilizar o Compilador C para Dispositivos Pequenos, Small Device C

Compiler – SDCC, que é open source, parcialmente portável, para Microcontroladores. Ele contém funções do tipo: montador, depurador ou simulador.

1.5 Objetivos

1.5.1 Objetivo Geral

(Parte 1 de 6)

Comentários