STM32L010F4P6と液晶、ACM1602K-NLW-BBWでHello Worldを表示3(DigitalOut)
7046 ワード
x 原因は、わからないが液晶がちらつく場合は、ウェートを調整してね!!
STM32L010F4P6でmbedを使い16文字2行液晶に
Hello Worldを表示するプログラム
74hc164シフトレジスターを使用した。
液晶とのピン数を節約した。信号線10本から
信号線3本に減らした。
1 CLK クロック端子(緑)
2 RSDATA RS端子とデータの共有端子(黄)
3 E 読み込み書き込み同期信号(青)
いろいろキレイにした。
#include "mbed.h"
DigitalOut swdclk(PA_5);
DigitalOut swdio(PA_7);
DigitalOut en(PA_4);
//液晶に一文字送信する
void seg1(int v,int rs)
{
for(int jj=0;jj<8;jj++){
if( (v<<jj) & 0x80 ){
swdio=1; //ビットが1
} else {
swdio=0; //ビットが0
}//endif
swdclk=1;
swdclk=0; //clk
}//for
swdio=rs;
en=1;wait_ms(1);
en=0;
}//seg1
//文字列の表示 nana_seg
int ns_printf(char *str1) {
//文字の中身がゼロか
while(*str1){
//一文字出力
seg1( *str1 ++ , 1 );
} //while
//戻り値
return(0);
}//ns_printf
//液晶の初期化コード
int lcd_int[]={
0x30,0x30,0x30,0x38,0x08,0x01,0x06,0x08+0x04
};//lcd_init
//メイン関数
int main() {
//GPIOの初期化
en=0;
//液晶の初期化
for(int ii=0;ii<8;ii++){
seg1( lcd_int[ii] , 0);wait_ms(2);
}//for
//seg1( 0x01 , 0 ); wait_ms(1000); //画面クリア
seg1( 0x80+0x00 , 0 ); //1ライン目にカーソルを移動
ns_printf("Hello World !"); //表示
while(1) {} //無限ループ
}//main
//容量削減
void error(const char* format, ...){}
Author And Source
この問題について(STM32L010F4P6と液晶、ACM1602K-NLW-BBWでHello Worldを表示3(DigitalOut)), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/077f18a6efd851ef6331著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .