LoginSignup
0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-21

x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!

STM32L010F4P6でmbedを使い16文字2行液晶に
Hello Worldを表示するプログラム

74hc164シフトレジスターを使用した。
液晶とのピン数を節約した。信号線10本から
信号線3本に減らした。

1 CLK クロック端子(緑)
2 RSDATA RS端子とデータの共有端子
3 E 読み込み書き込み同期信号

h_con39.jpg


#include "mbed.h"
 
//*          *****  *****       ***  * *
//*         *       *    *     *   * * *
//*         *       *    *     *   * * *
//*         *       *    *     *   * * *
//*         *       *    *     *   * * *
//********   *****  *****       ***  * *
 
#define swclk1  PA_5    //A4
#define swdio1  PA_7    //A6
#define en1     PA_4    //A3
 
DigitalOut swdclk(swclk1);
DigitalOut swdio(swdio1);
DigitalOut en(en1);
 
//Serial pc2(USBTX, USBRX); // tx, rx
 
int v;
int rs;
void seg1()
{
    swdio=((v>>7)&1);swdclk=1;swdclk=0; //7
    swdio=((v>>6)&1);swdclk=1;swdclk=0; //6
    swdio=((v>>5)&1);swdclk=1;swdclk=0; //5
    swdio=((v>>4)&1);swdclk=1;swdclk=0; //4
    swdio=((v>>3)&1);swdclk=1;swdclk=0; //3
    swdio=((v>>2)&1);swdclk=1;swdclk=0; //2
    swdio=((v>>1)&1);swdclk=1;swdclk=0; //1
    swdio=((v>>0)&1);swdclk=1;swdclk=0; //0
    swdio=rs;   //delay(500);
    en=1;       //delayMicroseconds(40);
    wait_ms(1);
    en=0;       //delay(500);
}
 
 
int main() {
    
    //pc2.baud(9600);
   
    //pc2.printf("Hello World!");

    swdio=0;
    for(int i=0;i<10;i++){
        swdclk=1;
        wait_ms(15);
        swdclk=0;
        wait_ms(15);
    }
    
    //ファンクションセット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) {}
}


143DDF63-9A6A-4ABB-B125-45A51949CDEF.jpeg

led_sift_1.jpg

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