| 秋月の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) |
|
| ならばそのとおりに | |
![]() ![]() コンパイルはしておらず、サンプルと同じフォルダの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の表示のお勉強ということで、やってみます。 |