PICのお勉強(27) C言語編 液晶ディスプレイ SD1602を使ってみる
「ブレッドボードではじめる マイコンプログラミング
」に載ってるプログラムを参考にして(この本には本当にお世話になりました),秋月電子で買ったSD1602っていうLCDモジュールを8bitモードで動作させてみました。8bitモードは,DB0~DB7の8ピンを使って文字コードと制御コード合わせて8bitのデータを1度にやりとりし,4bitモードはDB0~DB3の4ピンを使って,8bitのデータを二度に分けてやりとりするんだそうです。ふーん。
まあそれはともかく,このLCDは16ピンが一列に並んでるから,ブレッドボードに載せるのに具合が良いですな。
また,このLCDは,LEDバックライトを点けることができますが,この写真のようにJ3にハンダを盛り,R9に100Ωの抵抗をハンダ付けしてやると,15,16番ピンに電圧をかけなくてもバックライトが点灯するようになります。
僕が買ったのは,バックライトがグリーンですが,オレンジの方が視認性が良いらしいですよ。今度買ってみようかな。
そういえば,コントラスト調整用の3番ピンは,GNDに落としちゃったけど,これで大丈夫なのかな。ちゃんと表示されてるから大丈夫ですよね。
LCDに14本もジャンパワイヤをつながなくちゃいけないので,なんだかぐちゃぐちゃになってますが,なんとかお約束の「Hello,World!」を表示させることができました。感動。
ソースはこれ→lesson27.cですが,SD1602を8bitモードで動作させるための関数をまとめたヘッダファイルSD1602_8bit_mode.hも必要になります。HI-TECH Cで使えるように,オリジナルを少し改変してあります。
これをlesson27.cと同じフォルダに入れておいてコンパイルすれば,ちゃんとHEXファイルができるはずです。
/************************************
16F84A HI-TECH C v.9.83
LCDモジュール SD1602のテスト
************************************/
#define _LEGACY_HEADERS
#include "PIC.h"
#include "SD1602_8bit_mode.h"
#define _XTAL_FREQ 20000000 //20MHz
__CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT);
void main(void)
{
char s[] = "Hello, world!";
TRISA = 0x00; //RA0~RA4は出力
PORTA = 0x00;
TRISB = 0x00; //RB0~RB7は出力
PORTB = 0x00;
SD1602_init(); // SD1602の初期化
while (1)
{
SD1602_clear(); // 表示クリア
SD1602_control(0x80); // カーソルを0行目の先頭に移動
SD1602_print(s); // テキストデータを表示
__delay_ms(1000);
SD1602_clear();
SD1602_control(0xC0); // カーソルを1行目の先頭に移動
SD1602_print(s);
__delay_ms(1000);
}
}
| 固定リンク | 0
「PICマイコン」カテゴリの記事
- ZK-80で足し算(2020.07.23)
- TK-80互換機 ZK-80のキット(2020.07.21)
- PICのお勉強(37) C言語編 12F683でA/D変換(2015.06.02)
- UVレジンでLEDイルミネーション (2)(2015.05.15)
- PICのお勉強(35) C言語編 PWMでサーボモータを動かす(2014.10.05)
コメント