임씨는 숙제를 끝내려고합니다. 이것은 필수 조건입니다. 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
경고없이 컴파일도 가능합니다 (모든 기능을 켜십시오!). 디버거 사용법을 익히십시오. –
부분적으로 작성해야하는 프로그램입니까? – Jiminion
@ 짐, 이것은 내 프로그램입니다. 내 코드의 나머지 부분은 내 메인 코드 위에 다른 #include에 있습니다. 다른 프로그램은 자신의 모습을 볼 필요가 없도록 작동합니다. 내 주요 문제는 내 주요 코드 여기에있을 것입니다. 나는 "read"라는 배열에서 읽는 데 도움이 필요합니다. 데이터를 얻고, long int로 덮어 쓰고, 두 배로 곱한 다음 다시 문자열로 변환하여 LCD에 다시 표시 할 수 있습니다. – user2223094