회원가입 ID/PW 찾기
AA

제가 요번에 전자계산기 제어 산업기사를 보게 되서 실기를 연습 중입니다..
그래서 이렇게 연습을 하게 되었는데요.
일단 프로그램이 동작은 되기는 합니다..
근데 키를 여러번 눌러야지 반응 하거나 누르고 조금 기다려야지 반응을 보입니다..
조금 빠르게 반응 하게 하는 방법은 없을까요..?
그리고 232통신을 하게 되면 데이터가 송신은 하는데, 계속 송신되서 스크롤이 아래로 내려갑니다..
송신을 한번만 하게 하거나 계속 처음 자리에서 출력되게 하는 방법은 없을까요??

#include <io51.h>

#define RS P3.4
#define RW P3.5
#define E  P3.6

bit sw0 = P0.4;
bit sw1 = P0.5;
bit sw2 = P0.6;
bit sw3 = P0.7;

unsigned int keyvalue = 0x0f;

void delay_ms(unsigned int ms)
{
  unsigned int i,cnt;
  for(i=0; i<ms; i++)
    for(cnt=0; cnt<230; cnt++);
}

void delay(unsigned int del)
{
  while(del--);
}

void lcd_cmd(char ch)
{
  RS=0;
  RW=0;
  E=1;
  delay(10);
  P1=ch;
  E=0;
}

void lcd_putc(char ch)
{
  RS=1;
  RW=0;
  E=1;
  delay(10);
  P1=ch;
  E=0;
}

void lcd_puts(char *p)
{
  unsigned char ch;
  while(ch=*p++) lcd_putc(ch);
}

void lcd_clr(void)
{
  lcd_cmd(0x01);
}

void lcd_xy(int x, int y)
{
  if(y==0) lcd_cmd(x+0x80);
  if(y==1) lcd_cmd(x+0xc0);
}

void lcd_init(void)
{
     delay_ms(100);
     lcd_cmd(0x38);   // Function Set
     delay_ms(10);
     lcd_cmd(0x0C);   // Display On/Off
     delay_ms(3);
     lcd_cmd(0x01);   // Display Clear
     lcd_cmd(0x06);   // Entry Mode Set

}

void keycheck(void)
{
  unsigned int key;
  sw0=0; sw1=1; sw2=1; sw3=1;
  key=(P0 & 0x0f);
  if(key != 0x0f){
    switch(key){
      case 0x0d : keyvalue=0x01; break;
      case 0x0b : keyvalue=0x02; break;
      case 0x07 : keyvalue=0x03; break;
      }
  }
}

void txd(unsigned char ch)
{
 while(!TI);
 TI=0;
 SBUF = ch;
}

void usart_puts(char *p)
{
 unsigned char ch;
 while(ch=*p++) txd(ch);
}

void usart_init(void)

        TMOD = 0x20;
        TH1 = 0xfa;
        TCON = 0x40;
        IE = 0x90;
        PCON = 0x00;
        SCON = 0x53;
}

void main(void)
{
  lcd_init();
  lcd_clr();

  usart_init();
 
  delay_ms(100);
     
  lcd_xy(0,0);
  lcd_puts("DATA...SYSTEM");

  lcd_xy(0,1);
  lcd_puts("DATA INPUT");
 
  delay_ms(2000);
 
  lcd_xy(0,0);
  lcd_puts("12345678       ");
  lcd_xy(0,1);
  lcd_puts("HHHHHHHH       ");
   
  do{
 
    //keyvalue=0x0f;
    keycheck();
    if(keyvalue != 0x0f){
      switch(keyvalue){
        case 1:
          lcd_xy(0,0);
          lcd_puts("12345678       ");
          lcd_xy(0,1);
          lcd_puts("LHHHHHHH       ");
 
          keyvalue = 0x0f;
 
        break;
       
        case 2:
          lcd_xy(0,0);
          lcd_puts("12345678       ");
          lcd_xy(0,1);
          lcd_puts("LHLHLHLH       ");

          usart_puts("12345678");
          txd(0x0A); // 커서를 아래로 내려준다.
          txd(0x0D); // 커서를 맨 앞으로 보내준다.      

          usart_puts("LHLHLHLH");
          txd(0x0A); // 커서를 아래로 내려준다.
          txd(0x0D); // 커서를 맨 앞으로 보내준다.       */
         

          keyvalue = 0x0f;
           
        break;
       
        case 3:
          lcd_xy(0,0);
          lcd_puts("12345678       ");
          lcd_xy(0,1);
          lcd_puts("HLHLHLHL       ");

          usart_puts("12345678"); 
          txd(0x0A); // 커서를 아래로 내려준다.
          txd(0x0D); // 커서를 맨 앞으로 보내준다. 

          usart_puts("HLHLHLHL");
          txd(0x0A); // 커서를 아래로 내려준다.
          txd(0x0D); // 커서를 맨 앞으로 보내준다. 
                  
          keyvalue = 0x0f;

        break;
      }
    }     
  }while(1);
}

댓글 6

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
1727 자유주제 HOT정회원이 빨리되고싶습니다~5 여인의향 3846 2010.06.18
1726 자유주제 HOT요즘 잇슈~인 전기 충전소11 공부합세 2754 2010.06.17
1725 자유주제 HOT혹시 WINCE 6.0 에 CAN ....1 공부합세 8285 2010.06.17
1724 자유주제 HOT펭귄 3마리3 임페리얼 1943 2010.06.17
1723 자유주제 HOT코알라!5 임페리얼 1817 2010.06.17
1722 자유주제 HOT정회원 되고 싶습니다 !!! ㅠ 임페리얼 3732 2010.06.17
1721 자유주제 HOT싱크률100%4 toshiba 1790 2010.06.15
1720 자유주제 HOT이열차는...2 toshiba 1672 2010.06.15
1719 자유주제 HOT언능언능 자라서... 무엇이 될까요!!!12 쩡투 1665 2010.06.14
1718 자유주제 HOT[잡담] 원가3 빛나는 영혼 4539 2010.06.14
1717 자유주제 HOT졸업작품이 원래 이런건가요16 까뮤 5241 2010.06.13
1716 자유주제 HOT영상처리 관심 있는 분 보세요...무료강좌가 있네요.7 와니파파 5111 2010.06.11
1715 자유주제 HOT패즈 숙달을 위해 정회원이 될야죠4 인피니티 9531 2010.06.09
1714 자유주제 HOTMathworks 컨퍼런스에 다녀왔습니다.1 lovedoremi 6822 2010.06.08
1713 자유주제 HOT이렇게 좋은곳을 모르고있었다니.. ㅠ7 슈퍼초밥 4764 2010.06.08
1712 자유주제 HOT오랜만에 들어와봤습니다.3 암흑혜성 3539 2010.06.08
1711 자유주제 HOT정회원 되고야 말꺼야6 달려완고 4743 2010.06.07
1710 자유주제 HOT후아...1 아카시아 9025 2010.06.07
1709 자유주제 HOT납 100돌파 후,,,7 납연기 4566 2010.06.07
1708 자유주제 HOT중독13 노노논호 1848 2010.06.06
Prev 1 ... 44 45 46 47 48 49 50 51 52 53 ... 135 Next
  • 맹세는 말에 지나지 않고, 말은 바람에 지나지 않는다.
    - 버틀러
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.