WinCE Device Driver 실습 #4 주제 LCD 디바이스 드라이버 작성 LCD 디바이스 드라이버 테스트 프로그램 작성
Character LCD 장치 개요 성질 Liquid Crystal Display 전압 부과시 일정한 방향으로 정렬 편광 성질을 통해 전압이 걸린 부분이 검게 표시 전력 소모가 적음 휴대용 마이크로 컴퓨터 시스템에 다수 사용 LCD패널과 제어기가 하나의 패키지 형태로 구성 제어기에 데이터 전송으로 원하는 정보가 디스플레이됨. Windows CE.Net
내부 모듈 구조 (1) 2개의 장치로 구성 LCD display 장치(HD44100): 2x16 문자 디스플레이 가능 LCD controller 장치(HD44780) : 8-비트 마이크로프로세서로 구성 Windows CE.Net
내부 모듈 구조 (2) HD44780의 내부 블록도 Windows CE.Net
내부 모듈 구조 (3) HD44780의 내부 레지스터 IR (Instruction Register) D.D.RAM과 C.G.RAM에 대한 주소정보와 클리어, 커서이동에 대한 명령코드를 가지는 레지스터 DR(Data Register) D.D.RAM과 C.G.RAM에 데이터를 읽거나 써넣을 때 사용되는 레지스터 AC(Address Counter) D.D.RAM과 C.G.RAM의 어드레스를 지정할 때 사용되는 레지스터 D.D.RAM(Display Data RAM) 8비트 문자코드의 디스플레이 데이터를 가지고있으며 최대용량은 80x8 비트인 80문자이다 C.G.ROM(Character Generator ROM) 문자 글씨체를 저장하고 있다 C.G.RAM(Character Generator RAM) 사용자가 문자를 새로이 만들 때 사용되는 RAM이다 Windows CE.Net
내부 모듈 구조 (4) HD44780의 핀 할당 핀번호 기호 입/출력 기능 1 VSS 입력 0V (GND) 2 VDD +5V 3 VO 가변저항 10K를 달아서 LCD 글자의 밝기를 조절 4 RS LCD 자체의 명령과 데이터 입력을 제어. ‘0’= 명령입력 ‘1’= 데이터입력 5 R/W ‘1’= Read, '0'= Write 6 E Enable신호로 명령이 하나 입력될 때마다 펄스를 하나씩 내주어야 한다. 7 DB0 양방향 데이터 버스 8 DB1 9 DB2 10 DB3 11 DB4 12 DB5 13 DB6 14 DB7 Windows CE.Net
내부 모듈 구조 (5) HD44780에서의 레지스터 전송 제어 RS(Register select) Low : IR, High : DR을 선택 RW : 레지스터에 데이터 Read/Write E(Enable) High 상태에서 명령/데이터를 출력하고, LCD가 명령을 처리할 시간을 지연한 후 Low 상태로 변환 RS RW E 1 RS RW E RS 동작에 따른 IR 선택 RS RW E 1 RS RW E 1 RS 동작에 따른 DR 선택 Windows CE.Net
내부 모듈 구조 (6) HD44780의 제어 명령 기 능 제어신호 제어 명령 Execute Time Clear Display RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Clear Display 1 1.64mS Return Home 40uS Entry Mode Set I/D S Display on/off Control D C Cursor or Display Shift S/C R/L Function Set D/L N F Set CG RAM Address CG RAM Address Set DD RAM Address DD RAM Address Read Busy Flag and Address BF Address Counter Data Write to CG RAM or DD RAM Write Address Data Read to CG RAM or DD RAM Read Address Windows CE.Net
내부 모듈 구조 (7) 명령어 종류 표시 클리어 Cursor home 화면 클리어 후 커서는 홈 위치(00번지)로 돌아감 커서를 LCD 홈으로 리턴 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 X Windows CE.Net
내부 모듈 구조 (8) 명령어 종류 엔트리 모드 표시 ON/OFF 제어 커서의 진행 방향이나 표시된 문자를 쉬프트 시킬 것인지 설정 I/D (Increment/Decrement) 1 (address +1) 0 (address -1) S(shift) I/D=1, S=1 : 왼쪽으로 쉬프트 I/D=0, S=1 : 오른쪽으로 쉬프트 S=0 : 표시된 문자는 쉬프트되지 않는다. 표시 ON/OFF 제어 D=1 : 표시 on, D=0 : 표시 off C=1 : 커서 on, C=0 : 커서 off B=1 : 문자 on, B=0 : 문자 off DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 I/D S DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 D C B Windows CE.Net
내부 모듈 구조 (9) 명령어 종류 커서/표시 Shift 램의 내용은 변경하지 않고 커서 이동과 표시 쉬프트 제어 S/C=0, R/L=0 : 커서 위치를 좌로 이동(AC -= 1) S/C=0, R/L=1 : 커서 위치를 우로 이동(AC += 1) S/C=1, R/L=0 : 표시 전체를 좌로 이동, 표시는 커서에 따라 움직임 S/C=1, R/L=1 : 표시 전체를 우로 이동, 커서는 움직이지 않는다. DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 S/C R/L X Shift Left (0x18) Shift Right (0x1C) 01 02 …. 0F 10 41 42 …. 4F 50 27 01 …. 0D 0E 67 41 …. 4D 4E Windows CE.Net
내부 모듈 구조 (10) 명령어 종류 Function set DL=1 : 8비트 인터페이스 세트 N=0,F=0 : 1행, 5x7 dot N=0,F=1 : 1행, 5x10 dot N=1,F=x : 2행, 5x7 dot DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 DL N FL X Windows CE.Net
내부 모듈 구조 (11) 명령어 종류 C.G. RAM 주소 설정 D.D. RAM 주소 설정 DB7 DB6 DB5 DB4 DB3 1 A5 A4 A3 A2 A1 A0 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 A6 A5 A4 A3 A2 A1 A0 Windows CE.Net
내부 모듈 구조 (12) Display Data RAM의 주소와 LCD의 문자위치의 관계 D.D.RAM은 8비트 문자코드에 상응하는 디스플레이 데이터를 저장한다 80개의 문자를 저장하며, 아래는 16문자 2라인 LCD의 경우를 나타낸 것임 첫 번째 라인의 끝과 두 번째 라인의 시작의 주소가 연결되지 않으므로 각각의 라인이 끝나게 되면 D.D.RAM의 주소를 새로이 설정해야 한다 열위치-> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1행 -> 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2행 -> 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F D.D.RAM의 주소 Windows CE.Net
내부 모듈 구조 (13) 사용자 정의 문자 출력하기 사용자 정의 문자 패턴의 크기 5x7 8 바이트 정보로 표현 IR 레지스터에 CG-RAM 주소 설정 DR 레지스터에 문자 패턴 정보 1 바이트 설정 8 바이트 정보 입력이 완료될 때까지 2, 3번 과정 반복 DD-RAM에 출력하고자 하는 사용자 정의 문자의 코드(0x00~ 0x07)을 설정 사용자 정의 문자 출력 Windows CE.Net
LCD 장치 초기화 과정 Windows CE.Net
LCD 회로도 Windows CE.Net
LCD 디바이스 드라이버 작성 디바이스 드라이버 작성 헤드파일 작성 Def 파일 작성 /wince420/platform/pxa255pro3/drivers/fpga_lcd/fpga_lcd.cpp 헤드파일 작성 /wince420/platform/pxa255pro3/drivers/fpga_lcd/fpga_lcd.h Def 파일 작성 /wince420/platform/pxa255pro3/drivers/fpga_lcd/fpga_lcd.def Windows CE.Net
LCD 디바이스 드라이버 작성 Sources 파일 작성 OS 이미지에 드라이버 추가 레지스트리 등록 /wince420/platform/pxa255pro3/drivers/fpga_lcd/sources OS 이미지에 드라이버 추가 /wince420/platform/pxa255pro3/cesysgen/files/platform.bib 레지스트리 등록 /wince420/platform/pxa255pro3/cesysgen/files/platform.reg Windows CE.Net
LCD 디바이스 드라이버 작성 소스 빌드 OS이미지 생성 PB상에서 build – open build release directory fpga_lcd 디렉토리로 이동 커맨드라인에서 set WINCEREL = 1 입력 커맨드라인에서 build –cfs OS이미지 생성 커맨드라인에서 makeimg Windows CE.Net
LCD 테스트 프로그램 작성 신규 작성 Platform Builder의 File 메뉴에서 New Project or File..을 실행 적절한 애플리케이션 이름을 Project name에 작성한다. A simple Windows CE application을 선택한다. 소스코드를 작성 Build 또는 Build(selection only)를 실행하여 빌드한다. Windows CE.Net
LCD 테스트 프로그램 작성 기존의 프로젝트 추가 소스코드를 적절한 경로에 복사한다.(예, C:\WINCE420\PUBLIC\pxa255pro3_HH) Platform Builder의 File View 창에서 Insert Existing Project를 선택 *.pbp 파일을 선택한다.(제공된 소스를 카피한 디렉토리의 파일) 프로젝트가 추가되었다.(File View 창에서 확인) Build 또는 Build(selection only)를 실행하여 빌드한다. Windows CE.Net
다운로드 및 테스트 다운로드 테스트 테스트 프로그램 종료 PB 상에서 Target – Run programs Available program에서 lcd_test_app.exe 선택 테스트 프로그램 종료 PB상에서 Target – CE Target Control 타겟 컨트롤창에서 gi all 입력 타겟 컨트롤창에서 kp 프로세스번호 입력 Windows CE.Net