티스토리 뷰

시리얼 통신으로 받은 데이터를 LCD 에 표시하기

시리얼 통신으로 데이터를 주고 받는 프로그램을 살펴 보았습니다. 시리얼 통신으로 데이터를 주고 받을 때는 아스키 코드로 데이터를 전송합니다. 마찬가지로 LCD 에 데이터를 표시할 때도 아스키 코드를 사용합니다. 그러므로 시리얼 통신으로 받은 데이터는 그대로 LCD 에 표시될 수 있습니다. 이번 강좌에서는 하이퍼 터미널로 보낸 시리얼 통신 데이터를 LCD 에 출력하는 방법을 살펴봅니다. 첫째 시리얼 통신을 초기 설정합니다. 둘째 캐릭터 LCD 를 초기 설정합니다. 세째 시리얼 통신으로 받은 데이터를 16x2 LCD 에 출력합니다. #include #include "lcd.h" void init_serial(void) { TMOD = 0x20; PCON = 0x80; SCON = 0x52; TH1 = 0xfd; TR1 = 1; SBUF = 0; } char RX_D(void) { while(!RI); RI=0; return(SBUF); } void TX_D(buffer) { while(!TI); TI=0; SBUF = buffer; } void put_str(char *buf) { while(*buf) TX_D(*buf++); } void main(void) { int rx,i=0,j=0,k; char *str = "Serial Test"; init_serial(); /* Xtal:22.1184MHz, 38400 Baud */ put_str(str); delay(10000); lcd_init(); lcd_puts(str); for(k=0; k<5; k++) delay(30000); clear(); do { rx = RX_D(); if(i++ == 16) { row2(); i = 1; j++; if(j == 2) { clear(); j = 0; } } lcd_putc(rx); TX_D(rx); } while(1); } 보라색 부분은 시리얼 통신에 관계된 함수들입니다. main() 함수에서 i 변수는 입력된 문자수가 16 개 이면 LCD 의 두번째 줄로 이동시키기 위한 변수이고 j 변수는 두 줄이 다 차면 LCD 의 화면을 클리어하고 다시 시작하도록 하기 위한 변수입니다. 마지막 줄의 TX_D(rx); 명령은 하이퍼 터미널에서 보내진 데이터를 다시 하이퍼 터미널로 보내는 명령입니다. 이 명령이 없으면 하이퍼 터미널에는 문자가 표시되지 않습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함