クラスの宿題を終わらせようとしています。これらは要件です。 4 要件 1. LCD の最初の行に名前が表示され、そこに残ります。2. 数字キーを押すと、キーの数字が LCD の 2 行目の既存の数字に追加されます。行 2 が空白の場合、数字は行の最初の位置に表示されます。3. '#' キーを押すと、2 行目の数値の 2 倍の値が 3 行目に表示されます。入力または結果が範囲を超えている場合のエラー条件は、処理する必要はありません。5. '<em>' キーを押すと、LCD の 2 行目と 3 行目がクリアされますが、1 行目の名前は残ります。表示全体をクリアして、最初の行を再描画できます。6. '</em>の後
私は、読み取り配列から読み取り、その数値を 2 倍して 3 行目に表示するはずの部分で立ち往生しています。
#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