calculater with pxa - 270
TRANSCRIPT
사칙연산 계산기
SUM Project Team
찌강
뽀by
목차
1.팀원2.소개3.기간 및 목표4.개발 방향5.발생한 문제점 및 해결
방안6.시연
1. 팀원SUM Project Team
20100158
7서동현
계산기 알고리즘 작성
디바이스 드라이버 총괄 통합
계 산 기 알 고 리 즘 과 디 바 이 스
드라이버 통합
20100163
7전지성
CLCD 연구 및 테스트
Key Button 연구 및 테스트
20100164
7지강일
Dot Matrix 연구 및 테스트
Button 연구 및 테스트
20100165
3최보영
FND 연구 및 테스트
LED 연구 및 테스트
2. 소개
3. 기간 및 목표
2014. 5. 23. ~ 2014. 6. 13. ( 약 3 주 )
1 주차설계 및 디바이스 드라이버 코드
분석
5/23, 5/27,
5/28, 5/30
2 주차계 산 기 알 고 리 즘 작 성 및
디바이스 드라이버 코드 수정6/2, 6/3, 6/5
3 주차계산기 알고리즘과 디바이스
드라이버 코드를 통합6/9, 6/10, 6/11
3. 기간 및 목표
clcdfndKey but-tonDot
Ledbtn
4. 개발 방향
ListBaseStack : 스택의 활용 부분InfixToPostfix : 후위 표기법의 수식으로 변환PostCalculator : 후위 표기법의 수식을 계산InfixCalculaotr : 중위 표기법의 수식을 계산
Calculator: 계산기 알고리즘의 응용 부분
HisOpen, HisSave, HisNum : 계산기의 히스토리 부분
계산기 알고리즘
ClcdfndKey buttonDotLedbtn
디바이스 드라이버
5. 발생한 문제점 및 해결 방안History
기능struct history{
int id;char exp[E_MAX_N];char res[R_MAX_N];
};
if((fread(&record,sizeof(record),1,fp)>0)&&(record.id!=0))
구조체파일 포인터
History.txt
1 128+(10+28) 166.0
2 30+50/10 35.0
3 99+1-50*10 -400.0
4 4/4*4/4 1
5. 발생한 문제점 및 해결 방안소수점 + 한 자리
숫자 이상의 계산double EvalRPNExp(char exp[LEN]){
··
else if(flag_d==1&&flag_dot!=1){ Double digit=SPop(&stack); SPush(&stack,(digit*10)+tok-'0'); }
else if(flag_d==1&&flag_dot==1){ double digit=SPop(&stack); double dot=tok-'0'; for(j=0;j<cnt_dot;j++){ dot/=10; } SPush(&stack,digit+dot); }
5. 발생한 문제점 및 해결 방안CLCD 두 줄 따로
출력하기static void string_out(char*str){··
if(*s=='\n'){ udelay(100); *((volatileunsignedchar*)(mem_base_wr))=0xC0; continue;}
5. 발생한 문제점 및 해결 방안Button 과 Key But-
ton 의 충돌int main(int ac,char *av[]){
··
/* Init Thread */pthread_mutex_init(&mutx,NULL);pthread_create(&t_id,NULL,handle_btn,(void*)&btnFd);
··
void * handle_btn(void *arg){switch(buf){ /* Exit Key */ case1: pthread_mutex_lock(&mutx); btn_flag[0]=1; pthread_mutex_unlock(&mutx); break;
6. 시연