秋月の128×64グラフィックLCDとMikroBASIC
  
ライブラリ
1700円のグラフィックLCDです。当初2100円でした。
このGLCDには、いろんな方がライブラリを作成し、使われているようです。
Mikroコンパイラは、Helpが充実しているのとライブラリもたくさんあるので、これ一本で
遊ぼうと、BASICのライセンスを買ってみました。
買わなくても、無償版で十分遊べるようです。(制限に引っ掛かってから買えばよかったー)
以下に、グラフィックライブラリのHekp画面の先頭です。
MikroBASICのライブラリ

ライブラリのサンプル回路図ですが。どう見ても、秋月のGLCDと似ているのですが。Veeという部分が違いますが、
その他は、同じです。
えー、これって同じじゃないの?キャラクタLCDなんかは、電源端子に気をつければ、
みんな同じなんだし。
さしあたり、40ピンのPICで手持ちの16F877Aでやってみるかー。
(注)この画面は、何かの役に立つかなhttp://hmss1221.blog44.fc2.com/さんが
Helpファイルを日本語化されており、これを使わせていただいております。
ちなみにこの回路図のサンプルソースは

ライブラリ使用例

GLCDライブラリルーチンの使用例です。

program Glcd_Test
include __Lib_images

dim
  ii as byte
  jj as word
  someText as string[25]

sub procedure delay2S
  delay_ms(2000)                               ' 2 second delay sub procedure
end sub

main:
  CMCON = 7
  ADCON1 = 15

  Glcd_Init(PORTB, 0, 1, 2, 3, 5, 4, PORTD)    ' Glcd_Init_EP5, see Autocomplete
  Glcd_Fill(0xAA)
  delay2S

  while TRUE
    
      Glcd_Fill(0x00)                          ' clear screen
      Glcd_Image(truck_bmp)                    ' display image from library
      delay2S                                  ' call to 2 second delay sub procedure

      Glcd_Fill(0x00)                          ' clear screen

      for jj = 1 to 50                         ' writing a line using for loop
        Glcd_dot(jj, jj, 1)
      next jj
      delay2S

      Glcd_Line(120, 1, 5,60, 1)               ' write line with given cordinates
      delay2S
      Glcd_Line(12, 42, 5,60, 1)
      delay2S

      Glcd_Rectangle(12, 20, 93,57, 1)         ' write rectangle on screen
      delay2S

      Glcd_H_Line(5, 15, 6, 1)                 ' write horizontal line with given cordinates
      Glcd_Line(0, 12, 120, 60, 1)
      Glcd_V_Line(7, 63, 127, 1)               ' write vertical line with given cordinates
      delay2S

      for ii = 1 to 10                         ' write concentric circles using for loop
        Glcd_Circle(63, 32, 3*ii, 1)
      next ii
      delay2S

      Glcd_Box(12, 20, 70, 57, 2)              ' write box on screen with given cordinates
      delay2S

      Glcd_Fill(0x00)                          ' clear screen

      Glcd_Set_Font(@FontSystem5x8, 5, 8, 32)  ' initialize Font 5x8
      someText = "Fonts Demo: 5x8"
      Glcd_Write_Text(someText, 5, 3, 1)       ' write test
      delay2S

      Glcd_Set_Font(@System3x6, 3, 6, 32)      ' initialize Font 3x6
      someText = "SMALL FONT: 3X6"
      Glcd_Write_Text(someText, 20, 5, 1)      ' write test
      delay2S                                  ' call to 2 second delay sub procedure
  wend
end.
Glcd_Init

sub procedure Glcd_Init(dim byref ctrlport as byte, dim cs1, cs2, rs, rw, rst, en as byte, dim byref dataport as byte)

こんな感じで説明が書かれています。

Glcd_Init(PORTB, 0, 1, 2, 3, 5, 4, PORTD)

PortBの0ピンがCS1で、1ピンがCS2で...8ビットのデータはPortDのようです。
そのように、配線してみました。

ならばそのとおりに

コンパイルはしておらず、サンプルと同じフォルダのHexファイルを実行しているところです。
一応動作しました。こんな簡単でいいのー?
でも、画面が変です。左右半分が入れ替わってる?
ためしにCS(チップセレクト)を入れ替えてみます。

H/W側で、CSを入れ替えて、この状態が正常のようですね。
Mikro Basic 開発画面

これは、上記のサンプルをビルドした様子です。
一通りのライブラリを使ってますので13%ですが、このあと、サイズが極端に大きくなるとは思いません。
非常に簡単に使えたのですが

ブレットボードで試験しているので、接触不良か、クロック部分の接触かわかりませんが、動作がすごく不安定です。
オシロ2号機のような試験用の基板を作成してみようかと考えています。
PIC18F2550には、メモリが2Kくらいあるので、さしあたり、1m秒で1秒間のショットが採れるものを作ってみようかと思っています。
BSACOM−AVRにはロータリーエンコーダの読み込みステートメントがあったので
面倒なので、ロータリーエンコーダ部分はAVRかな。4ビットの出力ができればOK、それと、変化したときに
再表示のトリガパルスを出すようにします。
こんなイメージ

PIC18F2550には、メモリが2Kくらいあるので、さしあたり、1m秒で1秒間のショットが採れるものを作ってみようかと思っています。
BSACOM−AVRにはロータリーエンコーダの読み込みステートメントがあったので
面倒なので、ロータリーエンコーダ部分はAVRかな。4ビットの出力ができればOK、それと、変化したときに
再表示のトリガパルスを出すようにします。
トリガのON/OFFスイッチや、スタートスイッチ(プッシュ)なんかも必要ですね。
1mSecで1秒で1KBytとすると、1画面128Byteだから、16ページとなります。
ロータリースイッチでいいじゃん!
まずは、GLCDの表示のお勉強ということで、やってみます。