1*4882a593Smuzhiyun=================================== 2*4882a593Smuzhiyuncfag12864b LCD Driver Documentation 3*4882a593Smuzhiyun=================================== 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun:License: GPLv2 6*4882a593Smuzhiyun:Author & Maintainer: Miguel Ojeda Sandonis 7*4882a593Smuzhiyun:Date: 2006-10-27 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun.. INDEX 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun 1. DRIVER INFORMATION 14*4882a593Smuzhiyun 2. DEVICE INFORMATION 15*4882a593Smuzhiyun 3. WIRING 16*4882a593Smuzhiyun 4. USERSPACE PROGRAMMING 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun1. Driver Information 19*4882a593Smuzhiyun--------------------- 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunThis driver supports a cfag12864b LCD. 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun2. Device Information 25*4882a593Smuzhiyun--------------------- 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun:Manufacturer: Crystalfontz 28*4882a593Smuzhiyun:Device Name: Crystalfontz 12864b LCD Series 29*4882a593Smuzhiyun:Device Code: cfag12864b 30*4882a593Smuzhiyun:Webpage: http://www.crystalfontz.com 31*4882a593Smuzhiyun:Device Webpage: http://www.crystalfontz.com/products/12864b/ 32*4882a593Smuzhiyun:Type: LCD (Liquid Crystal Display) 33*4882a593Smuzhiyun:Width: 128 34*4882a593Smuzhiyun:Height: 64 35*4882a593Smuzhiyun:Colors: 2 (B/N) 36*4882a593Smuzhiyun:Controller: ks0108 37*4882a593Smuzhiyun:Controllers: 2 38*4882a593Smuzhiyun:Pages: 8 each controller 39*4882a593Smuzhiyun:Addresses: 64 each page 40*4882a593Smuzhiyun:Data size: 1 byte each address 41*4882a593Smuzhiyun:Memory size: 2 * 8 * 64 * 1 = 1024 bytes = 1 Kbyte 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun3. Wiring 45*4882a593Smuzhiyun--------- 46*4882a593Smuzhiyun 47*4882a593SmuzhiyunThe cfag12864b LCD Series don't have official wiring. 48*4882a593Smuzhiyun 49*4882a593SmuzhiyunThe common wiring is done to the parallel port as shown:: 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun Parallel Port cfag12864b 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun Name Pin# Pin# Name 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun Strobe ( 1)------------------------------(17) Enable 56*4882a593Smuzhiyun Data 0 ( 2)------------------------------( 4) Data 0 57*4882a593Smuzhiyun Data 1 ( 3)------------------------------( 5) Data 1 58*4882a593Smuzhiyun Data 2 ( 4)------------------------------( 6) Data 2 59*4882a593Smuzhiyun Data 3 ( 5)------------------------------( 7) Data 3 60*4882a593Smuzhiyun Data 4 ( 6)------------------------------( 8) Data 4 61*4882a593Smuzhiyun Data 5 ( 7)------------------------------( 9) Data 5 62*4882a593Smuzhiyun Data 6 ( 8)------------------------------(10) Data 6 63*4882a593Smuzhiyun Data 7 ( 9)------------------------------(11) Data 7 64*4882a593Smuzhiyun (10) [+5v]---( 1) Vdd 65*4882a593Smuzhiyun (11) [GND]---( 2) Ground 66*4882a593Smuzhiyun (12) [+5v]---(14) Reset 67*4882a593Smuzhiyun (13) [GND]---(15) Read / Write 68*4882a593Smuzhiyun Line (14)------------------------------(13) Controller Select 1 69*4882a593Smuzhiyun (15) 70*4882a593Smuzhiyun Init (16)------------------------------(12) Controller Select 2 71*4882a593Smuzhiyun Select (17)------------------------------(16) Data / Instruction 72*4882a593Smuzhiyun Ground (18)---[GND] [+5v]---(19) LED + 73*4882a593Smuzhiyun Ground (19)---[GND] 74*4882a593Smuzhiyun Ground (20)---[GND] E A Values: 75*4882a593Smuzhiyun Ground (21)---[GND] [GND]---[P1]---(18) Vee - R = Resistor = 22 ohm 76*4882a593Smuzhiyun Ground (22)---[GND] | - P1 = Preset = 10 Kohm 77*4882a593Smuzhiyun Ground (23)---[GND] ---- S ------( 3) V0 - P2 = Preset = 1 Kohm 78*4882a593Smuzhiyun Ground (24)---[GND] | | 79*4882a593Smuzhiyun Ground (25)---[GND] [GND]---[P2]---[R]---(20) LED - 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun4. Userspace Programming 83*4882a593Smuzhiyun------------------------ 84*4882a593Smuzhiyun 85*4882a593SmuzhiyunThe cfag12864bfb describes a framebuffer device (/dev/fbX). 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunIt has a size of 1024 bytes = 1 Kbyte. 88*4882a593SmuzhiyunEach bit represents one pixel. If the bit is high, the pixel will 89*4882a593Smuzhiyunturn on. If the pixel is low, the pixel will turn off. 90*4882a593Smuzhiyun 91*4882a593SmuzhiyunYou can use the framebuffer as a file: fopen, fwrite, fclose... 92*4882a593SmuzhiyunAlthough the LCD won't get updated until the next refresh time arrives. 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunAlso, you can mmap the framebuffer: open & mmap, munmap & close... 95*4882a593Smuzhiyunwhich is the best option for most uses. 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunCheck samples/auxdisplay/cfag12864b-example.c 98*4882a593Smuzhiyunfor a real working userspace complete program with usage examples. 99