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



"あ" が表示できました。
めでたしめでたし笑


▲トップページ > マイコンなど