忍者ブログ
グラビアアイドルについて語るブログ。
[1] [2] [3] [4] [5] [6]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

どうもごぶさたしています、シモネッタです。

2か月近くブログを更新していなかったのですが、久しぶりに覗いてみたら継続してアクセスがあるようで驚きました。9月下旬に秋月のPICプログラマーを購入したものの、その後ほとんど何もしないまま現在にいたっております。

そろそろ再開したいなと考えてはいるのですが、具体的にいつ何をしようかというプランはありません。少なくともV850関係はやらないと思います。マイコンの勉強用としてお世話になりましたが、基板は極悪に使いにくかったですし、そろそろ次のステップ、PICのようなシンプルなマイコンで何ができるかを考えてやっていきたいという気持ちの方が強いです。

その他の近況ですが、新しいブログを始めました。こことはかなり毛色の異なるものになっています。このブログをどうするかというのは現時点ではまったく考えていません。あまり更新していませんが、覗いてやってもいいぞという方はお立ち寄りください。
ぷちとまと2号館

また、遅ればせながらTwitterもやっています。よろしければfollowしてくださいませ。
Twitter / simonetta

ではまた、ごきげんよう。
PR
8×8ドットマトリックス LED の点灯実験をしました。使用したのは、秋月で売っていた TOM-1588BH です。

ドットマトリックスLED

前回の実験では3桁の7セグメント LED を使用しましたが、それを8桁に拡張すると考えればいいと思います。つまり、各列が1つの7セグ LED に相当し、各列の点灯状態(0x00〜0xff)が、7セグ LED に表示される数値に相当するという訳です。

単純に8桁に拡張するのであれば、P90〜P97 を列の点灯内容に、P98〜P915 を点灯する列の選択に使用すればよいのですが、8つのポートを使用して点灯する列を1つ選択するのは無駄なので、3-to-8 ラインデコーダの TC74HC238AP を使用しました。3つのポートを使用すれば 0x00〜0x07 を表現できるので、点灯する列を決定できます。今回は P98〜P910 を使用しました。

接続のメモです。(n = 1, 2, …, 8)

[CON3-1] +3.3V → 74HC238(VCC)
[CON3-1] +3.3V → 74HC238(G1)
[CON3-10] GND → 74HC238(G2A)
[CON3-10] GND → 74HC238(G2B)
[CON3-10] GND → 74HC238(GND)

[CON1-9] P98 → 74HC238(A)
[CON1-10] P99 → 74HC238(B)
[CON1-11] P910 → 74HC238(C)

74HC238(Y0) → 10kΩ → 2SC1815<1>(E)
74HC238(Y1) → 10kΩ → 2SC1815<2>(E)
74HC238(Y2) → 10kΩ → 2SC1815<3>(E)
74HC238(Y3) → 10kΩ → 2SC1815<4>(E)
74HC238(Y4) → 10kΩ → 2SC1815<5>(E)
74HC238(Y5) → 10kΩ → 2SC1815<6>(E)
74HC238(Y6) → 10kΩ → 2SC1815<7>(E)
74HC238(Y7) → 10kΩ → 2SC1815<8>(E)

[CON3-10] GND → 2SC1815<n>(B)

2SC1815<1>(C) → (-)LED(COL1)
2SC1815<2>(C) → (-)LED(COL2)
2SC1815<3>(C) → (-)LED(COL3)
2SC1815<4>(C) → (-)LED(COL4)
2SC1815<5>(C) → (-)LED(COL5)
2SC1815<6>(C) → (-)LED(COL6)
2SC1815<7>(C) → (-)LED(COL7)
2SC1815<8>(C) → (-)LED(COL8)

[CON1-1] P90 → 680Ω → (+)LED(ROW1)
[CON1-2] P91 → 680Ω → (+)LED(ROW2)
[CON1-3] P92 → 680Ω → (+)LED(ROW3)
[CON1-4] P93 → 680Ω → (+)LED(ROW4)
[CON1-5] P94 → 680Ω → (+)LED(ROW5)
[CON1-6] P95 → 680Ω → (+)LED(ROW6)
[CON1-7] P96 → 680Ω → (+)LED(ROW7)
[CON1-8] P97 → 680Ω → (+)LED(ROW8)

以下、主要なコードです。タイマ割り込みハンドラで P9H への出力値を0から7まで変化させると、74HC238 経由で点灯する列が切り替わります。また、列の表示内容を P9L に出力します。100回ごとに以下の2パターンを交互に表示します。

■□■□■□■□ □■□■□■□■
□■□■□■□■ ■□■□■□■□
■□■□■□■□ □■□■□■□■
□■□■□■□■ ■□■□■□■□
■□■□■□■□ □■□■□■□■
□■□■□■□■ ■□■□■□■□
■□■□■□■□ □■□■□■□■
□■□■□■□■ ■□■□■□■□


#define T 128

static unsigned char led[8] = {
0x55, 0xaa, 0x55, 0xaa,
0x55, 0xaa, 0x55, 0xaa
};
static int cur = 0;
static int count = 0;

// ポート初期化
void init_port()
{
// P90〜P98の設定
PMC9L = 0; // 入出力ポート
PM9L = 0; // 出力モード
P9L = led[cur];
P9L = 0;

// P98〜P910の設定
PMC9H = 0; // 入出力ポート
PM9H = 0; // 出力モード
P9H = (unsigned char)cur;
}

// タイマ初期化
void init_timer()
{
// TMP1の設定
TP1CE = 0; // 動作禁止
TP1CKS = 7; // fxx/512
TP1MD = 0; // インターバル・タイマ・モード
TP1CCR0 = T - 1;
TP1CE = 1; // 動作許可
}

// 割り込み初期化
void init_intc()
{
// INTTP1CC0
TP1CCPR0 = 0; // 割り込み優先度 = 0
TP1CCMK0 = 0; // 割り込み許可
}

// タイマ割り込みハンドラ
void timer_int_handler()
{
int i;

if (++count == 100) {
// LEDに表示する値を変更
count = 0;

for (i = 0; i < 8; i++) {
led[i] = ~led[i];
}
}

// 列の切り替え
if (++cur == 8) cur = 0;
P9H = (unsigned char)cur;

// 列の内容を設定
P9L = led[cur];
}


【備考】gcc で開発しています。
この夏から LED などで遊ぶようになって以来、秋葉原で4桁の7セグメント LED を見たことがなかったのですが、ラジオ会館の若松通商で、アノードコモンの TLR4115 というやつを発見しました(157円)。

迷わず購入したのですが、すでに3桁まで実験したこともあり、点灯させてみようという気が全く起こりません(苦笑)
9/15〜16 に開催中の「Mozilla 24」のプログラム、「出張 Shibuya.js 24」(@ベルサール九段)に行ってきました。覚え書きとしてまとめておきます。


■INSIDE Gecko

1. パース
2. コンテントツリー
3. フレームツリー
4. レイアウト(reflow)
5. ディスプレイリスト
6. 描画

という処理の流れを、順を追って解説されました。
個人的には楽しめましたが、Mozilla のソースコードに興味がない人にはどうだったでしょうか…
プレゼンが公開されています。

【関連】
Gecko hacking tutorial - MDC


■AutoPagerize

「次のページ」を自動で読み込んでくれる Greasemonkey スクリプト。お話の重点は、スクリプトよりも Wiki で管理している SITEINFO の方にあったような印象です。

【関連】
AutoPagerize - Userscripts.org


■新世代ブラウザのクロス開発まとめ

エディタ関連、オフライン関連など、カテゴリーごとに新機能の解説がありました。説明が駆け足だったのが少々残念でした。

僕はそうではありませんが、ウェブアプリ開発者にとっては非常に貴重な情報がまとめられていたのではないでしょうか。

amachang さん的には、Safari がオススメだそうです。
プレゼンが公開されています。


■JSの JSによる JSのための マルチスレッド

別の言語でマルチスレッド経験があると、JavaScript で同じようなことがしたい時に悩むんですよね。それを可能にしてしまったライブラリです。一度使ってみたいなと思います。

【関連】
A Tutorial - Concurrent.Thread.Wiki


■ライトニングトーク

○ECMAScript4 リファレンス実装

現状では、SpiderMonkey の実装も遅れ気味で、出来もイマイチらしいです。

○5分でわかる Photoshop の正しい使いかた

実演がかなりウケてましたね。
プレゼンが公開されています。

○jQueryつまみぐい

call と apply とか、jQuery がいかにして高速化を実現しているかというお話でした。

○SHA-1の高速化tips

プレゼンが公開されています。

○Facebook.JS

FBJSでFacebookアプリ内でJavaScriptを利用」に基づいたお話でした。

○JavaScript.GIF

○ustream で JSONP Loader

タイトルとは全然違うお話になってました。HatenaStar.js を使ってるのを誰もツッコんでくれなかったとか。
プレゼンが公開されています。
3桁7セグ LED の点灯実験をしました。使用したのは、秋月で売っていた C-533SR(カソードコモン)です。

7セグメントLED

この LED は a〜g および dp が共通ですので、3桁同時点灯はできませんが、前回の実験と比較して、配線がすっきりしました。

接続のメモです。(n = 1, 2, 3)

[CON3-1] +3.3V → 74HC4511(VCC)
[CON3-1] +3.3V → 74HC4511(LT)
[CON3-1] +3.3V → 74HC4511(BI)
[CON3-10] GND → 74HC4511(LE)
[CON3-10] GND → 74HC4511(GND)

[CON1-1] P90 → 74HC4511(A)
[CON1-2] P91 → 74HC4511(B)
[CON1-3] P92 → 74HC4511(C)
[CON1-4] P93 → 74HC4511(D)

74HC4511(a) → 680Ω → LED(a)
74HC4511(b) → 680Ω → LED(b)
74HC4511(c) → 680Ω → LED(c)
74HC4511(d) → 680Ω → LED(d)
74HC4511(e) → 680Ω → LED(e)
74HC4511(f) → 680Ω → LED(f)
74HC4511(g) → 680Ω → LED(g)

[CON3-10] GND → 2SC1815<n>(B)
2SC1815<n>(C) → (-)LED<n>

[CON1-9] P98 → 10kΩ → 2SC1815<1>(E)
[CON1-10] P99 → 10kΩ → 2SC1815<2>(E)
[CON1-11] P910 → 10kΩ → 2SC1815<3>(E)

以下、主要なコードです。タイマ割り込みハンドラで点灯する LED を切り替え、表示する値を 74HC4511 に出力します。また、100回ごとに数値をインクリメントしています。基本的には前回の実験とまったく同じなのですが、カソードコモンですのでポートへの出力値が前回とは反転しています。

#define T 256

static int led[3] = { 0, 0, 0 };
static int cur = 0;
static int count = 0;

// ポート初期化
void init_port()
{
// P90〜P94の設定
PMC9L = 0; // 入出力ポート
PM9L = 0; // 出力モード
P9L = (unsigned char)led[cur];

// P98〜P910の設定
PMC9H = 0; // 入出力ポート
PM9H = 0; // 出力モード
P9H = (unsigned char)(1 << cur);
}

// タイマ初期化
void init_timer()
{
// TMP1の設定
TP1CE = 0; // 動作禁止
TP1CKS = 7; // fxx/512
TP1MD = 0; // インターバル・タイマ・モード
TP1CCR0 = T - 1;
TP1CE = 1; // 動作許可
}

// 割り込み初期化
void init_intc()
{
// INTTP1CC0
TP1CCPR0 = 0; // 割り込み優先度 = 0
TP1CCMK0 = 0; // 割り込み許可
}

// タイマ割り込みハンドラ
void timer_int_handler()
{
if (++count == 100) {
// LEDに表示する値を変更
count = 0;
led[0] += 1;
if (led[0] == 10) {
led[0] = 0;
led[1] += 1;
if (led[1] == 10) {
led[1] = 0;
led[2] += 1;
if (led[2] == 10) {
led[2] = 0;
}
}
}
}

// 点灯LEDの切り替え
if (++cur == 3) cur = 0;
P9H = (unsigned char)(1 << cur);

// 点灯LEDの値を設定
P9L = (unsigned char)led[cur];
}


デバッグ用回路として作っておくと便利そうですが、この程度の配線でも何度か間違えましたので、ユニバーサル基板上に作ろうとすると失敗してしまうかもしれません。経験のためにも挑戦したいと考えてはいるのですが、今はブレッドボードで数をこなしていく時期なのかなとも思っています。

【備考】gcc で開発しています。


忍者ブログ [PR]
ブログ内検索
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新コメント
[07/07 tiffany jewelry uk]
[09/17 車載モニター・阿蘇テック]
[08/30 愛]
[06/12 シモネッタ]
[06/11 arms22]
最新トラックバック
フリーエリア
あわせて読みたい
    Firefox 2 無料ダウンロード
    バーコード
    プロフィール
    名前:
    シモネッタ
    性別:
    非公開
    カウンター
    アクセス解析