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

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

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

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

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

BASIC4MCU > 질문게시판

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

페이지 정보

작성자 JJEI 작성일19-06-13 12:30 조회165회 댓글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

조회수 : 165

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[9] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 val 값 전달에 대해서 .. 댓글[1] 푸링이 새글 19-09-20
질문 c언어 모터 순방향 구동 및 역방향 구동 프로그램 댓글[1] 세계제일초보 새글 19-09-20
질문 아두이노로 구현한 기능 코드를 다른 mcu로 코딩 많이… 댓글[1] 눈티이 새글 19-09-19
질문 아두이노 타이머 멀티태스킹 질문 master  19-09-19
질문 혹여나 습도값을 슬라이더로 바꿀 수 있을까요? 댓글[2] 첨부파일푸링이  19-09-16
질문 아두이노 포크레인 중 스텝모터질문 댓글[1] 노은우  19-09-16
질문 아트메가 댓글[2] 전자어렵  19-09-16
답변 답변 : 아트메가 master  19-09-18
질문 도와주세요 ㅠㅠ 댓글[1] 민서가또  19-09-16
질문 아두이노 if문 실행문제 댓글[1] 첨부파일sun0100  19-09-16
질문 아트메가128 댓글[2] 전자어렵  19-09-15
답변 답변 : 아트메가128 댓글[4] master  19-09-15
질문 아두이노 IR센서 코딩질문입니다 댓글[2] rkskek  19-09-15
질문 아두이노 외부전원 질문드립니다! 댓글[2] 빵빵판  19-09-15
질문 Timer1_CTC 연습중인데요.. 댓글[4] 초짜  19-09-13
질문 안녕하세요, 인터페이스까지는 완료했습니다 ! 댓글[12] 첨부파일푸링이  19-09-12
질문 아래 앱인벤터 글에 이어서.. 댓글[1] 첨부파일푸링이  19-09-11
질문 memcmpf 질문이요 댓글[2] 초짜  19-09-10
질문 아두이노 네오픽셀 질문드립니다. 댓글[1] 호기심왕  19-09-10
질문 앱인벤터를 통해 스텝모터를 습도조건에 따라 움직이게 하… 댓글[5] 푸링이  19-09-10
질문 atmega128 의 PWM 모드 질문이요 댓글[6] 초짜  19-09-06
질문 아두이노 서보모터 제어문제입니다 ㅠ 댓글[3] 첨부파일졸업좀시켜줘요  19-09-05
질문 코딩질문이므니다.. 댓글[1] 첨부파일베이식  19-09-04
질문 아두이노 Oscillator.h 라이브러리 다운 하는법 댓글[1] bbhu  19-09-02
질문 atmega128a 질문이요 댓글[1] 초짜  19-08-30
질문 아두이노 이전 고분해능 엔코더 질문에 추가 궁금점이 있… 댓글[1] 첨부파일모터무  19-08-30
질문 스크래치X로 아두이노 제어 댓글[1] 승희엄마  19-08-29
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전