회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
35 Software & IDEs HOT빠쑝님께서 올리신 api 통신함수에 대한 질문입니다.1 momozizi 1042 2010.11.17
34 Software & IDEs HOTcrc 계산1 푸른하늘은하수 4069 2010.11.13
33 Software & IDEs HOT어떤언어를 배우는것이 가장 쉬운가요?4 멍치 1082 2010.10.29
32 Software & IDEs HOTVC++로 만들껀데요. ^^4 이란주 980 2010.08.30
31 Software & IDEs HOTbin파일에관한 질문드립니다.1 왕초보틱 962 2010.08.26
30 Software & IDEs HOT[matlab] 사용했던 변수 저장에 관하여 키핀 983 2010.08.05
29 Software & IDEs HOT마이크로 컨트롤러 질문???5 진구짱 976 2010.06.04
28 Software & IDEs HOT게임만들기 전!!2 잉어aa 1120 2010.05.29
27 Software & IDEs HOTData = Data * 0x100 무슨 의미 인가요4 파인 윤 1196 2010.05.22
26 Software & IDEs HOT리모콘 모듈을 제작해주는 곳이 있을까요?2 철방이 951 2010.05.11
25 Software & IDEs HOT13 jeonity 898 2010.04.30
24 Software & IDEs HOT지그비 ZBS-200 프로그램 질문입니다!!2 소울 1728 2010.04.11
23 Software & IDEs HOTVisual C++ 6.0 프로그램이 비스타 작동 안하나요?6 fairlady 1302 2010.03.30
22 Software & IDEs HOT안녕하세요 혹시 소스나 이전에 프로그래밍되있는것을 찾을곳이있을까요?3 꿀이 896 2010.03.30
21 Software & IDEs HOT초보에게 추천해주실 트레이닝 키트와 서적부탁드릴게요4 꿀이 922 2010.03.29
20 Software & IDEs HOT저기 레포트점 도와주세요1 메리짱 788 2010.03.22
19 Software & IDEs HOT반도체 설계/개발 관련 프로그래밍 언어는 어떤 것이 있는지5 트리스탄 1485 2010.03.19
18 Software & IDEs HOT오브젝트씨..쓰시는분들 볼트와너트 1149 2010.03.12
17 Software & IDEs HOT이해하기 쉬운 자료구좀 책좀 소개좀 해주세요..9 남보살 1030 2010.03.02
16 Software & IDEs HOTatmega128에 대해 알기 쉬운 책 좀 알려주세요..5 마이무따이가 1472 2010.02.03
  • 많은 사람이 충고를 받지만, 오직 현명한 자만이 충고의 덕을 본다.
    - 푸블릴리우스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.