quarta-feira, 17 de outubro de 2012

Lista Material para hardware básico AT89S51

Lista de Material para PCI AT89S52 2010_2_USB
Valor Descrição       QTD              




100nF Capacitor Cerâmico 1 C4
10uF 50V Capacitor Eletrolítico 5 C1
12MHz Cristal 1 X1
1N4004 Diodo 1 D1
33pF /50V Capacitor Cerâmico 2 C1 E C2
7805 TO-220A 1 U1
CI AT89S52 DIP-40 1 IC1
CNC  Fêmea 90º solda placa 1 CN1
Max232  Conversor de Interface 1 IC2
HEADER 6X2 Barra dupla 40 pinos 1 SV1,SV2,SV3,SV4
LED LED 3mm  1 LD1 
Soquete soquete 40 pinos 1 IC1
Soquete soquete 16 pinos 1 IC2
Dissipador Dissipador para TO-220A 1
p4 solda placa CN2

Circuito Básico AT89S51

Ferramentas para Microcontroladores

http://www.4shared.com/file/h1GJ8fV6/KEIL_C51_v816a.html

terça-feira, 2 de outubro de 2012

Programa para LCD


 #include <REGX52.H>

#define LCD_data P2
#define LCD_rs P1_0
#define LCD_rw P1_1
#define LCD_en P1_2


void LCD_busy(void);
void LCD_poweron(void);
void LCD_command(unsigned char var);
void LCD_senddata(unsigned char var);
void LCD_sendstring(unsigned char *var);
void LCD_init(void);

void main(void)
{
        unsigned char msg[] ="Escola America";
        LCD_poweron();    // tempo de 15ms
                LCD_init();
                LCD_command (0x80);     // Seta endereço de comando no CGRAM do LCD
       LCD_sendstring(msg);
                while(1);
}

void LCD_busy()
{
    unsigned char i,j;
        for(i=0;i<50;i++)
                for(j=0;j<255;j++); //tempos para escrever no display
}
void LCD_poweron()
{
unsigned int i;
for (i=0;i<22500; i++); //tempo  que define velocidade da mensagem
}
void LCD_command(unsigned char var)
{
     LCD_data  = var;      //Function set: define par o lcd duas linhas, 8-bit, e tamanho do caracter 5x8 dots
     LCD_rs   = 0;        //Seleta comando RS comand register
     LCD_rw   = 0;        //instruçao de registro de leitura e escrita
     LCD_en   = 1;        //habilita em 1 desabilita em 0 Enable H->L
     LCD_en   = 0;
     LCD_busy();          //espera o lcd  processar suas informaçoes
}

void LCD_sendstring(unsigned char *var)
{
     while(*var)              //espera fim da string - till string ends
       LCD_senddata(*var++);  //envia os caracteres uma vez - send characters one by one
}

void LCD_senddata(unsigned char var)
{
     P2  = var;      //Coloca os dados 0 a7 na P2 - Function set: 2 Line, 8-bit, 5x7 dots
     LCD_rs   = 1;        //Seleciona o registro de dados - Selected data register
     LCD_rw   = 0;        //Seleciona LCD para escrever - We are writing
     LCD_en   = 1;        //habilita LCD - Enable H->L
     LCD_en   = 0;
     LCD_busy();          //Espera o lcd processar seus dados - Wait for LCD to process the command
}

void LCD_init(void)
{
     LCD_data = 0x38;     //Function set: 2 Line, 8-bit, 5x8 dots
     LCD_rs   = 0;        //Selected command register
     LCD_rw   = 0;        //We are writing in data register
     LCD_en   = 1;        //Enable H->L
     LCD_en   = 0;
     LCD_busy();          //Wait for LCD to process the command
     LCD_data  = 0x0F;     //Display ligado e cursor piscando - Display on, Curson blinking command
     LCD_rs   = 0;        //Selected command register
     LCD_rw   = 0;        //We are writing in data register
     LCD_en   = 1;        //Enable H->L
     LCD_en   = 0;
     LCD_busy();          //Wait for LCD to process the command
     LCD_data  = 0x01;     //limpa lcd - Clear LCD
     LCD_rs   = 0;        //Selected command register
     LCD_rw   = 0;        //We are writing in data register
     LCD_en   = 1;        //Enable H->L
     LCD_en   = 0;
     LCD_busy();          //Wait for LCD to process the command
     LCD_data  = 0x06;     //Entra no modo deslocamento dos caracterres - Entry mode, auto increment with no shift
     LCD_rs   = 0;        //Selected command register
     LCD_rw   = 0;        //We are writing in data register
     LCD_en   = 1;        //Enable H->L
         LCD_en   = 0;        //Enable H->L
     LCD_busy();
}

quarta-feira, 22 de agosto de 2012

Microcontrolador


4) TERMOS IMPORTANTES DE ELETRÔNICA DIGITAL

4.1) BUFFER: Em geral, chamamos de buffer o circuito que tem por objetivo o armazenamento temporário de informações.

4.2) DRIVER: Amplificador de corrente. Usado quando temos que ampliar a capacidade de fornecimento de uma porta.

4.3) FIRMWARE 
: Programa associado a um hardware para a execução de funções específicas. Ex: programa gravado em  eprom

4.4) TRI-STATE 
: Nome dado, quando o sistema está fisicamente ligado, porém não interfere no sistema devido a alta resistência apresentada.

4.5) LATCH 
: Componente eletrônico que tem a função de “trava” de informações. O latch funciona como uma porta, que estando ativa, deixa passar a informação presente em suas entradas, e se inativa, faz com que a informação na saída não se altere independente das alterações na entrada.

4.6) MAPEAMENTO REDUNDANTE 
: Cada endereço decodificado não é único. O decodificador é projetado para separar apenas os dispositivos entre si. Este tipo apresenta hardware menos complexo.

4.7) MAPEAMENTO NÃO REDUNDANTE           
: Cada endereço decodificado é único. Constrói-se o decodificador utilizando o menor espaço de memória. Este tipo de decodificação necessita de um hardware bastante complexo.

4.8) CHIP SELECT (/CS): 
Este pino está presente na grande maioria dos dispositivos associados a microprocessadores. Como todos os dispositivos (EPROM, RAM, I/O) estão ligados à via de dados (D0 ... D7), os mesmos devem estar sempre em alta impedância para evitar que enquanto um bit esteja em “0”, outro esteja em “1”, ocasionando um conflito e até mesmo danificando o sistema.Normalmente todos os dispositivos estão com o /CS em “1”, e somente irá a “0”aquele dispositivo que está sendo acionado e apenas durante o tempo necessário.Estes tempos e esta seleção são efetuados por “circuitos lógicos” conhecidos como DECODIFICADORES DE ENDEREÇO

Linguagem C para microcontroladot


PROGRAMAÇÃO “C” PARA O MICROCONTROLADOR 8051


Existem basicamente três linguagens de programação que são utilizadas com o 8051,o BASIC, ASSEMBLY e o C. Nos últimos cinco anos, a programação de microcontroladores em linguagem C tem sido adotada pela maioria das empresas devido as facilidades para programação e ao nível de portabilidade apresentada.Muitos livros ensinam a programação padrão ANSI C, porém devemos tomar o cuidado ao utilizar este tipo de bibliografia, pois ela aborda a programação para o PC.Funções do tipo “printf”, “scanf”, “sprintf” entre outras, geralmente não estão disponíveis para o projetista ou apresentam um comportamento diferente quando utilizamos o compilador para microcontrolador. No nosso curso, será abordado ocompilador Keil uvision 3 ou 4.Outro detalhe importante é que no 8051 podemos utilizar uma grande variedade de modos de acesso a memória. Como o microcontrolador suporta acesso a BIT ,memória RAM interna, memória RAM externa devemos ficar atento ao padrão adotado pelo compilador( Keil) ou especificar onde desejamos que a memória seja reservada.

material de apoio para microcontrolador 8051


 MODOS DE ATENDIMENTO DE I/O DE UM CIRCUITO DIGITAL

 Pooling 
 Neste tipo de atendimento, a CPU fica constantemente questionando o dispositivo de I/O se o mesmo necessita receber ou enviar um dado.Este tipo de atendimento é fácil de implementar, porém desperdiça o tempo da CPU.
Interrupção 
 Neste tipo de atendimento, a CPU é avisada pelo dispositivo de I/O, que o mesmo necessitam receber ou enviar dados.Este tipo de atendimento é mais complexo, tendo como vantagem nãodesperdiçar o tempo da CPU.Como é um evento assíncrono, a CPU sempre atende no momento solicitado.Necessita de um hardware adicional.
DMA (Direct Memory Acess)
 Este tipo de atendimento é o mais complexo, porém o mais rápido. O dispositivo de I/O solicita os barramentos da CPU (Tri - State) e acessa diretamente a memória, transferindo então os dados. Nem toda a CPU suporta este tipo de atendimento.