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

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

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

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

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

BASIC4MCU > 질문게시판

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

페이지 정보

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

조회수 : 661

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[11] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 AVR 코드로 7세그먼트 4자리 불 들어오는법이요!! 첨부파일dslaks 새글 21:00
질문 아두이노 시리얼 통신 눈의궁전 새글 19:04
질문 아두이노 소스코드 합치기 질문 드립니다. 하기싫다 새글 15:47
질문 키패드설정값 문자표기 릴레이작동 댓글[2] 왕왕초a 새글 01:34
질문 아트메가와 아두이노 통신 하는방법! jiseok 새글 00:11
답변 답변 : 아트메가와 아두이노 통신 하는방법! master 새글 08:57
질문 atmega128을 이용하여 PORTA에 2진수 패턴이… 혀스석 새글 20-05-31
답변 답변 : atmega128을 이용하여 PORTA에 2진… 댓글[2] master 새글 08:46
질문 센서 평균값 구하기 댓글[2] 팬다 새글 20-05-31
답변 답변 : 센서 평균값 구하기 master 새글 08:41
질문 Atmega128P BLDC 모터관련 질문좀할게요(3) 댓글[1] 차니  20-05-30
답변 답변 : Atmega128P BLDC 모터관련 질문좀할… master  20-05-30
질문 (질문)atmega128을 이용한 LED제어 댓글[2] 발양말  20-05-29
질문 아두이노와 자동차 연결 댓글[1] 수닝  20-05-29
질문 micros() 함수 질문입니다. 댓글[1] 아누이도  20-05-29
질문 avr 미세먼지센서에 관련하여 질문 있습니다!! 댓글[1] jhjh  20-05-28
질문 아두이노 질문입니다! 댓글[1] 아누이도  20-05-28
질문 아두캠 사진촬영 댓글[1] 던질까  20-05-28
질문 atmega 128 을 이용한 UART 통신 질문 있습… 첨부파일옥수수깡  20-05-28
답변 답변 : atmega 128 을 이용한 UART 통신 … master  20-05-28
질문 아두이노 실행 반복/중단 문제입니다 댓글[1] KSJ126  20-05-28
질문 아두이노 수정 부탁드려요 댓글[1] 알둘이놀  20-05-28
질문 안녕하세요.. 아두이노 완전초짜질문있습니다. 댓글[2] g대학  20-05-28
질문 아두이노 관련 질문입니다. 댓글[1] 아누이도  20-05-28
질문 초음파 2개 제어해서 거리에 따른 LED 불 켜기 댓글[1] 전과자14학번  20-05-28
질문 esp32 microptyhon으로 가변저항기와 서보모… 하잇  20-05-28
답변 답변 : esp32 microptyhon으로 가변저항기… 댓글[1] master  20-05-28
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전