x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!
STM32L010F4P6でmbedを使い8ビットモードで16文字2行液晶に
Hello Worldを表示するプログラム
いろいろ 2021/10/09
選定の理由は、単純に安いから秋月で400円
液晶の電源は、絶対5Vでそれ以下だと、濃度が調整
出来ない。やってみそ
電池でも使える事を考えて3.3Vから5VにDCDCしている
実験用の原型モデルとしては、自分の言うのもなんだけど
わかりやすいく、良く出来ていると思う。
注意としては、濃度調整を付けて調整してね!!
メリットは、わかりやすい(初心者向け)
デメリットは、遅いくて、最適化されていない
まず、シフトが遅い 一般的には、シフトの回数分
クロックが掛る。表引きがおすすめ
コマンドは、表引きにした方がスッキリする。
表引きかオペランドにダイレクトに描いた方が速い。
わかりやすくする為にデータを8本使っている
思ったより配線が大変で間違えやすい。
#include "mbed.h"
// 8bit hellworld
//* ***** ***** *** * *
//* * * * * * * *
//* * * * * * * *
//* * * * * * * *
//* * * * * * * *
//******** ***** ***** *** * *
DigitalOut sl(PC_14); //RS
DigitalOut d0(PC_15); //D0
DigitalOut d1(PA_1); //D0
DigitalOut d2(PA_2); //D1
DigitalOut d3(PA_3); //D2
DigitalOut d4(PA_4); //D3
DigitalOut d5(PA_5); //D4
DigitalOut d6(PA_6); //D5
DigitalOut d7(PA_7); //D6
DigitalOut en(PB_1); //E
//Serial pc2(USBTX, USBRX); // tx, rx
int v;
int rs;
void seg1()
{
d7=((v>>7)&1); //7
d6=((v>>6)&1); //6
d5=((v>>5)&1); //5
d4=((v>>4)&1); //4
d3=((v>>3)&1); //3
d2=((v>>2)&1); //2
d1=((v>>1)&1); //1
d0=((v>>0)&1); //0
sl=rs; //delay(500);
en=1; //delayMicroseconds(40);
wait_ms(1);
en=0; //delay(500);
}
int main() {
//pc2.baud(9600);
//pc2.printf("Hello World!");
en=0;
//ファンクションセット1
rs=0;
v=0x30;seg1();
wait_ms(5);
//ファンクションセット2
rs=0;
v=0x30;seg1();
wait_ms(1);
//ファンクションセット3
rs=0;
v=0x30;seg1();
//ファンクションセット 2ラインモード
rs=0;
v=0x38;seg1();
//表示オフ
rs=0;
v=0x08;seg1();
//画面クリア
rs=0;
v=0x01;seg1();
wait_ms(2);
//エントリーモードセット
rs=0;
v=0x06;seg1();
//表示オン
rs=0;
v=0x08+0x04;seg1();
//@文字の表示
rs=1;
v='@';seg1();
wait_ms(2);
//1ライン目にカーソルを移動
rs=0;
v=0x80+0x00;seg1();
wait_ms(2);
int ii;
char ss1[]="Hello World !";
ii=0;
while(ss1[ii]!=0){
//文字の表示
rs=1;
v=ss1[ii];ii++;seg1();
wait_ms(2);
}
while(1) {} //無限ループ
}