LED表示機みたいなのを作ってみる
二進数で入れた数字順にON/OFFしてくれるロジックIC
74HC154を使おうと思います。
2進数で4桁の値を入力し、16本の線をON/OFFできます
▼内部の論理回路はこんなんらしいです
■LEDを沢山並べる回路図
片方の74HC154にはNOTを取り付けて反転させないと、
一つ一つのLEDが選択できなくなりますので、
うまく点灯できない表示機が出来てしまいます
しかし、はんだ付けしているとNOTを取り付けるのを忘れてしまったため
下の写真を見るといらぬ所にICソケットが付いています。
一度、半田付けしたソケットを剥がすのは大変でした。
▼作成中
▼とりあえず半田付け完了
10*10で精魂つきました。
▼裏側
■とりあえず表示機を作ったものの、
2進数で値を入力して、一個一個のLEDを点灯させてるだけでは
面白くないから
適当にコントロールしてみる
PIC16F84を使って、実験用の回路を作成
セラロック付けてピンに配線伸ばしただけですけど。
▼実際に作ってみた基盤
▼表示機にくっつける
電源の+/-の位置が逆だったため、配線がびょょんと伸びてます
■昔、秋月で売ってたpiccでひらがなの"あ"を表示するプログラムを書く
さすがANSI C非準拠
なんだか、独特のプログラム ポインタ操作で2時間ぐらい悩んだ。
だって、* を付けるとなぞの動作するんだもん笑
配列が使えん、配列操作よりも、ポインタ操作の方が速いから
実行効率はこっちのがいいんだろうねえ!!
レジスタ少ないから、配列操作すると
きついのかもと思ったりもする、バイナリもでかくなるし。
//--------------------------------------------------------
#include "16F84.h"
int porta @ 0x5;
int portb @ 0x6;
int trisa @ 0x85;
int trisb @ 0x86;
#define X 10
#define Y 10
int x;
int y;
char*buf;
char*data1(void){
//piccではstatic const および 配列を扱えないみたいだから
//仕方が無く文字列ポインタを返す関数を作成
return "\x0\x0\x0\x0\x1\x0\x0\x0\x0\x0"
"\x0\x1\x1\x1\x1\x1\x1\x1\x1\x0"
"\x0\x0\x0\x0\x1\x0\x0\x0\x0\x0"
"\x0\x0\x1\x1\x1\x1\x1\x1\x0\x1"
"\x0\x1\x0\x0\x1\x0\x0\x0\x1\x0"
"\x1\x0\x0\x0\x1\x0\x0\x1\x1\x0"
"\x1\x0\x0\x0\x1\x0\x1\x0\x0\x1"
"\x0\x1\x0\x0\x1\x1\x0\x0\x0\x1"
"\x0\x1\x0\x0\x1\x1\x0\x0\x1\x0"
"\x0\x0\x1\x1\x0\x1\x0\x1\x1\x0";
}
void main(){
trisa = 0; //ポートを出力に設定
trisb = 0;
while(1) {
buf = (char*)data1();
for(y=0;y<Y;y++){
for(x=0;x<X;x++){
//piccではメモリの値を呼び出すには@を使うらしい
if(@buf != 0x00) portb=((y << 4) | x);
buf++;
}
}
}
}
//eof---------------------------------------------------------
▼コンパイルしてPICに書き込んで電源ON
"あ" が表示できました。
めでたしめでたし笑
▲トップページ
>
マイコンなど