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

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

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

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

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

BASIC4MCU > 질문게시판

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

페이지 정보

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

조회수 : 451

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[10] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 두더지 정리본입니다. 아두이노배우기 새글 05:53
답변 답변 : 두더지 정리본입니다. master 새글 10:45
질문 아두이노 두더지 잡기 아두이노배우기 새글 20-02-27
답변 답변 : 아두이노 두더지 잡기 댓글[1] master 새글 20-02-27
질문 아두이노+스텝모터+L298N 질문드립니다. 첨부파일빈군 새글 20-02-27
답변 답변 : 아두이노+스텝모터+L298N 질문드립니다. 댓글[3] master 새글 20-02-27
질문 STM32 MCU DFSDM기능 문의 댓글[1] 첨부파일Hongchoon  20-02-26
질문 DC모터 제어중 부저 추가 댓글[2] 아두이노배우기  20-02-25
질문 적외선 DC모터 제어 아두이노배우기  20-02-25
답변 답변 : 적외선 DC모터 제어 댓글[1] master  20-02-25
질문 아두이노 IDE (ino파일) 로 업로드 하면 작동되는… 댓글[1] 첨부파일이츠라  20-02-25
질문 atmega128 while 속 if문 실행 문제 이동욱  20-02-24
답변 답변 : atmega128 while 속 if문 실행 … master  20-02-24
질문 Limit Sensor 를 이용한 LED의 자동 작동에… 첨부파일아두이프로  20-02-24
답변 답변 : Limit Sensor 를 이용한 LED의 자… 댓글[1] master  20-02-24
질문 HC-11을 이용하여 1:N 통신중입니다. 댓글[4] 아두이노배우기  20-02-23
질문 스텝모터 정지 댓글[2] 아두이노배우기  20-02-23
답변 답변 : 스텝모터 정지 댓글[2] master  20-02-23
질문 정말 감사합니다. 박취  20-02-19
질문 ov9655카메라와 stm32f4 보드를 이용한 영상처… 댓글[7] flap  20-02-19
질문 GLCD 텍스트 출력 댓글[2] 전자학습자  20-02-17
질문 아두이노 HC-11 통신관련입니다. 아두이노배우기  20-02-15
답변 답변 : 아두이노 HC-11 통신관련입니다. master  20-02-16
답변 답변 : 답변 : 아두이노 HC-11 통신관련입니다. 아두이노배우기  20-02-16
질문 led 불켜기 마스터 슬레이브 댓글[1] 공용  20-02-12
답변 답변 : led 불켜기 마스터 슬레이브 master  20-02-12
질문 아두이노 코딩 관련 질문입니다. bbeuniii  20-02-12
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전