PIC16F84電子遊戯(38)
最終更新日:2001年8月26日
電子メッセンジャー「バルちゃん」(1ページ)へ (2ページ)へ (3ページ) (4ページ)へ

電子メッセンジャー「バルちゃん」の録音再生ICの駆動
音声の録音再生には「ISD2560」というICを使います。これは8kHzのサンプリングで60秒間の録音が可能なものです。実際に使用してみると大変使い勝手の良いICです。駆動が簡単で、録音再生される音声の質も結構良いです。音声の入出力に関して周辺部品が少ないのが特徴です。
このICの駆動方法を簡単に説明します。(詳細はICを入手されたときの仕様書を見て下さい。)
まずこのICは「M6プッシュボタンモード」で制御します。このモードは制御が大変簡単です。「M6プッシュボタンモード」にするにはICの「A0」から「A9」を次のように接続します。
IC端子 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
レベル L L L

L

L

L

H

L

H H
機能 MODE 切換
「A8=H、A9=H」にすることで、「A0からA6」までがモード設定の端子となります。
このとき「A6=H」とすることで「M6プッシュボタンモード」とすることが出来ます。
このモードはIC内部の録音再生するアドレスを指定することが出来ませんので、IC内部にはいくつもの音声を区切って録音し、個別に再生することは出来ません。
従って今回の「バルちゃん」で録音出来る音声も必然的に1種類となります。
(細切れに録音し、順次再生することは可能ですが、今回は見送ります。)
次に録音する時のポート制御を説明します。各ポートを次のように制御します。(とっても簡単ですね。)
PICポート ICポート (1) (2) (3) (4) 録音 (5) (6) (7) (8)
RA0 CE H H L H H L H H
RA1 PD H L L L L L L H
RA2 P/R * L L L L L L L
RA3 EOM L L H H H L L L
まずは「PD=L」、「P/R=L」として「CE=L」とすれば録音が開始されます。
開始後は「CE=H」として次の制御に備えます。録音中は「EOM=H」となり録音中を示しています。
次に「CE=L」とすれば録音は停止します。「CE=H、PD=H」に戻して終了です。
録音時間は約60秒あります。60秒を過ぎると録音は出来ません。そのときは「EOM=L」となりますので、これを利用して自動停止させます。
同様に録音再生を制御するポートを再生側で駆動すればを再生することが出来ます。
PICポート ICポート (1) (2) (3) (4) 再生 (5) (6) (7) (8)
RA0 CE H H L H H L H H
RA1 PD H L L L L L L H
RA2 P/R * H H H H H H H
RA3 EOM L L H H H L L L
「PD=L」、「P/R=H」として「CE=L」とすれば再生開始です。一度「CE=H」として再び「CE=L」とすれば再生は停止します。再生中は「EOM=H」となり再生中を示しています。再生が終了すれば「EOM=L」となるのでこれを利用して再生を自動停止させます。「CE=H、PD=H」に戻して終了です。
以上理解出来ましたか。以外に簡単でしたね。
電子メッセンジャー「バルちゃん」の目の点滅
目の点滅は2色LEDの輝度を変えながら行っています。約0.2msecのタイマー割り込みを256回カウントして50msecごとに輝度を変化させています。
赤色LED 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 6 5 4 3 2 1 0 0 0 0 0 0 0
緑色LED 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 7 7 7 7 7 7 7 6 5 4 3 2 1
色の変化   赤  黄  緑
上のように28色(?)を切り換えています。約1.3秒で点滅することになります。
ハード上は左右の目をそれぞれ別に駆動出来るのですが、今回は左右を同時に駆動しています。割り込みの処理中は赤色LED、緑色LEDに対応するRAMのみ制御してメインルーチンでそのRAMを参照しながらポートを制御しています。
red_led
		btfss	led_data,0
		goto	red_led_off
		bcf	PORTB,1
		nop
		bcf	PORTB,3
		nop
		goto	green_led
red_led_off
		bsf	PORTB,1
		nop
		bsf	PORTB,3
		nop
green_led
		btfss	led_data,1
		goto	green_led_off
		bcf	PORTB,0
		nop
		bcf	PORTB,2
		nop
		goto	main_next
green_led_off
		bsf	PORTB,0
		nop
		bsf	PORTB,2
		nop
電子メッセンジャー「バルちゃん」の録音時の点滅
録音時の青色LEDの点滅は赤色と緑色のLEDの点滅データを利用して行っています。
それゆえ変な点滅をしていますが、録音時のインジケータとしてはOKとしましょう。
blue_led
		btfss	led_data,0
		goto	blue_led_next
		bsf	PORTB,4
		nop
		goto	main_next
blue_led_next
		btfss	led_data,1
		goto	blue_led_off
		bsf	PORTB,4
		nop
		goto	main_next
blue_led_off
		bcf	PORTB,4
		nop
		goto	main_next
電子メッセンジャー「バルちゃん」のキー操作
それぞれのキーを操作したことがわかるように次のRAMを用意します。
それぞれビットが立っているとそのモードに入っていることを意味します。
push_key
7 6 5 4 3 2 1 0
- - - - - - PLAY KEY REC KEY
モード中はそのモードのキーしか有効ではありません。
モード中にキーを押せばそのモードを終了します。
再生時は再生が終わればそのモードを終了します。
録音時は録音出来る最大時間を超えればそのモードを終了します。
通常PICはSLEEPモードで待機しています。(このあたりは「携帯着信ランプ」を参照して下さい。)
キーを押せば、SLEEPモードから動作モードに入ります。その時キースキャンをしてどちらのキーが押されているか判断してそのモードに入ります。
REC KEYを例にソースを見て下さい。キーが押されていれば少し時間を待って再びキーが押されているかチェックすることによってチャタリングを防止しています。
キーに対する実際の処理はキーを離した後、行います。
main_key1
		btfsc	PORTB,5
		goto	main_key2		
		call	wait_1
		btfsc	PORTB,5
		goto	main_key2
		bsf	push_key,0
main_key1p	btfss	PORTB,5
		goto	main_key1p
		bcf	PORTA,1		;PD L
		nop
		bcf	PORTA,2		;REC MODE
		nop
		bcf	PORTA,0		;CE L(REC START)
		nop
		bsf	PORTA,0		;CE H
		goto	main_loop
動作中はそのモードにキーが押されるか、録音再生が終了(EOM=Lになる)するまで動作を続けます。(詳細は次回のソースを見て下さい。)
電子メッセンジャー「バルちゃん」の回路図の修正
実際に「バルちゃん」を使用してみると、重大なことに気が付きました。
それは簡単に録音出来るということは、簡単に前のメッセージが書き換えられるということです。せっかく録音した内容が消えてはたまりません。
ということで、トグルスイッチを付けて、簡単には録音出来なくしました。
といっても複雑なことはしたくないので録音用プッシュスイッチに直列にトグルスイッチを付けただけです。簡単には書き換えたくない時には重宝(?)します。
プッシュスイッチS3が構成上不要になりましたが回路上のプルアップ抵抗はそのままにしてあります。
トグルスイッチを付けた写真です。ついでに録音用青色LEDのイルミネーションにも工夫(?)して「さる」を付けてみました。
ということで、今回はここまでとしておきましょう。実際に使ってみると結構遊べます。
お出かけの際に留守メッセージとして使うと、面白いです。
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。

不明点などあればメールお願いいたします。nonchansoft@nifty.com

Copyright(c)2000-2001 nonchansoft