질문게시판 > 답변 : FND를 활용해서 덧셈결과를 출력하는 코드에대해서 질문드립니다.

TODAY760 TOTAL2,918,651
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : FND를 활용해서 덧셈결과를 출력하는 코드에대해서 질문드립니다.

페이지 정보

작성자 master 작성일2018-05-07 06:17 조회29,568회 댓글5건

본문

	

 

// DateTime : 2018-05-07 오전 6:19:40
// by Ok-Hyun Park
//
#include <mega128.h>
#include <delay.h>
//
#define disp_val       0
#define disp_operator  1
#define disp_ovf       2
#define disp_sum       3
//
char fnd[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//
bit  erase_flag=0,equal_flag=0,plus_flag=0;
char disp_mode=disp_val;
//
unsigned int val=0,old_val=0,sum=0;
//
void display_operator(void){
  PORTB=0x8cPORTG=1delay_ms(1); PORTG=0;
  PORTB=0xc7PORTG=2delay_ms(1); PORTG=0;
  PORTB=0xc1PORTG=4delay_ms(1); PORTG=0;
  PORTB=0x92PORTG=8delay_ms(1); PORTG=0;
}
//
void display_ovf(void){
  PORTB=0x8cPORTG=0x7fdelay_ms(1); PORTG=0;
  PORTB=0xc7PORTG=0x7fdelay_ms(1); PORTG=0;
  PORTB=0xc1PORTG=0x7fdelay_ms(1); PORTG=0;
  PORTB=0x92PORTG=0x7fdelay_ms(1); PORTG=0;
}
//
void display_val(void){
  PORTB=fnd[val/1000  ]; PORTG=1delay_ms(1); PORTG=0;
  PORTB=fnd[val/100%10]; PORTG=2delay_ms(1); PORTG=0;
  PORTB=fnd[val/10 %10]; PORTG=4delay_ms(1); PORTG=0;
  PORTB=fnd[val    %10]; PORTG=8delay_ms(1); PORTG=0;
}
//
void display_sum(void){
  PORTB=fnd[sum/1000  ]; PORTG=1delay_ms(1); PORTG=0;
  PORTB=fnd[sum/100%10]; PORTG=2delay_ms(1); PORTG=0;
  PORTB=fnd[sum/10 %10]; PORTG=4delay_ms(1); PORTG=0;
  PORTB=fnd[sum    %10]; PORTG=8delay_ms(1); PORTG=0;
}
//
char keyscan(void){
  char n=0xff
  DDRC=0PORTC=0xffDDRC=1PORTC.0=0delay_us(1); if(!PINC.4)n=1if(!PINC.5)n=2if(!PINC.6)n=3if(!PINC.7){ plus_flag=1;  }
  DDRC=0PORTC=0xffDDRC=2PORTC.1=0delay_us(1); if(!PINC.4)n=4if(!PINC.5)n=5if(!PINC.6)n=6if(!PINC.7){ erase_flag=1; }
  DDRC=0PORTC=0xffDDRC=4PORTC.2=0delay_us(1); if(!PINC.4)n=7if(!PINC.5)n=8if(!PINC.6)n=9if(!PINC.7){ equal_flag=1; }
  DDRC=0PORTC=0xffDDRC=8PORTC.3=0delay_us(1);                 if(!PINC.5)n=0;
  DDRC=0PORTC=0xff;
  return n;
}
//
void main(void){
  char num=0,old=0;
  DDRG=0x0fDDRB=0xff;
  old=keyscan();
  while(1){
    num=keyscan();
    if(old!=num){ old=num;
      if((num>=0)&&(num<=9)){
        if(val<1000){ val*=10val+=numdisp_mode=disp_val; }
      }
      delay_ms(50);
    }
    //
    if(erase_flag){ erase_flag=0;                  val=0disp_mode=disp_val;                                      }
    if(plus_flag ){ plus_flag=0;  old_val=val;     val=0disp_mode=disp_operator;                                 }
    if(equal_flag){ equal_flag=0sum=old_val+valval=0if(sum>9999)disp_mode=disp_ovfelse disp_mode=disp_sum; }
    //
    switch(disp_mode){
      case disp_val:      display_val();      break;
      case disp_operatordisplay_operator(); break;
      case disp_ovf:      display_ovf();      break;
      case disp_sum:      display_sum();      break;
    }
  }
}

 

이 코드로 돌려보세요

 

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

댓글 5

조회수 29,568

27315co님의 댓글

27315co 작성일

중간에 이부분에서 if(val<1000){ val*=10; val+=num; display(); }
display함수가 어떤함수를 의미하는것이죠??

master님의 댓글

master 댓글의 댓글 작성일

if(val<1000){ val*=10; val+=num; disp_mode=disp_val; }
수정할 때 빼먹었나봅니다.

27315co님의 댓글

27315co 작성일

말씀하신것까지 반영을해보았는데 결과값이 덧셈을한값이아닌계속 0000이 발생합니다.

master님의 댓글

master 댓글의 댓글 작성일

마지막 결과(sum)만 제대로 표시되지 않는 것인가요?

27315co님의 댓글

27315co 작성일

네 마지막결과값 sum 만 FND 에 0000 으로 계속 표시가되네요...

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
답변 답변글 답변 : 스탭모터 제어댓글[2] master 18-07-10 11084
질문 아두이노 컴파일 오류 질문 master 18-07-10 8645
질문 for문에서 i++와 ++i의 차이 질문 master 18-07-10 8867
질문 동화 bhs-800/s 자외선살균소독기 램프가없어서 알수가 없어요 master 18-07-10 9771
질문 아두이노 블루투스 모터제어 질문 master 18-07-10 8908
질문 아두이노 LED 쉬프트 코드 질문 master 18-07-10 9414
질문 리눅스 두가지질문입니다댓글[1] 찐찐형 18-07-09 10525
질문 아두이노 메가보드 스텝모터 6개 연결, usb 유선 연결, 스마트폰 앱으로 스텝모터 구동 질문 master 18-07-09 11958
질문 피에조 센서 질문 master 18-07-09 9113
질문 ATmega 128코드비전 스위치 질문 master 18-07-09 10943
질문 아두이노 delay말고 count 변수나 다른방법을 사용해서 반복하게 할 수 있나요? master 18-07-09 12221
질문 아두이노 센서 질문 master 18-07-09 8945
질문 아두이노 네오픽셀 2개 동시 구동 질문 master 18-07-09 10626
질문 UART 통신 질문합니다댓글[3] 비공개 18-07-09 14567
질문 아두이노 조명 체크 네오픽셀 구동 질문 master 18-07-08 9299
질문 아두이노 펄스의 개수를 세는 코드 질문 master 18-07-08 11143
질문 앱인벤터 실시간 위치받기댓글[1] 이미지 비공개 18-07-07 10037
질문 UART 수신 비공개 18-07-06 8940
답변 답변글 답변 : UART 수신댓글[4] master 18-07-08 16190
질문 ADC(AD컨버터) 질문 master 18-07-06 9243
질문 아두이노로 전자석 작동시킬때 주파수를 알고싶습니다.댓글[12] 이미지첨부파일 냐아 18-07-06 53578
질문 아두이노로 전자석 작동시킬때 주파수를 알고싶습니다.댓글[1] 비공개 18-07-06 9948
질문 라즈베리파이-앱인벤터-블루투스 UART 통신 질문드립니다.댓글[1] 두부 18-07-05 13324
질문 아두이노에서 블루투를통해 값 전달댓글[3] 비공개 18-07-05 16131
질문 아두이노 보드 질문 master 18-07-05 9930
질문 로드셀 질문 master 18-07-05 11076
질문 '' 문자가 왜 쓰인건가요? 역할이 뭔지... master 18-07-05 8127
질문 Atmega128 타이머 카운터 질문 master 18-07-05 8753
질문 아두이노 온습도센서 질문 이미지 master 18-07-05 10035
질문 블루투스데이터처리댓글[2] 선유 18-07-04 12023
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기