안냐세욤.. 까막임돠..
장비에 LCD를 달아야 하는데.. LCD선정하고.. PCB뜨고, 한글 처리하고.. 장비하고 인터페이스 테스트까지..
대략 한달정도의 시간이 걸린다더군요..
그래서 놀고 먹을수가없어서.. LCD 시뮬레이터를 간략하게 만들어 봤습니다.
1. FONT는 옛날 도스시절의 '이야기'에서 사용되던 2번재 폰트를 떠다 썼구요.
2. 일반 키입력되는 완성형 한글을 자료실 173번 자료를 참고해서 조합형으로 만들었습니다.
3. 지원되는 함수는.. 픽쎌에 쓰기, 지우기, 인버트... 문자열 (영문 한글 조합 가능)쓰기, 선그리기, 원그리기
등등이 지원됩니다.
선그리기는 DDA 알고리즘을 이용했구요, 원그리기는 브레젠헴(?) 알고리즘을 이용했습니다.
매트릭스 : 화면상의 도트를 나나내는 부분입니다.
너비와 높이는 다 아실꺼구 간격은 한픽셀을 화면상에서 얼마나 크게 보여주는가 하는 겁니다.
이 값을 변경하면, 점을 아주 크게(10까지 한계) 부터 1픽셀까지 변경 가능합니다.
문자열입력 : 말 그대로 X,Y 좌표를 입력한 후 문자열을 넣으면 출력되겠죠.
선그리기 : 두개의 점 좌표를 이용하여 직선을 그려줍니다. (물론 안티얼리어싱은 지원 않합니다.)
흑백모드 LCD를 기준으로 설계했기 땜시, 4Gray정도라면 안티얼리어싱도 해볼만 하겠죠.
원그리기 : 한점.. 중심점과 반지름을 입력하고 원을 그립니다.
GDI 부분만 빼면 거진다.. C++인데.. 이것도 C로 포팅하는데 전혀 문제가 없을꺼라 생각합니다.
소스를 조금 수정하면.. 한글폰트를 탑재하지 않은 그래픽 LCD라고 하더라도 위 소스만 가지고..
간단한 GDI루틴을 다 만들수 있다는 거죠..
아.. 물론, LCD에 도트를 출력하는 루틴은 당연히.. 직접 I/O루틴을 작성해야 하지만..
그 루틴으로 토트를 출력하는.. 쩜찍는 루틴만 있으면 그 위에 만들어진 루틴을 부치기만 하면 됩니다.
참고로, LCD는 1바이트단위로 데이터를( 흑백 기준) 처리하므로, 한꺼번에 8비트가 찍히니까..
그것도 세로로.. 그건만 잘 고려하시면.. ^^;
즐거운 주말 되세요.. |