PICを使って液晶画面に絵を表示


   
   前にPICをつかったもので TVにつないでブロック崩しができると言うものを作りました
   http://www.geocities.co.jp/Playtown-Spade/8132/robocon/p-breakout.html
   などを見て
   で 自分でもやってみたいな〜と思って
 
〜TVの仕組み〜
   といっても ビデオ信号 と言うものの知識が必要なので そう楽には行きません
   まずTVの仕組みを勉強!
   TVはブラウン管という物でできています
   
   その画面に A のように 文字が表示されているわけですが
   
   実はこれ A と表示されているわけではないんです
   まるでプリンターのように 上から一行づつ表示されているのです
   
   こんな風に
   それが 人間の目にはわからないほど 速くやっているので
   Aと言う文字が表示されているように見えるのです
   
   正確に言うと 一秒間に30回 上から下まで画像を描いています
   ってことは 紙芝居の紙も 一秒間に30回交換できたら
    動いてる絵に見えるんでしょうね(紙芝居のおじちゃん疲れるね(^^;))
 
   さらにTVは ただ単に上から下に映像をやっているのではなく
   左から右へ そして右まで行ったらひとつ下へ移るという 動作もしています
   まさにプリンターの動きです
   
   こんな感じです(大体ね)
   だから TVを ビデオカメラなんかで撮ると チカチカするんです
 
   ちなみにこの 横の線の一つ一つのことを 走査線 と言います
   この横の線(走査線)は 上から下まで全部で525本あります
 

画像(1秒間に) 30
走査線(上から下まで) 525本

〜同期信号〜
   でTVの仕組みが分かったところで
   信号ですが TVには 一本の線で信号を送っています
   上の動画のように 表示する部分が右へ移動していって
   右まで行ったら 一行下の左へ行ってで また右へ行くと言う順番に
   画像を表示していきますから 信号は一本でいいです
   電気が流れていたら 今の表示してるところは黒にして・・・
   のようにすれば 画像を表示することができますからね
   
   プリンターを思い浮かべてもらえば分かると思います
   インクをつけたところに 点ができる
   その点がたくさん いろんなところについて 字や絵ができます
   
   でもひとつ問題が・・・
   ただ単に信号を送っていては
   
   のように 「中央にAを置きたいのに 場所がずれる」
   と言うことが起こります
   ちょうど今TVが 左から右へと画像を表示している場所が下の方なのに
   A という文字の信号をTVに送ったら 下のほうに A とでてしまいます
   そこで こんな風に ずれがないように同期信号(同期信号)と言うものを画像といっしょに送ることになってます
   同期信号には 水平同期信号 と 垂直同期信号 と言うものがあります
   これは 映像信号(画像ね)と混ぜて TVに送られます

水平同期信号(HSYNC ともいう)は その名の通り

    水平に動いている(左から右へと)TVの映像を写している物を 一番左へ戻すための信号です

    これをTVが受けると TVは今映像を左から右へ写しているのを ひとつ下の行の一番左に戻します

    こうすることで 画像が 左右にずれるのを防ぎます

垂直同期信号(VSYNC ともいう)は

    大体想像がつくと思いますが 水平同期が左右だから こんどは上下です

    垂直同期信号をTVが受けると 今度は今映像を写しているものを 一番上に戻します

    こうすることで 画像が 上下にずれるのを防ぎます

   これで Aという文字が ずれることはありませんね
   http://elm-chan.org/docs/rs170a/spec_j.html
   や
   http://www.nahitech.com/nahitafu/mame/mame6/mame6.html
   は参考になります
 
〜思ったこと〜
   で 話を戻して TVに画像を表示しようとしたんですが・・・
   「難しい・・・」 信号は一本だし 映像信号と同期信号を混ぜておくんなきゃ行けないし・・・
   そこで 秋月で売っている液晶
   http://akizukidenshi.com/catalog/items2.php?c=rgb&s=popularity&p=1&r=1&page=#K-00084
   を買って使うことにした
   これは普通のTVと違い 映像信号とビデオ信号が分かれている
   その上 映像信号は 赤 青 緑と これも3色に分かれているので TVよりまし
   早速買ってきてつくってみた
   ・・・
   おお! ちゃんと TVもつないで見ることができる
   これで 液晶が壊れていないって事がわかった
 
   http://www.geocities.jp/tye605/develop/pic/PIC03_RGB.htm
   を参考にして PIC回路を作ってみた
 
   まずプログラムは PICのタイマー0 という割り込みを使って水平同期を作った

水平同期は 約93μ秒ごとに 約4.7μ秒のパルスを入れる

   ということを参考にね
   あと 等化パルスや垂直同期信号もプログラムして
   早速 PICの回路を作って液晶とつないで やってみた
   
   ん〜 どうもおかしい 赤い線はうすく微妙に出ているが
   ・・・変だ そこで ペン型オシロスコープを使って 同期信号を見てみた すると
   
   64μ秒のはずの 同期信号が 69μ秒だ!
   早速プログラムを手直しした
   
   おっ さっきよりましになっている
   だがやはり まだ同期信号が 遅いので もうちょっと速くしてみたところ
   
   おっ 成功だ! 左側に 赤い縦の線が出ている!
   いや〜 今日は星座占いで 運勢の悪い日のはずなのに ついている!
   ちょちょいっとプログラムも改造してみると
   
   はっはっはっ これぐらい楽勝ですよ〜
   一応プログラムを

   

   画像表示ができるようになったので
   インベーダーゲームでも作ってみようと思う

まとめ(?)

画像が乱れているときは まず 水平同期信号を疑ってみよ

  あれは意外と 厳しい 1μ秒でも長かったり短かったりすると

  すぐ画像が乱れる

 

戻る