LCD모듈에 카운터

Embeded 2007. 8. 29. 18:34

사용자 삽입 이미지


#include<iom128.h>
#include<ina90.h>

unsigned int data=0x00;

#define ENABLE (PORTA_Bit2=1)
#define DISABLE (PORTA_Bit2=0)

void init_PORTA(void)
{
   DDRA = 0xFF;
   PORTA = 0xFF;
}

void wait_busy_flag(void)
{
   unsigned int i;
   for(i=0; i<10000; i++);
}

void m_delay(unsigned int m)
{
   unsigned int i,j;

   for(i=0; i<m; i++)
      for(j=0; j<2650; j++);
}

void ddelay(unsigned int p)
{
   unsigned int i;

   for(i=0; i<p; i++);
}

void instruction_out(unsigned char b)
{
   PORTA=b&0xF0;

   ENABLE;
   DISABLE;

   PORTA=(b<<4)&0xF0;

   ENABLE;
   DISABLE;

   m_delay(2);
}

void char_out(unsigned char b)
{
   PORTA=(b&0xF0) | 0x01;

   ENABLE;
   DISABLE;

   PORTA=((b<<4)&oxF0) | 0x01;

   ENABLE;
   DISABLE;

   m_delay(2);
}

void string_out(unsigned char b, unsigned char* str)
{
   unsigned int i=0;

   instruction_out(b);

   do{
      char_out(str[i]);
   }while(str[++i]!='\0');
}

void init_LCD(void)
{
   init_PORTA();

   m_delay(15);

   ddelay(600);
   instruction_out(0x28);

   m_delay(2);
   instruction_out(0x28);
   m_delay(2);
   instruction_out(0x0C);
   instruction_out(0x06);
   instruction_out(0x02);
   instruction_out(0x01);
   instruction_out(0x01);
}

void lcd_decimal(unsigned char b, unsigned int hex)
{
   unsigned int h;

   instruction_out(b);

   h = (hex/1000);

   if(h != 0)
      char_out(h + 0x30);
   else
      char_out(0x30);

   h= ((hex % 1000) / 100);

   if( h!= 0)
      char_out(h + 0x30);
   else
      char_out(0x30);
  
   h = (((hex % 1000) 100) /10);

   if( h != 0)
      char_out(h + 0x30);
   else
      char_out(0x30);

   h = (((hex % 1000) % 100) % 10);

   if(h != 0)
      char_out(h + 0x30);
   else
      char_out(0x30);
}

void main(void)
{
   DDRB=0xFF;
   PORTB=0xFF;

   DDRD_Bit0=0;

   init_LCD();

   EIMSK |= 0x01;
   EICRA |= 0x03;
   EIFR |= 0x01;

   instruction_out(0x01);
   string_out(0x80,"JSLEE");

   __enable_interrupt()

      while(1)
         lcd_decimal(0xC2,data);
}

#pragma vector=INT0_vect
__interrupt void INT0_interrupt(void)
{
   __disable_interrupt();

   data++;

   __enable_interrupt();
}


블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,



#include<iom128.h>
#include<ina90.h>

unsigned int data=0xFE;

void main(void)
{
  DDRB=0xFF;
  PORTB=0xFF;

  DDRD_Bit0=0;

  EIMSK |= 0x01;
  EICRA |= 0x03;
  EIFR |= 0x01;


  __enable_interrupt();

  while(1);
}

#pragma vector=INT0_vect
__interrupt void INT0_interrupt(void)
{
  __disable_interrupt();

  PORTB=data;

  data--;

  __enable_interrupt();
}


 
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,



#include<iom128.h>
#include<ina90.h>

void m_delay(unsigned int m)
{
   unsigned int i,j;

   __disable_interrupt();

   for(i=0; i<m; i++)
      for(j=0; j<2650; j++);

   __enable_interrupt();
}

void main(void)
{
   unsigned int L_shift,R_shift,i;

   DDRB=0xFF;
   PORTB=0xFF;

   while(1)
   {
      L_shift=0x01;
      R_shift=0x80;

      for(i=0; i<8; i++)
      {
         PORTB=L_shift;
         L_shift = L_shift << 1;
         m_delay(100);
      }

      for(i=0; i<8; i++)
      {
         PORTB=R_shift;
         R_shift = R_shift >> 1;
         m_delay(100);
      }
   }
}


 
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,



#include<iom128.h>
#include<ina90.h>
void m_delay(unsigned int m)
{
   unsigned int i,j;
   __disable_interrupt();
   for(i=0; i<m; i++)
      for(j=0; j<2650; j++);
   __enable_interrupt();
}
void main(void)
{
   unsigned int h,j,m;
   h=0xFE;
   j=0x7F;
   DDRB=0xFF;
   PORTB=0xFF;
   do{
      m=h & j;
      PORTB=m;
      m_delay(100);
      if((h==0x7F || j==0xFE))
      {
         h=0xFE;
         j=0x7F;
      }
      else
      {
         h=((h << 1) | 0x01);
         j=((j >> 1) | 0x80);
      }
   }while(1);
}

 
 
 
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,


#include<iom128.h>
#include<ina90.h>

void m_delay(unsigned int m)
{
   unsigned int i,j;

   __disable_interrupt();

   for(i=0; i<m; i++)
      for(j=0; j<2650; j++);

   __enable_interrupt();
}

void main(void)
{
   unsigned char number=0xFE;

   DDRB=0xFF;
   PORTB=0xFF;

   do{
      PORTB=number;
      number= (number << 1) | 0x01;

      if((number & 0xFF) == 0xFF)
         number=0xFE;
      m_delay(500);
   }while(1);
}


 
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,


#include<iom128.h>
#include<ina90.h>

void PD0_key(void)
{
   while(!PIND & 0x01));
   while(PIND & 0x01);
}

void PE4_key(void)
{
   while(!(PINE & 0x10));
   while(PINE & 0x10);
}

void main(void)
{
   unsigned char number=0xFE;

   DDRB=0xFF;
   PORTB=0xFF;

   DDRD&=0xFE;
   PORTD=0x00;

   DDRE&=0xEF;
   PORTE=0x00;


   PD0_key();

   do{
      PPE4_key();

      PORTB=number;
      number=(number<<1) | 0x01;
     
      if((number & 0xFF) == 0xFF)
         number = 0xFE;
   }while(1);
}


 

 
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,