질문게시판 > LCD 키패드 입력(코드 점검부탁드려요)!

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

LCD 키패드 입력(코드 점검부탁드려요)!

페이지 정보

작성자 JJEI 작성일19-06-13 12:30 조회212회 댓글1건

본문

ATMEGA128 / AVRSTUDIO4 사용중이며 키패드는 3X4키패드입니다

2번째 문자열에 키패드의 입력값이 나오는데 한자리수만 나오고 다음 키패드 입력을 주면 LCD오른쪽 으로 한칸 쉬프트해서

숫자를 계속 입력하고 싶습니다. 또 #버튼을 누를시에 2번째 문자열을 초기화 시키고 싶습니다! 알려주세요 ㅜ

EX) 0115642 이런식으로 

현재 숫자입력시 LCD한칸에서 계속 숫자가 바뀜. 

 

 

#define F_CPU 16000000UL

 

#include <avr/io.h>

#include <util/delay.h>

#include <stdio.h>

 

#define LCD_DB_PORT   PORTA            

#define LCD_DB_DDR   DDRA

#define LCD_CMD_PORT   PORTC          

#define LCD_CMD_DDR   DDRC

 

unsigned char input=' ';                   

 

 

void LCD_cmd(unsigned char cmd)        

{

    LCD_CMD_PORT = 0x00;              

    LCD_DB_PORT = cmd;                

    LCD_CMD_PORT = 0x01;               

    _delay_us(1);                           

    LCD_CMD_PORT = 0x00;               

    _delay_us(100);                         

}

 

 

void LCD_init(void)                     

{

    LCD_cmd(0x38);                    

    LCD_cmd(0x0C);                    

    LCD_cmd(0x06);                    

    LCD_cmd(0x01);                   

    _delay_ms(2);

}

 

 

 

void LCD_data(unsigned char data)     

{

    LCD_CMD_PORT = 0x02;           

    LCD_DB_PORT = data;             

    LCD_CMD_PORT = 0x03;           

    _delay_us(1);

    LCD_CMD_PORT = 0x02;           

    _delay_us(100);

}

 

 

void LCD_print(unsigned char cmd, char *str)   

{

    LCD_cmd(cmd);                   

    while(*str != 0)                    

    { LCD_data(*str);

        str++;

    }

}

 

 

char Keypad_input(void)

{        

    

    PORTD = 0xFF;                    

                                      

    DDRD=0x0F;                        

    

 

    PORTD = 0b11111110;                      

    _delay_us(1);                               

    if ((PIND & 0x10) == 0) input = '1';

    else if ((PIND & 0x20) == 0) input = '2';

    else if ((PIND & 0x40) == 0) input = '3';

    

    

    PORTD = 0b11111101;                      

    _delay_us(1);                    

    if ((PIND & 0x10) == 0) input = '4';

    else if ((PIND & 0x20) == 0) input = '5';

    else if ((PIND & 0x40) == 0) input = '6';

    

    PORTD = 0b11111011;                      

    _delay_us(1);                    

    if ((PIND & 0x10) == 0) input = '7';

    else if ((PIND & 0x20) == 0) input = '8';

    else if ((PIND & 0x40) == 0) input = '9';

    

    PORTD = 0b11110111;                     

    _delay_us(1);                    

    if ((PIND & 0x10) == 0) input = '*';

    else if ((PIND & 0x20) == 0) input = '0';

    else if ((PIND & 0x40) == 0) input = '#';

 

    return input;                               // 입력이 없으면 공백문자 리턴

}

 

 

 

int main(void)                                 // 메인함수

{

    unsigned char val;

    char str[16];                              // 출력 문자열

    

    LCD_DB_DDR = 0xFF;                     // LCD data bus, LCD command port 출력모드

    LCD_CMD_DDR = 0xFF;

    LCD_DB_PORT = 0x00;

    LCD_CMD_PORT = 0x00;

    

    

    LCD_init();

    

    _delay_us(50);                               // 명령처리 대기시간

    

    

    while(1)

    {

        

        val = Keypad_input();

                

        sprintf(str,"  PH: %c  ",val);

        

        LCD_print(0x80,"**Phone Number**");          // 1열 문자열 출력

        LCD_print(0xC0,str);                         // 2열 문자열 출력

            

    }

    

}


  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 1

조회수 : 212

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[10] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 소스 합체 질문 (인터럽트) 검은볼펜 새글 19-10-23
답변 답변 : 소스 합체 질문 (인터럽트) master 새글 19-10-23
질문 조도센서 동작이 잘 안됩니다. 첨부파일배규영 새글 19-10-23
답변 답변 : 조도센서 동작이 잘 안됩니다. master 새글 19-10-23
질문 아두이노 코딩 오류좀 봐주세요 ㅠ 초보왕초보왕 새글 19-10-23
답변 답변 : 아두이노 코딩 오류좀 봐주세요 ㅠ master 새글 19-10-23
질문 co센서 ppm 값 반환이 안됩니다.. 댓글[1] 첨부파일정다나 새글 19-10-23
질문 수정부탁드립니다 댓글[2] gud3948 새글 19-10-23
질문 혹시 atmega128a 에 제어바이트가 있나요? 댓글[4] 초짜 새글 19-10-23
질문 아두이노 인터럽트 질문 검은볼펜 새글 19-10-22
답변 답변 : 아두이노 인터럽트 질문 댓글[1] master 새글 19-10-22
질문 atmega128 TWI 를 독학하고 있습니다. 댓글[6] 초짜 새글 19-10-22
질문 L298N 으로 DC 모터제어 댓글[2] sss1 새글 19-10-22
질문 아두이노로 5v dc팬 돌릴려고 하는데요 댓글[1] 승훈 새글 19-10-22
질문 아두이노 RGB LED 질문 master 새글 19-10-22
질문 코드확인부탁드립니다. 댓글[1] gud3948 새글 19-10-22
질문 많이 급합니다 도움 부탁드립니다 rkdeh 새글 19-10-22
답변 답변 : 아두이노 가스센서 질문입니다. master 새글 19-10-22
질문 많이 급합니다. 제발 도와주세요ㅠ 댓글[1] gud3948  19-10-22
답변 답변 : 많이 급합니다. 제발 도와주세요ㅠ master 새글 19-10-22
질문 아두이노를 이용해서 코드를 짜는걸 코딩이라고 하는데 선… master  19-10-21
질문 아두이노 코드 해석 부탁드립니다. 댓글[5] 아두에듀잉  19-10-21
답변 답변 : 아두이노 코드 해석 부탁드립니다. master  19-10-21
질문 랜덤 LED FND 질문드립니다 아두이노신입  19-10-21
답변 답변 : 랜덤 LED FND 질문드립니다 master  19-10-21
질문 서보모터와 LCD 결합 질문입니다. 댓글[1] Winavr  19-10-21
질문 아두이노 무게센서 2개 사용 질문입니다. 댓글[1] Winavr  19-10-21
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전