迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

16桁6行7セグメントLCDを試す(3)Arduinoにつないでみる

動作画像arduino

今まではPSoC1で試してたのですが、Arduinoにつないでみました。

とりあえずのスケッチです。PSoC1からの移植。
全セグメントを表示するだけです。急いだのでコメントは付けていません。
(う~む、スケッチを綺麗に貼り付ける方法がわからん^^;;)

void setup()
{

#define SYS_EN 0b100000000010
#define LCD_ON 0b100000000110
#define BIAS2_2 0b100001000000
#define BIAS2_3 0b100001001000
#define BIAS2_4 0b100001010000
#define BIAS3_2 0b100001000010
#define BIAS3_3 0b100001001010
#define BIAS3_4 0b100001010010

#define CS1 0
#define CS2 1
#define CS3 2
#define CS4 3
#define CS5 4
#define CS6 5
#define WR 6
#define DATA 7

pinMode(CS1 , OUTPUT);
pinMode(CS2 , OUTPUT);
pinMode(CS3 , OUTPUT);
pinMode(CS4 , OUTPUT);
pinMode(CS5 , OUTPUT);
pinMode(CS6 , OUTPUT);
pinMode(WR , OUTPUT);
pinMode(DATA , OUTPUT);

digitalWrite(CS1, HIGH);
digitalWrite(CS2, HIGH);
digitalWrite(CS3, HIGH);
digitalWrite(CS4, HIGH);
digitalWrite(CS5, HIGH);
digitalWrite(CS6, HIGH);
digitalWrite(WR, HIGH);
digitalWrite(DATA, HIGH);

for (int i = 1 ; i <= 6 ; i++) {
WriteCommand(i, SYS_EN);
WriteCommand(i, LCD_ON);
WriteCommand(i, BIAS2_4);
}
delay(500);
for (int i = 1 ; i <= 6 ; i++) {
for (int addr = 0 ; addr < 32 ; addr++) {
WriteData(i, addr, 0b0000);
}
}
delay(500);
for (int i = 1 ; i <= 6 ; i++) {
for (int addr = 0 ; addr < 32 ; addr++) {
WriteData(i, addr, 0b1111);
}
}
}

void loop()
{

}

void WriteData(int line, int addr , int data)
{
int bitdata = 0x1400 | (addr << 4) | data ;
CS_LOW(line);
for (int i = 1 ; i <= 13 ; i++) {
if ((bitdata & 0x1000) == 0) {
digitalWrite(DATA, LOW);
}
else {
digitalWrite(DATA, HIGH);
}
bitdata <<= 1;
digitalWrite(WR, LOW);
digitalWrite(WR, HIGH);
}
CS_HIGH(line);
}

void WriteCommand(int line, int bitdata)
{
CS_LOW(line);
for (int i = 1 ; i <= 12 ; i++) {
if ((bitdata & 0x0800) == 0) {
digitalWrite(DATA, LOW);
}
else {
digitalWrite(DATA, HIGH);
}
bitdata <<= 1;
digitalWrite(WR, LOW);
digitalWrite(WR, HIGH);
}
CS_HIGH(line);
}

void CS_HIGH(int line)
{
switch (line) {
case 1: digitalWrite(CS1, HIGH);
break;
case 2: digitalWrite(CS2, HIGH);
break;
case 3: digitalWrite(CS3, HIGH);
break;
case 4: digitalWrite(CS4, HIGH);
break;
case 5: digitalWrite(CS5, HIGH);
break;
case 6: digitalWrite(CS6, HIGH);
break;
default: break;
}
}
void CS_LOW(int line)
{
switch (line) {
case 1: digitalWrite(CS1, LOW);
break;
case 2: digitalWrite(CS2, LOW);
break;
case 3: digitalWrite(CS3, LOW);
break;
case 4: digitalWrite(CS4, LOW);
break;
case 5: digitalWrite(CS5, LOW);
break;
case 6: digitalWrite(CS6, LOW);
break;
default: break;
}
}
関連記事
スポンサーサイト

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

この記事へのトラックバックURL
http://edycube.blog2.fc2.com/tb.php/884-adb8996e

 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

脈拍センサーMAX30102を試す(1) May 25, 2017
脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017
脈拍センサー MAX30100を試す(4)MAX30100_Registers.h を調べる。 May 13, 2017
脈拍センサー MAX30100を試す(3)正常動作?? May 12, 2017
脈拍センサー MAX30100を試す(2)スケッチとライブラリー May 10, 2017
脈拍センサー MAX30100を試す(1) May 08, 2017
Studuino用電池ボックスを作る(2) May 06, 2017
Studuino用電池ボックスを作る May 05, 2017
MT3608モジュールのテスト Apr 30, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (400)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (28)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん