2013-07-24 3 views
-1

임씨는 숙제를 끝내려고합니다. 이것은 필수 조건입니다. 4 요구 사항 1. 이름은 LCD의 첫 번째 줄에 표시되며 그대로 유지됩니다. 2. 숫자 키를 누르면 LCD의 2 행에있는 기존 숫자에 키의 숫자가 추가됩니다. 2 번 행이 비어 있으면 해당 행의 첫 번째 위치에 숫자가 나타납니다. 3. '#'키를 누르면 2 행의 2 배 값이 3 행에 표시됩니다. 4. 프로그램에서 0과 2,147,483,647 사이의 정수를 올바르게 처리 할 수 ​​있어야합니다. 입력 또는 결과가 범위를 벗어나는 오류 조건은 처리 할 필요가 없습니다. 5. ''키를 누르면 LCD의 2 번선과 3 번선은 지워지지 만 1 번줄의 이름은 그대로 유지됩니다. 전체 디스플레이를 지우고 첫 번째 행을 다시 칠할 수 있습니다. 6. ''키를 누른 후 프로그램은 오류 발생 여부와 관계없이 새로운 입력을 받아 들일 준비가되어 있어야합니다.프리 스케일 타워 보드를 사용하는 간단한 계산기

메신저가 내 읽기 배열에서 읽을 부분에 붙어있어 그 수에 2를 곱합니다 세 번째 줄에 표시하십시오.

#include <hidef.h>  /* common defines and macros */ 
    #include "derivative.h"  /* derivative-specific definitions */ 
#include <stdio.h> 
    #include <stdlib.h> 
#include "keypad.h" 
#include "LCD.h" 
#include "Delays.h" 
void main(void) 
{ 

char key; 
const unsigned char message[] = "Christian "; //data in Program Flash 
char read [20]; 
int i=0; 
DDRT = 0xF0;  // Upper nibble LEDs: output - logic low turns LED on 
initKeypad(); 


    lcd_init();  // initialize LCD module 
    lcd_puts(message); 

for(;;)   // Infinite while loop 
{ 
    key = getKey(); 
    if(key){ 
    lcd_putc(key); 

    read[i++] = key; 
    switch(key){ 
     case '0': 
     case '1': 
     case '2': 
     case '3': 
     case '4': 
     case '5': 
     case '6': 
     case '7': 
     case '8': 
     case '9': 
     break; 
     case'#': 
     break; 
     case'*': 
     break; 

     default:break; 
     atol(read[0]); 
     sscanf(,"%id",); 
     read[20] * 2; 
     string ltoa(read[0]); 
     sprintf(,"%d",); 
     lcd_pos(3,1);   
     lcd_putc(read[20]); 

    } 
     delayby1ms(10); 
     while(getKey()); 
     delayby1ms(10); 

      } 
}//passes message address 
} 
// end of main function 
+0

경고없이 컴파일도 가능합니다 (모든 기능을 켜십시오!). 디버거 사용법을 익히십시오. –

+1

부분적으로 작성해야하는 프로그램입니까? – Jiminion

+0

@ 짐, 이것은 내 프로그램입니다. 내 코드의 나머지 부분은 내 메인 코드 위에 다른 #include에 있습니다. 다른 프로그램은 자신의 모습을 볼 필요가 없도록 작동합니다. 내 주요 문제는 내 주요 코드 여기에있을 것입니다. 나는 "read"라는 배열에서 읽는 데 도움이 필요합니다. 데이터를 얻고, long int로 덮어 쓰고, 두 배로 곱한 다음 다시 문자열로 변환하여 LCD에 다시 표시 할 수 있습니다. – user2223094

답변

3

프로그램이 switch 문을 입력하면 각 case로 제어 표현식과 일치하고 일치하는 경우 case 후 코드를 실행, 전혀 일치하지 않는 경우 default 후 코드를 실행하려고합니다. break에 도달하면 프로그램은 전체 switch 문을 종료합니다.

코드에서 casedefault 다음에 break이 나오므로 switch 끝에있는 코드는 절대로 실행되지 않습니다.

코드가 약간 엉망입니다.이 예에서 두 printf은 어떤 값 key에 관계없이 실행되지 않습니다.

#include <stdio.h> 
int main (void) 
{ 
    char key = 'c';// key can be any character 
    switch(key) 
    { 
     printf("something\n"); // will never execute 
     case 'a': 
      break; 
     case 'b': 
      break; 
     default: 
      break; 
     printf("something\n"); // will never execute 
    } 
    return 0; 
}