회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
548 마이크로프로세서 HOTatmega8 어셈블리어 부탁 드릴게요 qusgmltjd 1545 2010.06.20
547 마이크로프로세서 HOT가변저항을 사용하는데 잘 모르겠네요...3 이어달리기 2160 2010.06.19
546 마이크로프로세서 HOT[도와주셔용] "ATmega16 + 16MHz 외부 클럭 + ISP" 인데, 동작이 안됨 !!4 쑤잉아 3788 2010.06.19
545 마이크로프로세서 HOTATmega를 공부하기 어렵죠?11 genid 1730 2010.06.19
544 마이크로프로세서 HOTDC 모터의 위치 제어2 에르피온 1906 2010.06.16
543 마이크로프로세서 HOT[FND] 4-digit 7 segments에 관련된 schematic 자료가.. 사랑니 2184 2010.06.15
542 마이크로프로세서 HOTAtmega128 과 모터 모듈(BA6208) 을 사용한 DC 모터제어1 왕쓰 3790 2010.06.15
541 마이크로프로세서 HOT8051 에 대하여 .. 개굴이잉 1004 2010.06.14
540 마이크로프로세서 HOT답답한 마음에 몇자 적어 봅니다.8 돌롭 1287 2010.06.14
539 마이크로프로세서 HOTpwm을 이용한 dc모터제어6 d2comet 2342 2010.06.12
538 마이크로프로세서 HOTavr을 이용해서 조도 제어와 색온도 제어 초보자가 가능할까요?2 AVR 초보자 1607 2010.06.11
537 마이크로프로세서 HOT8051 소스에 관해서요..3 Do 1272 2010.06.11
마이크로프로세서 HOT가입하자마자 질문 먼저 올려서 죄송해요 하지만 꼭 보고 수정 부탁드려요.!6 막멀티 1254 2010.06.10
535 마이크로프로세서 HOTCAN통신 관련 질문이요 jeon_goon 1122 2010.06.09
534 마이크로프로세서 HOT8051을 배우기 시작한 대학생입니다.2 진진진 1029 2010.06.09
533 마이크로프로세서 HOT8051 과 RFID 단말기 연동 질문 입니다~1 뒹굴뒹굴 1119 2010.06.09
532 마이크로프로세서 HOTATmega128로 기판을 짜봤는데요.2 d2comet 1240 2010.06.08
531 마이크로프로세서 HOT재미는 주제입니다.. 제발 답변을..ㅠㅠ1 절제하는늑대 1072 2010.06.07
530 마이크로프로세서 HOT가변 저항 연결에 대한 질문입니다.6 dlgodnjs 3170 2010.06.07
529 마이크로프로세서 HOTAT89S52하고 AT89S51에 대하여2 끈기 1461 2010.06.06
Prev 1 ... 18 19 20 21 22 23 24 25 26 27 ... 50 Next
  • 약속을 지키는 최선의 방법은 약속을 하지 않는 것이다.
    - 나폴레옹
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.