1602 キャラクタディスプレイ データ4bit接続用ライブラリ STM32F103RB CUCLEOボードを想定
Diff: CharLcd4bit.cpp
- Revision:
- 0:0e84781e64cf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CharLcd4bit.cpp Fri Oct 06 05:01:05 2017 +0000 @@ -0,0 +1,127 @@ +#include "CharLcd4bit.h" + +#define WAIT_E() wait_ms(1) +#define CHAR_MAX_PER_LINE 16 +#define LINE_MAX 2 + +/* コンストラクタ */ +CharLcd4bit::CharLcd4bit( + PinName rs, + PinName rw, + PinName e, + PinName db4, + PinName db5, + PinName db6, + PinName db7) : + RS(rs), + RW(rw), + E(e), + DB4(db4), + DB5(db5), + DB6(db6), + DB7(db7) +{ + +} + +/* LCD初期化 */ +void CharLcd4bit::Initialize(void) +{ + lcd8(0x03, false);//8bit mode + lcd8(0x03, false);//8bit mode + lcd8(0x03, false);//8bit mode + lcd8(0x02, false);//4bit mode + lcd4(0x08);//2行表示モード + lcd4(0x0c);//表示設定 + lcd4(0x06);//entry mode + lcd4(0x01);//clear +} + +/* 1行出力 */ +void CharLcd4bit::WriteLine(int line, char *str) +{ + char *ad=0; + + // 文字位置指定 + SetPosition(line, 0); + + ad = str; + for(int i = 0; i < CHAR_MAX_PER_LINE; i++) + { + if(*ad) + { + WriteChar(*ad); + ad++; + } + else + { + // 文字数が足りない時は空白で埋める + WriteChar(' '); + } + } +} + +/* 1行出力 */ +void CharLcd4bit::WriteStr(char *str) +{ + char *ad=0; + + ad = str; + while(*ad) + { + WriteChar(*ad); + ad++; + } +} + +/* 1文字出力 */ +void CharLcd4bit::WriteChar(char c) +{ + lcd8(c >> 4, true); + lcd8(c, true); +} + +/* 文字位置指定 */ +void CharLcd4bit::SetPosition(int line, int position) +{ + if(line==1) + lcd4(0x80 + position); /*1行目*/ + else if(line==2) + lcd4(0xc0 + position); /*2行目*/ +} + +void CharLcd4bit::Clear() +{ + lcd4(0x01); +} + +/* 8bitモード出力 -> 4bit接続に変換して出力 */ +void CharLcd4bit::lcd8(char c, bool isData) +{ + char temp = c; + + DB4 = temp & 0x01; + temp = temp >> 1; + + DB5 = temp & 0x01; + temp = temp >> 1; + + DB6 = temp & 0x01; + temp = temp >> 1; + + DB7 = temp & 0x01; + + if(isData) RS = 1; + E=1; + WAIT_E(); + E=0; + if(isData) RS = 0; + WAIT_E(); +} + +/* 4bitモード出力 */ +void CharLcd4bit::lcd4(char data) +{ + lcd8(data >> 4, false); + lcd8(data, false); +} \ No newline at end of file