질문게시판 > 답변 : 답변 : 아트메가 키스캔 프로그램 질문 추가사항

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

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

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

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

BASIC4MCU > 질문게시판

답변 : 답변 : 아트메가 키스캔 프로그램 질문 추가사항

페이지 정보

작성자 master 작성일18-10-20 17:23 조회1,945회 댓글1건

본문

 

int main()
{
  unsigned char out[4]={0x0e,0x0d,0x0b,0x07};
  unsigned char str[]="KEY=";
  unsigned char i,sw;
  DDRC=0xff;
  DDRD=0xfe;
  DDRB=0x0f;
  PORTB=0xff;
  SFIOR=SFIOR&0b11111011;
  PORTD=PORTD|0b00010000;
  LCD_initialize(); LCD_STR(str);
  while(1){
    for(i=0i<4i++)
    {
      PORTB=0xf0|out[i];
      sw=PINB;
      sw=sw&0xf0;
      if(sw!=0xf0)
      {
        LCD_position(4,0);
        switch(sw)
        {
          case 0x70:
          if(i==0)LCD_CHAR('1');
          if(i==1)LCD_CHAR('A');
          if(i==2)LCD_CHAR('3');
          if(i==3)LCD_CHAR('2');
          _delay_us(10);
          break;
          case 0xb0:
          if(i==0)LCD_CHAR('4');
          if(i==1)LCD_CHAR('B');
          if(i==2)LCD_CHAR('6');
          if(i==3)LCD_CHAR('5');
          _delay_us(10);
          break;
          case 0xd0:
          if(i==0)LCD_CHAR('7');
          if(i==1)LCD_CHAR('C');
          if(i==2)LCD_CHAR('9');
          if(i==3)LCD_CHAR('8');
          _delay_us(10);
          break;
          case 0xe0:
          if(i==0)LCD_CHAR('*');
          if(i==1)LCD_CHAR('D');
          if(i==2)LCD_CHAR('#');
          if(i==3)LCD_CHAR('0');
          _delay_us(10);
          break;

 

3650a61c8fd4f49829685f789126e7bf_1540023017_8884.png
PB1하고 PB3를 왜 바꿨는지 모르겠지만 현재 소스코드는 위와 같은 회로 구성입니다.

 

 

키패드에서 2를 누를시 0111 1011 이 입력되게 되고 

i=0일때 

PORTB = 1111 0000 | 0x0e 이면 1111 1110이 들어가게 됩니다. 
sw = 2번 키패드는 0111 1011이 들어가고 
sw = sw & 0xf0 을 하게되면 0111 0000 이 들어가게됩니다. 
그럼 case 0x70에 해당하게 되지만 i값은 0이였고 그럼 1이 출력이 됩니다. 
저는 2번을 눌렀는데 1이 출력이 되는것이지요. 
똑같이 i++하게하여 i가 1이되면 A가 출력이 되는것이지요 
 

//

2를 받기 위해서는  1111 0111을 출력해야 합니다.

2를 누르면 PB70이 됩니다.

      PORTB=0xf0|out[i]; // i=3에서 1111 0111 출력
      sw=PINB; // sw= 0111 0111
      sw=sw&0xf0; // sw= 0111 0000
      if(sw!=0xf0) // sw = 0x70 이므로 if문 실행
        switch(sw)
        {
          case 0x70:  // sw = 0x70 이므로 
          if(i==0)LCD_CHAR('1');
          if(i==1)LCD_CHAR('A');
          if(i==2)LCD_CHAR('3');
          if(i==3)LCD_CHAR('2'); // i=3이므로 LCD='2' 출력
          _delay_us(10);
          break;

 

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

댓글 : 1

조회수 : 1,945

누티님의 댓글

누티 작성일

아하!! 회로도가 제가 보고있는 회로도랑 그려주신거랑 바뀌어있었네요ㅠㅠ

혹시 그럼.. 하나만더 여쭤본다면!! 저기서 i3일때 1111 0111이기 때문에 i=3 에서 동작한다고

해주셨습니다!! 혹시 그럼 i=0,1,2일때는 스위치문을 실행할수 없는 상황인지가 궁금합니다! (0,1,2까지 생각하는 이유는 for문에서 i++이면 0부터 1씩 증가하는걸로 알고있습니다. 만약 i=2일떄 출력이 된다 하더라고 for문때문에 i=3일떄도 생각해야되는것 아닌지 궁금합니다..)

저기부분이 0,1,2였을때도 밑에 if(sw != 0xf0)에서 sw가 0x70이기에 똑같이 수행 가능한 프로그램아닌가요??!!

너무너무 친절하게 해주셔서 감사합니다ㅠㅠ 이부분말고는 다 이해가 드디어 되네요!!

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[9] master  17-10-29
공지 [무료 공개] 소스코드 하이라이트 v2.0 beta [… 댓글[1] 첨부파일master  18-01-23
질문 val 값 전달에 대해서 .. 푸링이 새글 17:23
질문 c언어 모터 순방향 구동 및 역방향 구동 프로그램 세계제일초보 새글 13:35
질문 아두이노로 구현한 기능 코드를 다른 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버전