Programação microcontroladores 8051 utilizando linguagem c - Monografia
Erick Barrosrow
Erick Barros Nascimento | comentários
Arquivado no curso de Sistemas de Informação na FASETE
Departamento de Sistemas de Informação Curso: Bacharelado em Sistemas de Informação
APLICAÇÃO DA PROGRAMAÇÃO DE MICROCONTROLADORES 8051 UTILIZANDO LINGUAGEM C
Paulo Afonso – BA Novembro/2009 i Erick Barros Nascimento
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.
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.
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
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 lives The 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.
Figura 1: Lógica de funcionamento de um Sistema Embarcado 18
Figura 2: Sensor de proximidade, ângulo e atuador para freios 20
Figura 3: Arquitetura das Linguagens de Programação 30
Figura 4: Diferenças entre Microprocessador e Microcontrolador – Nº de circuitos 34
Figura 5: Modelo simplificado de uma unidade de memória de um Microcontrolador 35
Figura 6:Exemplo simplificado de uma unidade de E/S 39
Figura 8: Exemplo da arquitetura de Von Neumann 4
Figura 9: Núcleo de um Microcontrolador da família 8051 45
Figura 10: Demultiplexação de dados e endereços usando o port P0 47
Figura 1: Comprometimento do Port P3 sendo utilizado para funções especiais 48
Figura 12:Organização de ROM interna/externa em função do valor lógico do pino EA 49
Figura 13: Esquema de circuito com Reset automático e Reset forçado 50
Figura 14: Eclipse com perspectiva para C/C++ 56
Figura 15: Perspectiva ajustada para Java e QuantumDB 57
Figura 16: Simulação de contagem binária de 8 bits e gravação no PORT P2 59
Figura 17: Tela Principal do SPI-Flash Programmer 61
Figura 18: KIT8051LS em funcionamento 64
Figura 19: Conexão do LCD e Potenciômetro 65
Figura 20: Porta de expansão ligada ao Port P3 65
Figura 21: Barramento com 8 LED's 65
Figura 2: Teclados tipo push 6
Figura 23: Conector da alimentação e Porta serial 6
Figura 24: Microcontrolador AT89S8252 67
Figura 25: Cooler de Ventilação 69
Figura 26: Cabo Serial e Esquema da pinagem 69
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 P3 49
Tabela 2: Grandes fabricantes e principais informações sobre suas características 51
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
TABELAS vi
LISTA DE ABREVIATURAS E SÍMBOLOS vii
1.3 Problema da Pesquisa 13
1.4 Hipóteses 13
1.5.1 Objetivo Geral 14
1.6 Metodologia da Pesquisa 15
1.7 Estrutura do Trabalho 15
2. SISTEMAS EMBARCADOS 17
2.1 Definições e Aplicações dos Sistemas Embarcados 18
2.2 Características dos Sistemas Embarcados 2
2.2.1 Interação com o ambiente 2
2.2.2 Capacidade limitada de recursos 23
2.2.3 Forte acoplamento entre hardware s software 24
2.2.4 Importância das respostas de tempo real nos sistemas embarcados 25
2.3 Linguagens de Programação para Sistemas Embarcados 26
2.3.1 Linguagem de Máquina 26
2.3.2 Linguagem Assembly 27
2.3.3 Vantagens e Desvantagens da linguagem Assembly 28
2.3.4 Linguagens de Alto Nível 29
2.3.5 Linguagem C 29
2.3.6 Vantagens e Desvantagens da linguagem C 29
2.3.7 Linguagens de Quarta Geração 30
2.3.8 Análise e escolha da linguagem 30
3. MICROCONTROLADORES 32
3.1 O que são os Microcontroladores 3
3.2 Microcontroladores versus Microprocessadores 34
3.3 Arquitetura dos Microcontroladores 35
3.3.1 Unidade de Memória 35
3.3.2 Unidade Central de Processamento – CPU 36
3.3.3 Barramentos 36
3.3.4 Unidade de Entradas e Saídas 37
3.3.5 Comunicação Serial dos Microcontroladores 39
3.3.6 CLOCK – O relógio do Microcontrolador 40
3.3.7 TIMER 41
3.3.8 WatchDog – Cão de Guarda 42
3.4 O Microcontrolador 8051 43
3.4.1 Arquitetura física dos Microcontroladores 8051 4
3.4.2 Organização da Pinagem dos Microcontroladores 8051 46
3.4.2.1 Port P0 46
3.4.2.2 Ports uso geral para E/S e uso das memórias internas e externas-P1,P2,P3 47
3.4.4 Microcontroladores 8051 mais potentes – Arquitetura ISAC 52
4. FERRAMENTAS DE PROGRAMAÇÃO PARA 8051 54
4.1 Software de Desenvolvimento para Microcontroladores 5
4.1.1 Eclipse 5
4.1.2 Small Device C Compiler – SDCC 57
4.1.3 PDS – 52 58
4.1.4 SPI – Flash Programmer 60
4.1.4.1 Os lock-bits 62
4.2 KIT de Programação 8051LS 62
4.2.1 O KIT8051LS 63
4.2.2 Os seus componentes 64
4.3 Protótipo de teste do Microcontrolador 8051 67
4.3.1 Sistemática do protótipo 68
4.3.2 Especificação técnica da parte física do protótipo 69
5. CONSIDERAÇÕES FINAIS 72
5.1 Conclusão 72
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.
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.
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?
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.