본문 바로가기
코스웨어/12년 내장형하드웨어

키입력받고 케릭터 lcd 2라인 출력

by 알 수 없는 사용자 2012. 8. 24.
728x90
반응형





#include "arm.h"
#include "led.h"
#include "aic.h"
#include "timer.h"
#include "dbgu.h"
#include "ultra.h"
#include "lcd.h"

volatile unsigned int dly;
#define delay(x)    for(dly = 0;(x)> dly; dly++) 

void INIT(void);
int main()
{  
  unsigned char ucchar;
  unsigned int ilcdcount=0;
  
  
  INIT();
  while(1)
  {
    ucchar=DBGU_RCHAR(); //문자를 입력받아 변수로 입력
    if(ucchar==8//백스페이스를 누를경우 
    {  
      
      if(0x3f==ilcdcount) // 2줄처음에서  백스페이시 1줄마지막 으로 가기위해 
      {
        ilcdcount = 0x0f;
      }
      else if(0x00 ==ilcdcount)// 1줄 처음에서 백스페이스 2줄 마지막으로 가기위해
      {
      
        ilcdcount = 0x50;
        LCD_POSITION(ilcdcount);  //커서 포지션 변경
      }
      ilcdcount=ilcdcount-1;
      
      LCD_POSITION(ilcdcount);//전 포지션이동
      ucchar=32// 공백 삽입
      LCD_Data(ucchar);
      LCD_POSITION(ilcdcount);//포지션 원래대로   

    }
    
    else// 백스페이스 가 아닐경우
    {
      LCD_Data(ucchar);//문자출력
      while(0==(DBGU_SR&(1<<TXRDY)));//포트를 통해 하이퍼터미널에 문자출력
      DBGU_THR=ucchar;
      ilcdcount++;
    }
    
    
    if(0x4f<ilcdcount)// 2줄 마지막일 경우 처음으로 
    {
      LCD_Return();
      ilcdcount=0X00;
    }
    
    else if(0x10==ilcdcount)// 1줄 마지막일 경우 2줄 처음으로 
    {
      LCD_POSITION(0x40);
      ilcdcount=0x40;
    }
    
  }
  while(1);
  
  return 0;
}
void INIT(void)
{
  //INIT_LED();
  //INIT_AIC();
  //INIT_TIMER();
  INIT_DBGU();
  //INIT_ULTRA();
  init_LCD();
  LCD_Init();
  
  return;
}

728x90