14
1 SISTEMAS MICROPROCESSADOS – SMP1 – 2EN Introdução ao Mikro C Tela Inicial

Tutorial Rapido MikroC Partes 12 e 3

Embed Size (px)

Citation preview

  • 1

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Introduo ao Mikro C

    Tela Inicial

  • 2

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Criando um Projeto

    Para criar um projeto novo, bastar ir ao menu e em seguida .

    Project Name: Nome do Projeto. Project Path: Caminho e pasta onde ser gravado o projeto. Description: Opcional. aqui que faremos uma breve descrio do projeto. Device: Aqui definimos o microcontrolador que estamos utilizando. No nosso caso 18F4520. Clock: Aqui definimos o clock do circuito de oscilao. No nosso exemplo utilizaremos 4Mhz. Devices Flags: (Fusveis ou bits de configurao): Aqui configuramos vrias funes do microcontrolador. Exemplo. Tipo de oscilador, WDT, RST, etc.

  • 3

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Tipo de Clock:

    Valores de Capcitores que devem ser acopladas ao cistal.

    No nosso caso vamos utilizar cristal de 4Mhz, portanto vamos selecionar o tipo de oscilao no Device Flags como XT

    PWRTEN: o temporizador de Power-UP, que faz o microcontrolador aguarda certo tempo (72ms) a fim de aguarda a estabilizao do circuito oscilador. Neste perodo, o microcontrolador fica inoperante. Vamos ativar esse fusvel.

    Todos os demais fusveis devero estar desligados.

  • 4

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Primeiro Projeto

    Inicialmente deve-se criar um projeto. Project name: Pisca-Pisca Project Path: D:/lab../Proj01 Description: Programa circuito oscilador pisca-led Device: P18F4520 Clock: 004.000000 Device Flags: _XT_ON, _PWRT_ON, _WDT_ON, WDT_OFF, _LVP_OFF, _CP_OFF

    Circuito: Desenhar o circuito no Proteus ISIS

  • 5

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Aps o desenho do esquemtico, escrever o cdigo abaixo:

    /****************************************************************************************** Sistemas Microprocessados 1

    Turma 2EN Aula 1

    Objetivo: Configuraes das portas e acesso das mesma com funo de tempo ******************************************************************************************/

    void main( )

    { trisd= 0; //configurada todo o port d como sada portd = 0; //todo o portd colocado em nvel 0

    while(1) //loop infinito { portd.f0=1; //Ativa a sada RD0 delay_ms(1000); //Aguarda 1 segundo portd.f0=0; //Desliga a sada RD0

    delay_ms(1000); } }

    Em seguida, devemos compilar o cdigo. Para compilar, devemos pressionar CTRL+F9 ou clicar em menu em seguida , conforme figura abaixo.

  • 6

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Este campo apresenta os resultados da compilao. Quando h erro, as mensagens esto descritas em vermelho.

    No apresentando nenhum erro na tela de mensagens, dever aparecer a seguinte mensagem na cor verde:

    SUCCESS (RELEASE BUILD)

    Essa mensagem garante que o programa foi compilado e que foi gerado o cdigo de mquina para ser gravado no microcontrolador arquivo.HEX.

    Agora s carregar o arquivo no projeto do Proteus ISIS.

    Exerccio: 1) Faa um programa que acenda os leds do portd em sequencia (RD0 a

    RD7) progressivamente com um intervalo de tempo de 500ms. 2) Faa um programa que acenda os leds RD0, RD2, RD4 e RD6 juntos

    por 1 segundo. Em seguida, apague-os e ligue os leds RD1, RD3, RD5 e RD7 por 2 segundos e apague-os. Em seguida, o ciclo se inicia novamente.

  • 7

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Vamos estudar um novo programa.

    /****************************************************************************************** Sistemas Microprocessados 1

    Turma 2EN Aula 2

    Objetivo: Utilizar a diretiva define ******************************************************************************************/

    #define led1 portd.f1; //define o led1 como portd.f1 #define led2 portd.f2; //define o led2 como portd.f2

    void main( )

    { trisd= 0; //configurada todo o port d como sada portd = 0; //todo o portd colocado em nvel 0

    while(1) //loop infinito { led1=1; //Liga o led1 delay_ms(1000); //Aguarda 1 segundo led1=0; //Desliga o led1

    delay_ms(1000); //Aguarda 1 segundo led2=1; //Liga o led2 delay_ms(1000); //Aguarda 1 segundo led2=0; //Desliga o led2 delay_ms(1000); //Aguarda 1 segundo

    } }

  • 8

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Acionamento de botes.

    Para estudar o acionamento dos botes, vamos alterar o nosso hardware, no Proteus, conforme esquemtico da placa CuscoPic.

  • 9

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    /****************************************************************************************** Sistemas Microprocessados 1

    Turma 2EN Aula 3

    Objetivo: Lendo as entradas e atuando nas sadas utilizando IF-ELSE ******************************************************************************************/

    void main( )

    { trisd= 0b00000001; //configurada RD0 como entrada e o restante

    //como sada portd = 0; //todo o portd colocado em nvel 0

    while(1) //loop infinito { if(portd.f0==0) //testa se RD0 est em nvel baixo portd=0; //se sim, todo portd em nivel baixo else portd.f7=1; //se RD0=1 , RD7 ativado

    } }

  • 10

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Parte 2

    NOTA: Operadores matemticos:

    Exerccios:

    1) Faa um programa que ligue um LED somente quando as duas entradas estiverem ativas.

    2) Faa um programa que: a) Ao acionar B1, o Led1 acende. b) Ao acionar B2, o Led1 apaga.

  • 11

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    c) Ao acionar B3, o Led1 pisca em intervalo de tempo de 1000ms. d) Ao acionar B4, o Led1 para de piscar.

    3) Imagine que vamos montar um circuito que controle atravs de 4 chaves (ligar/desligar) a iluminao de uma casa. Esse controle ficar no quarto do casal, ao lado da cama, podendo com praticidade controlar/monitorar a iluminao da casa. Ento teremos as chaves em RD0, RD1, RD2 e RD3 e as sadas para acionar os rels em RD4, RD5, RD6 e RD7. Pressionado RD1 acende iluminao da sala e pressionado RD1 novamente apaga.

    Idem para RD2 (cozinha), RD3 (quarto 1) e RD4 (quarto 2).

    4) No Proteus ISIS, revise a interligao acrescentando: a) 02 sadas a rele no portC (C0 e C1) b) 02 sadas para controle de motor CC (com L293 C2 e C3) c) 04 sadas a transistor TIP122 com sinalizao (C4 a C7)

    Agora faa o seguinte programa: a) Pressionando o boto B1 ligar o motor em sentido horrio; b) Pressionando o Boto B2 ligar o motor em sentido anti-horrio; c) Pressionando o Boto B3, parar o motor.

  • 12

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    Parte-3

    Display de Cristal Lquido LCD

    O Display de Cristal Lquido LCD um dos recursos mais interessantes de se trabalhar quando se trata de microcontroladores, pois oferece o recurso de integrao entre o processo e o usurio. Neste sentindo, muito importante estudarmos o funcionamento desse recurso para que possamos criar aplicaes que sejam de fcil interao com o usurio.

    Abaixo veremos um quadro com a descrio da Pinagem.

    Interface no MikroC

    O MikroC fornece uma biblioteca de instrues completa para que possamos utilizar um display LCD de forma fcil e rpida. No Quadro abaixo, a lista de instrues mais utilizadas.

  • 13

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    No mikroC podemos utilizar o LCD no modo 4bits ou 8bits. No nosso caso utilizaremos o LCD no modo 4bits. A interligao dos pinos do LCD no microcontrolador dever ser:

    R/S = RB1, EN = RB0, R/W=RB2, dados = RB4, RB5, RB6 e RB7

    O comando inicial para o LCD ser:

    lcd_config(&portb,1,0,2,7,6,5,4); NOTA: Observar atentamente a configurao inicial. Caso algum pino esteja invertido, o LCD no ir funcionar.

  • 14

    SISTEMAS MICROPROCESSADOS SMP1 2EN

    /****************************************************************************************** Sistemas Microprocessados 1

    Turma 2EN Aula 4

    Objetivo: Configurar e enviar uma mensagem de texto ao LCD ******************************************************************************************/

    void main() {

    trisb=0; lcd_config(&portb,1,0,2,7,6,5,4); //Configura o LCD lcd_cmd(Lcd_Cursor_off); // Desliga o cursor lcd_cmd(lcd_clear); //Limpa o LCD

    while(1) {

    Lcd_out(1, 1,"SENAI CAMPINAS");// Escreve o texto linha 1 coluna 1 Lcd_out(2, 1,"3EN - SMP"); // Escreve o texto 3EN - SMP linha 2 coluna 1 delay_ms (3000);// Aguarda 3seg. lcd_cmd(lcd_clear);// Limpa o LCD delay_ms (500);// Aguarda 0,5seg. Lcd_out(1, 1,"AULA DE");// Escreve o texto na linha 1 coluna 1 Lcd_out(2, 1,"LCD");// Escreve o texto na linha 2 coluna 2 delay_ms (2000); lcd_cmd(lcd_clear);

    } }

    Exercicio.

    Faa um programa que, ao pressionar um boto (D0 a D7) aparecer uma mensagem no LCD informando qual o boto que foi pressionado e simultaneamente acenda um LED (C0 a C7). NOTA: monte o circuito no Proteus ISIS.