« iPad Wi-FiモデルでソフトバンクWi-Fiスポットを使うには | トップページ | PICのお勉強(29) C言語編 16F88でA/D変換 »

2012年7月 7日 (土)

PICのお勉強(28) C言語編 SD1602を4bitモードで使ってみる

Sd1602_4bit_mode HI-TECH Cのsampleってフォルダを見てたら,LCDemoというフォルダがあって,そこに液晶ディプレイSD1602でも使えそうなヘッダファイルlcd.hとC言語のソースファイルlcd.cとmain.cってのがあることに気づきました。(気づくのが遅い?)
 「これを使えば4bitモードでSD1602を動かせるんじゃね?」と思って,lcd.cのコメントに書いてある通りに配線してみました。セラロックもlcd.cに書いてあるとおり4MHzに変更しました。
 Lesson28 前回作ったlesson27.cを元に,lcd.hを#includeするようにしたり,LCDの表示クリアとかデータ表示とかを書き換えたりしたlesson28.cとlcd.cをMPLABのSource Filesに読み込んでコンパイルしてみました。
 ちょいとエラーが出たので,「PORTD」を「PORTB」に変えて,「ADCON1 = 0x06;」ってのをコメントアウトして再コンパイルしたら,今度はうまく通りました。
 PIC16F84Aに書き込んで動かしてみたところ,ちゃんと動くではありませんかwink
 ただ,「Hello,world!」のあとにカーソルが出てきてブリンクしてるのが気に入らないので,ちょいとネットで調べてlcd.cの終わりの方に書いてある「lcd_write(0xF)」ってのを「lcd_write(0x0C」に書き換えてやりました。これで,前回と同じ表示になりました。
僕が書き換えたlcd.cはこちらです→ lcd.c

/************************************
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の時間待ち
}
}

前と同じだから,動画は省略。

|

« iPad Wi-FiモデルでソフトバンクWi-Fiスポットを使うには | トップページ | PICのお勉強(29) C言語編 16F88でA/D変換 »

PICマイコン」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/26930/55135422

この記事へのトラックバック一覧です: PICのお勉強(28) C言語編 SD1602を4bitモードで使ってみる:

« iPad Wi-FiモデルでソフトバンクWi-Fiスポットを使うには | トップページ | PICのお勉強(29) C言語編 16F88でA/D変換 »