CONVERSOR A-D E LCD

download CONVERSOR A-D E LCD

If you can't read please download the document

description

pic,programacao,lcd,microcontrolador

Transcript of CONVERSOR A-D E LCD

PIC: Conversor A/D e LCD

OBJETIVOS

Compreender a operao do conversor A/D do PIC; Aprender a utilizar as funes do drive de LCD ; Desenvolver uma IHM usando o LCD e o teclado da placa de experimentos;

CONVERSOR A/D O mdulo do conversor A/D possui 8 entradas analgicas, que possuem um capacitor de sampleand-hold. A sada do sample-and-hold conectada a entrada do conversor A/D a partir de um multiplex 8 x 1. O conversor A/D gera uma palavra binria de 10 bits para representar o valor de tenso na entrada analgica selecionada. O mdulo A/D tem duas entradas de tenso de referncia (alta e baixa), que so selecionadas por software, entre algumas opes de combinao pr-estabelecidas. Uma caracterstica apenas presente no mdulo conversor A/D que o mesmo pode operar mesmo o PIC estando no modo SLEEP. Para operar neste modo o sinal de clock do conversor A/D (CAD) deve ser derivado do oscilador RC interno do PIC. O conversor A/D possui quatro registradores: Registrador do byte mais significado do resultado da converso (ADRESH); Registrador do byte menos significado do resultado da converso (ADRESL); Registrador de controle 0 (ADCON0) e Registrador de controle 1. Os registradores ADRESH:ADRESL contm os 10 bits do resultado da converso. Quando a mesma concluda, o resultado carregado nesses registradores, o bit GO/DONE (bit 2 do Reg. ADCON0) resetado e o flag de interrupo, bit ADIF, setado. Aps a configurao do mdulo como desejado, o canal cujo sinal analgico deve ser convertido, deve ser selecionado antes da converso ser iniciada. Os canais de entrada analgicos devem ter seus correspondentes bits TRIS ajustado para que os pinos das portas A e E se comportem como entradas. Aps o perodo de aquisio do sinal ter finalizado (aproximadamente 20s) a converso A/D pode ser iniciada conforme os seguintes passos: 1. Configure o mdulo A/D Configure os pinos de entrada analgica, as tenses de referncia e os pinos de I/O digital (ADCON1); Selecione o canal de entrada analgica (ADCON0); Selecione a freqncia do sinal de clock do conversor A/D (ADCON0); Ative o mdulo A/D; 2. Configure a interrupo do mdulo A/D (se desejado); Resete o bit ADIF; Sete o bit ADIE; Sete o bit GIE; 3. Aguarde o tempo de aquisio requerido; 4. Inicie a converso

1

Sete o bit GO/DONE (ADCON0) 5. Aguarde o tempo de converso ter transcorrido; Realize um POLLING no bit GO/DONE, verificando se o seu valor zero (indicativo de fim de converso A/D); ou aguarde pela interrupo gerada pelo mdulo A/D ao fim da converso; 6. Leia o par de registradores (ADRESH:ADRESL), resete o bit ADIF se a interrupo do conversor A/D est sendo utilizada; 7. Para realizar uma nova converso retorne ao passo 1 ou 2 (antes de uma nova converso ser iniciada, deve ser aguardado um tempo de 2TAD, que o tempo de converso por bit, cujo valor definido na tabela 1). O conversor A/D necessita de no mnimo 12 TAD para realizar uma converso de 10 bits. A fonte do clock do conversor A/D selecionada por software entre as possibilidades abaixo: 2Tosc 8Tosc 32Tosc Oscilador RC interno Para uma converso correta, o clock do conversor A/D deve ser selecionado para garantir um TAD mnimo de 1.6s. A tabela 1 mostra os valores de TAD em funo da seleo da fonte do clock. Tabela1 TAD x Mxima freqncia de converso

Se o bit GO/DONE for resetado durante uma converso, esta ser abortada. Os registradores de resultado do mdulo A/D no sero atualizados com a parcialmente concluda converso. Assim, os registradores ADRESH:ADRESL continuaram armazenando o valor da ltima converso concluda (ou o ltimo valor escrito para os registradores ADRESH:ADRESL). Aps uma converso ser abortada, um tempo de 2TAD necessrio antes de uma nova converso ser iniciada. Aps este tempo, a aquisio do canal selecionado automaticamente iniciada. O par de registradores ADRESH:ADRESL comporta 16 bits, assim, o valor convertido de 10 bits pode ser justificado a direita ou esquerda, de acordo com o bit seleo de formato do conversor A/D (ADFM), que controla a justificao. Os bits extras no utilizados so carregados com 0 (zeros). Quando o mdulo A/D no estiver sendo utilizado, os registradores ADRESH:ADRESL podem ser usados como dois registradores de propsito geral de 8 bits.

2

Justificao do resultado da converso A/D

Diagrama de blocos do conversor A/D

3

Registrador ADCON0 - Controla a operao do mdulo A/D.

4

Registrador ADCON1 Configura a funo dos pinos das portas (A e E)

Os registradores ADCON1 e TRIS controlam a operao dos pinos das portas A/D. Os pinos das portas que sero entradas analgicas devem ter seus correspondentes bits TRIS setados. Se o bit est resetado, o nvel de tenso da sada digital ser convertido. A operao do conversor A/D independe do estado dos bits CHS2:CHS0 e dos bits TRIS Observaes: 1 Quando o registrador da porta lido, qualquer pino configurado como um canal de entrada analgica ser lido como zero (nvel baixo). Pinos configurados como entradas digitais iro se converter em entradas analgicas. Nveis analgicos em uma entrada configurada como digital, no afetaro a preciso da converso. 2 Nveis analgicos em qualquer pino que definido como uma entrada digital (incluindo os pinos AN7:AN0) podem fazer com que o buffer de entrada consuma corrente que est fora das especificaes do dispositivo.

5

Registradores associados com o mdulo do conversor A/D

As rotinas abaixo implementam as funes utilizadas para escrever caracteres e/ou mensagens em um LCD (Display de Cristal Lquido) de 16 colunas por 2 linhas.

/*===================================================================== ======================================================================= ARQUIVO - DRIVER: LCD_16x2_LIB.C DATA DE CRIAO: 03/11/2003 REVISO: 1.0 DATA DA ULTIMA REV: 03/12/2004 ULTIMA REV: 1.1 MICROCONTROLADOR: FAMILIA PIC FUNO: DESCRIO: BIBLIOTECA DE MANIPULAO DO DISPLAY DE CRISTAL LQUIDO (LCD 16X2). AUTOR: TC. LCIO HLIO

======================================================================= =====================================================================*/

#ifndef #define #define #define #define #define #define

CS_LCD CS_LCD RS_LCD D4_LCD D5_LCD D6_LCD D7_LCD PIN_E0 PIN_E1 PIN_D4 PIN_D5 PIN_D6 PIN_D7 // Pino de Controle "CS - CHIP //SELECT" do LCD --------- (pino 6). // Pino de Controle "RS - REGISTER //SELECT" do LCD ----- (pino 4). // Pino do Barramento de Dados "D4 //4" do LCD --- (pino 11). // Pino do Barramento de Dados "D5 //5" do LCD --- (pino 12). // Pino do Barramento de Dados "D6 //6" do LCD --- (pino 13). // Pino do Barramento de Dados "D7 //7" do LCD --- (pino 14).

Dado Dado Dado Dado

6

#endif #define lcd_type 2 #define lcd_seg_lin 0x40 // 0=5x7, 1=5x10, 2=2 linhas // Endereo da segunda linha na RAM do //LCD

// A constante abaixo define a seqncia de inicializao do LCD. byte CONST seq_ini_lcd[4] = {0x20 | (lcd_type > 4); // Envia a primeira parte do byte. envia_nibble_lcd(dado & 0x0f); // Envia a segunda parte do byte. }

/*===================================================================== FUNO: PARMETROS: RETORNO: DESCRIO: INI_LCD() BYTE, NENHUM. BYTE, NENHUM. ROTINA DE INICIALIZAO DO LCD.

=====================================================================*/ void ini_lcd_16x2() { byte conta; output_low(CS_LCD); output_low(D4_LCD); output_low(D6_LCD); output_low(D7_LCD); output_low(RS_LCD);

output_low(CS_LCD); delay_ms(15); // Envia uma seqncia de 3 vezes o valor "0x03" e depois o valor // "0x02" para configurar o barramento do LCD no modo de 4 bits. for(conta = 1 ;conta