PICのお勉強(28) C言語編 SD1602を4bitモードで使ってみる
HI-TECH Cのsampleってフォルダを見てたら,LCDemoというフォルダがあって,そこに液晶ディプレイSD1602でも使えそうなヘッダファイルlcd.hとC言語のソースファイルlcd.cとmain.cってのがあることに気づきました。(気づくのが遅い?)
「これを使えば4bitモードでSD1602を動かせるんじゃね?」と思って,lcd.cのコメントに書いてある通りに配線してみました。セラロックもlcd.cに書いてあるとおり4MHzに変更しました。
前回作ったlesson27.cを元に,lcd.hを#includeするようにしたり,LCDの表示クリアとかデータ表示とかを書き換えたりしたlesson28.cとlcd.cをMPLABのSource Filesに読み込んでコンパイルしてみました。
ちょいとエラーが出たので,「PORTD」を「PORTB」に変えて,「ADCON1 = 0x06;」ってのをコメントアウトして再コンパイルしたら,今度はうまく通りました。
PIC16F84Aに書き込んで動かしてみたところ,ちゃんと動くではありませんか
ただ,「Hello,world!」のあとにカーソルが出てきてブリンクしてるのが気に入らないので,ちょいとネットで調べてlcd.cの終わりの方に書いてある「lcd_write(0xF)」ってのを「lcd_write(0x0C」に書き換えてやりました。これで,前回と同じ表示になりました。
僕が書き換えたlcd.cはこちらです→ lcd.c
lcd.hはこちらです→lcd.h
/************************************
16F84A HI-TECH C v.9.83
4bitモードでLCD SD1602のテスト
RB0~RB3 → LCD DB4~DB7 に接続
RA1 → LCD EN に接続
RA2 → LCD RW に接続
RA3 → LCD RS に接続
************************************/
#define _LEGACY_HEADERS
#include "PIC.h"
#include "lcd.h"
#define _XTAL_FREQ 4000000 //4MHz
__CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT);
void main(void)
{
char s[] = "Hello, world!";
TRISA = 0x00; // 出力端子: RA0~RA4
PORTA = 0x00;
TRISB = 0x00; // 出力端子: RB0~RB7
PORTB = 0x00;
lcd_init(); //SD1602の初期化
while (1)
{
lcd_clear(); //表示クリア
lcd_goto(0); //カーソルを0行目の先頭に移動する
lcd_puts(s); //テキストデータを表示する
__delay_ms(1000); //1000msの時間待ち
lcd_clear(); //表示クリア
lcd_goto(0x40); //カーソルを1行目の先頭に移動する
lcd_puts(s); //テキストデータを表示する
__delay_ms(1000); // 1000msの時間待ち
}
}
前と同じだから,動画は省略。
| 固定リンク | 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)
コメント