使用飞思卡尔塔板的简单计算器

时间:2013-07-24 03:00:46

标签: c

我正在努力为课堂完成作业。 这些是要求4要求 1.您的名字显示在液晶显示屏的第一行,它将保留在那里。 2.按下数字键时,键的数字将附加到LCD第2行的现有数字。如果第2行为空白,则数字将出现在该行的第一个位置。 3.按下“#”键时,第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

1 个答案:

答案 0 :(得分:3)

当程序输入switch语句时,它将尝试将控制表达式与每个case匹配,并在case之后执行代码(如果匹配),执行default之后的代码1}}如果没有匹配。如果它达到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;
}