As Wouter pointed out, you cannot directly write to a single pixel.
The display matrix basically behaves as a monochromatic bitmap. It is physically divided between two identical controllers, one for the left half, the other for the right half. Their data/strobe lines are wired together and you can select the one to talk to by the chip select pins, CS1B and CS2B. Both are active high and both halves of display would be written simultaneously if you had asserted both CS pins.
The display is vertically divided into eight pages, which are laid atop one another, making eight pixel high rows. These vertical eights of pixels are connected with bytes of the page and each page has 64 bytes. Hence,
- 8 pages * 8 bits = 64 rows
- 2 controllers * 64 bytes per page = 128 columns
for the whole display. Nice picture of the memory layout can be found here.
For example, how would the pixel at (5, 8) be turned dark).
I assume that with (5,8) notation you mean fifth column from the left and eighth row from the top, as is widely used in computer graphics. Unfortunately, manufacturer of the controller calls the vertical coordinate (page index) X, which is pretty confusing.
Row no. 8 belongs to page no. 1. You need to issue
Page Select command with the argument
1, that is
00 10111001 for bit values in the table.
After this, you need to issue
Set address command to set the column index
5, that means bit values of
00 01000101. Now the "cursor" of the display is set to the byte containing the specified pixel.
Now you can write desired contents of the byte via command
Write Display Data. Eighth row is the LSB of page 1 and a logical one on this bit makes your desired pixel dark.
Unfortunately, you can only write a whole byte. Thus, you need either a copy of the display contents in your MCU's RWM, or first read the current value from the LCD (command
Read Display Data), perform logical OR with
0b00000001 and write back.
Note that the address on the page (Y register) advances automatically as you write data. You can easily fill the whole page just by sequential writes - if you have enough memory in your controlling MCU, you could just allocate a block of 2*8*64=1024 bytes, keep and manipulate the bitmap there and send the whole display contents/modfied pages upon request. This depends on your application.
This protocol is very common for the GLCD 128x64 displays. I believe you could also find a ready-to-use library for your MCU, providing you with some basic graphics (line, rectangle, possibly even ellipse) and/or text output without directly manipulating the LCD.