LoginSignup
0
0

More than 1 year has passed since last update.

STM32L010F4P6と液晶、ACM1602K-NLW-BBWでHello Worldを表示(信号線10本)

Last updated at Posted at 2021-01-20

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) {} //無限ループ
}



9202F8BD-F3B6-4F8A-8559-53EC31630D1F.jpeg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0