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

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

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


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

페이지 정보

작성자 master 작성일2018-05-07 06:17 조회17,529회 댓글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

조회수 17,529

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
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 안녕하세요! 질문드립니다댓글[1] 비공개 18-05-18 7326
질문 변수에 문자를 대입할때 여러 문자를 넣을 방법이 없나요?? hdki 18-05-17 6199
답변 답변글 답변 : 변수에 문자를 대입할때 여러 문자를 넣을 방법이 없나요??댓글[1] master 18-05-17 14427
질문 코드비전으로 변환댓글[1] 박희범 18-05-17 7689
질문 아두이노 펄스출력 DrVoid 18-05-17 8368
답변 답변글 답변 : 아두이노 펄스출력댓글[1] master 18-05-17 6864
질문 atmega128 포트D댓글[1] c린이 18-05-16 7647
질문 아트메가 통신댓글[3] 빠박이빠박 18-05-16 10078
질문 PWM질문입니다. 첨부파일 DrVoid 18-05-16 6330
답변 답변글 답변 : PWM질문입니다.댓글[1] master 18-05-16 6975
질문 안녕하세요. Lora 통신 관련해서 질문 드렸었는데, 재질문드립니다.댓글[7] 비공개 18-05-14 19447
질문 오늘 로드셀 관련하여 지식인에 질문드렸던사람입니다댓글[1] zxcv1vcxz 18-05-14 8365
질문 아두이노 우노에 적외선센서 2개 연결하는법댓글[1] 이미지첨부파일 cho11 18-05-14 16870
질문 아두이노관련 질문드립니다.댓글[1] 최승아 18-05-14 7698
질문 적외선센서와 mp3모듈 연결 소스코드댓글[1] dm501 18-05-14 7922
답변 답변글 답변 : 적외선 거리센서 공식 master 18-05-15 7077
질문 아두이노 적외선센서와 mp3플레이어 모듈 연결댓글[1] dm501 18-05-14 10122
질문 아두이노 어댑터를 뺏다가 연결했을떄 이더넷쉴드가 연결이 안됩니다댓글[1] 이미지첨부파일 cho11 18-05-14 9918
질문 atmega128 장애물회피자동차 스텝모터댓글[1] alsdn6431 18-05-14 9295
질문 아두이노 센서 2개 사용 코드 관련 질문 kimhk 18-05-14 10534
답변 답변글 답변 : fade (target 과 soundPre 의 관계를 이해) master 18-05-14 6614
답변 답변글 답변 2: 사운드 센서 신호 검출 master 18-05-14 8002
답변 답변글 답변 3: 복수개의 LED PWM 구동 방법 master 18-05-14 6433
질문 아두이노 카메라에 대해 질문있습니다.댓글[1] 후후훙 18-05-13 8787
질문 아두이노 센서 연결 질문댓글[3] dsfkmfkds 18-05-13 13358
질문 아두이노 스톱워치 관련입니다.댓글[1] 비공개 18-05-13 8677
질문 아두이노 로봇청소기를 제작중입니다내용> 안녕하세요 아두이노 메가를 이용한 로봇청소기를 구현중에 있습니다. …댓글[1] 동수킴 18-05-12 9650
답변 답변글 답변 : 아두이노 로봇청소기를 제작중입니다내용> 안녕하세요 아두이노 메가를 이용한 로봇청소기를 구현중에 있습… master 18-05-13 7832
질문 ATmega128 led 하나씩 시프트 하는거에 대해 비공개 18-05-12 7656
답변 답변글 답변 : ATmega128 led 하나씩 시프트 - 반복문 master 18-05-12 8145
게시물 검색

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
모바일버전으로보기