我试图完成课堂作业。这些是要求 4 要求 1. 您的姓名会显示在 LCD 的第一行,并且会一直保留在那里。2. 按下数字键时,该键的数字将附加到 LCD 第 2 行的现有数字上。如果第 2 行为空白,则该数字将出现在该行的第一个位置。3. 按下“#”键时,第 2 行数字的两倍的值将显示在第 3 行。 4. 您的程序必须能够正确处理 0 到 2,147,483,647(含)之间的整数。不需要处理输入或结果超出范围时的错误情况。5. 按下“<em>”键时,LCD 的第 2 行和第 3 行被清除,但第 1 行中您的姓名将保留。您可以清除整个显示并重新绘制第一行。6. 之后'</em>
我停留在我应该从我的读取数组中读取并将该数字乘以 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