기본적으로 마이크로 컨트롤러를 통해 LCD를 제어하는 코드를 작성하고 있습니다. (ATMEGA 32) 나는 내 주요 방법은 다음과 같습니다 여기C에서 char ASCII를 16 진수로 변환하는 방법?
unsigned char str1[9] = "It Works!";
sendString(str1);
내 sendString 방법입니다 :
// Converts each char to hex and sends to LCD
void sendString(unsigned char *string){
sendCommand(0x01); // Clear screen 0x01 = 00000001
_delay_ms(2);
sendCommand(0x38); // Put in 8-bit mode
_delay_us(50);
sendCommand(0b0001110); // LCD on and set cursor off
_delay_us(50);
//For each char in string, write to the LCD
for(int i = 0; i < sizeof(string); i++){
convertASCIIToHex(string[i]);
}
}
는 그 다음 sendString 방법은 각 문자를 변환 할 필요가있다. 여기에 내가 지금까지 가지고있는 것입니다 :
unsigned int convertASCIIToHex(unsigned char *ch)
{
int hexEquivilent[sizeof(ch)] = {0};
for(int i = 0; i < sizeof(ch); i++){
// TODO - HOW DO I CONVERT FROM CHAR TO HEX????
}
return hexEquivilent;
}
그럼 변환을 어떻게할까요? 나는 C에 완전히 익숙하지 않고 천천히 배우고 있습니다. 어쨌든 char가 어쨌든 실제로 8 비트 int로 저장된다는 것을 읽었을 때 나는이 모든 잘못에 대해 생각하고있다. 어떻게 각 입력 문자에 대한 16 진수 값을 반환하는 내 메서드를 얻을 수 있습니까?
ASCII 문자는 내부적으로 숫자로 표시되므로 변환 할 필요가 없으므로 자체 대신 16 진 값을 출력해야합니다. (때로는이 간단한 아이디어를 처음에는 이해하지 못하는 사람들에게 설명하기가 매우 어렵습니다.) –
"16 진수 값"이란 무엇입니까? – Michael
좋아, 기본적으로 내 sendChar 함수는 다음과 같이 작동합니다. sendChar (0x54); 와 ASCII 16 진수 0x54에 대한 연관된 문자가 LCD 화면에 나타납니다. 그래서 유진을 이해한다면 간단히 다음과 같이해야합니다 : sendChar (ch [i]) for my 루프에서 각 "char"문자를 LCD로 보냅니다. char가 실제로 8 비트로 숫자로 표현되기 때문에 변환 할 필요가 없습니까? –