
有機ELのディスプレイデバイスのこと。
それ自体が発行物のため、液晶のように何層にも分かれる
必要がなく薄くできる。

http://strawberry-linux.com/catalog/items?code=18052
このサイトで仕様書もゲットできます。

表示に成功し。
視野角がとてつもなく広く、きれいな表示ができる。
最大256k色の表示が可能。
どんな感じになるか分からないが、とりあえず習得しているコマンドで、
アニメーションをしてみた。
しているのは、
1画面クリア
2玉の表示
玉の移動
1へもどる
の繰り返しである。壁にぶつかるたびにランダムで片方向の速度を
変化させている。
ol.amc
#include <24FJ64GA002.h>
#include <stdlib.h>
#fuses FRC,NOJTAG,OSCIO,NOWDT,NOPROTECT//内部クロック
#use delay(internal=8000000) //クロック8MHz
#define D0 PIN_B6
#define D1 PIN_B7
#define D2 PIN_B8
#define D3 PIN_B9
#define D4 PIN_B10
#define D5 PIN_B11
#define D6 PIN_B12
#define D7 PIN_B13
#define D8 PIN_B14
#define RD PIN_A0
#define RW PIN_A1
#define CS PIN_B4
#define DC PIN_A4
#define RES PIN_A3
void write_c(unsigned char cmd);
void write(unsigned char cmd);
void write_d(unsigned char cmd);
void init();
void main(){
int i;
init();
delay_ms(120);
write_c(0x8e); // clear window command
write_d(0);
write_d(0);
write_d(130);
write_d(130);
delay_ms(100);
write_c(0x92); // fill enable command
write_d(0x01);
delay_ms(10);
// draw 100 random circles
for(i = 0;i < 100;i++){
write_c(0x86); // draw circle command
write_d(rand() % 130);
write_d(rand() % 130);
write_d(rand() % 64);
write_d(rand());
write_d(rand());
write_d(rand());
write_d(rand());
delay_ms(10);
}
// write directly to ram, this fills up bottom 1/3 of display with color pattern
write_c(0x5c);
for (i = 0; i < 2000; i++){
write_c(0x5c);
write_d(i);
write_d(i);
write_d(i);
}
while(1){
output_toggle(PIN_B15);
delay_ms(200);
}
}
void init(){
write(0);
output_low(RD);
output_low(DC);
output_low(RW);
output_low(CS);
output_low(RES);
delay_ms(100);
output_high(RES);
write_c(0xa0); // Set Re-map / Color Depth
write_d(0x34);//0xb4); // 262K 8bit R->G->B
write_c(0xa1); // Set display start line
write_d(0x00); // 00h start
write_c(0xA6); // Normal display
write_c(0xad); // Set Master Configuration
write_d(0x8e); // DC-DC off & external VcomH voltage & external pre -charge voltage
write_c(0xb0); // Power saving mode
write_d(0x05);
write_c(0xb1); // Set pre & dis_charge
write_d(0x11); // pre=1h dis=1h
write_c(0xb3); // clock & frequency
write_d(0xf0); // clock=Divser+1 frequency=fh
write_c(0xbb); // Set pre-charge voltage of color A B C
write_d(0x1c); // color A
write_d(0x1c); // color B
write_d(0x1c); // color C
write_c(0xbe); // Set VcomH
write_d(0x1f); //
write_c(0xc1); // Set contrast current for A B C
write_d(0xaa); // Color A
write_d(0xb4); // Color B
write_d(0xc8); // Color C
write_c(0xc7); // Set master contrast
write_d(0x0f); // no change
write_c(0xca); // Duty
write_d(0x7f); // 127+1
write_c(0xaf); // Display on
}
void write_c(unsigned char cmd){
output_high(RD);
output_low(DC);
output_low(CS);
output_low(RW);
delay_us(20);
write(cmd);
delay_us(20);
output_high(DC);
output_high(CS);
output_high(RW);
output_low(RD);
}
void write_d(unsigned char cmd){
output_high(RD);
output_high(DC);
output_low(RW);
output_low(CS);
delay_us(20);
write(cmd);
delay_us(20);
output_high(DC);
output_high(CS);
output_high(RW);
output_low(RD);
}
void write(unsigned char cmd){
/* output_bit(D0,(cmd&0b10000000)>>7);
output_bit(D1,(cmd&0b01000000)>>6);
output_bit(D2,(cmd&0b00100000)>>5);
output_bit(D3,(cmd&0b00010000)>>4);
output_bit(D4,(cmd&0b00001000)>>3);
output_bit(D5,(cmd&0b00000100)>>2);
output_bit(D6,(cmd&0b00000010)>>1);
output_bit(D7,cmd&0b00000001);*/
output_bit(D7,(cmd&0b10000000)>>7);
output_bit(D6,(cmd&0b01000000)>>6);
output_bit(D5,(cmd&0b00100000)>>5);
output_bit(D4,(cmd&0b00010000)>>4);
output_bit(D3,(cmd&0b00001000)>>3);
output_bit(D2,(cmd&0b00000100)>>2);
output_bit(D1,(cmd&0b00000010)>>1);
output_bit(D0,cmd&0b00000001);
}