情報電子工学演習Ⅴ(ハードウェア実技演習) PICマイコンによる光学式テルミンの製作 第4回 明るさ変化に応じた音の発生 ■ スケジュール 第4回(7/3) <内 容> <集合場所> 明るさ変化に応じた音の発生 [S2-9] ・課題のチェック(回路図) ・説明 第5回(7/10) 自由製作 ① ・課題のチェック(フローチャート) ・プログラム作成&回路製作 [実験室] 2.明るさの検出 暗 抵抗値 [kΩ] 100 明 52.5 10 3 1.8 1 CdSセル 1 10 100 照度 [lux] CdSセル(MI5527)の特性 1.6 1.44 1000 CdSを利用した明るさ検出 V 実験回路2 デジタルマルチメータ を使いVDDの測定 CdSを利用した明るさ検出 V 実験回路2 デジタルマルチメータ を使い、出力Vout の測定 明るさ検出回路の動作確認結果 電源電圧 VDD= 3.0 [V] No 1 2 3 4 測定条件 1回目 蛍光灯直下で手をかざさない センサ受光面より10cmの高さ センサ受光面より5cmの高さ センサ受光面より1cmの高さ Vout 課題2の解答例 Vout [V] 2回目 3回目 平均 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説) PICマイコンのA/D変換データ Din = Vin / VDD×255 (A/D変換器の分解能:8bit) 電源電圧 VDD= 3.0 [V] No 1 2 3 4 測定条件 蛍光灯直下で手をかざさない センサ受光面より10cmの高さ センサ受光面より5cmの高さ センサ受光面より1cmの高さ Vin [V] (Vout) 1.445 2.076 2.271 2.742 Din 122(7A) 176(B0) 193(C1) 233(E9) 小数点以下を切り捨て, ()は16進数に変換 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説) A/D 変換値 FF ド 閾値D1 レ 閾値D2 ミ 00 ドレミ音を決定する処理 第4回 明るさ変化に応じた音の発生 ■ 説明内容 1)明るさ検出回路の出力電圧Voutが、PIC マイコンのA/D変換器を通してどのような 値(A/D変換データ)になるか? 2)A/D変換データを3つの領域(ド/レ/ミ 音を鳴らす)に分けるための閾値設定 3)A/D変換器の設定とドレミ音を決定する 処理(ソースプログラム3の解説) A/D変換で使用する特殊レジスタ ■ ADCON0レジスタ (Fig.10) ■ ADSELレジスタ (Fig.11) A/D変換機能のプログラミング(2) ◇ 初期設定 (sample03.asm , p.11の省略部分) START BCF MOVLW MOVWF BSF MOVWF MOVWF MOVLW MOVWF MOVLW MOVWF BCF NOP INTCON,7 07H CMCON STATUS,RP0 B‘00000001’ ;変換クロック:Fosc/2, AN0を指定 ANSEL B‘00000001’ ;GPO(ANO) データ方向を入力指定 TRISIO 080H OPTION_REG ※P.8のソースプログラム2との STATUS,RP0 違いはこの4行 A/D変換機能のプログラミング(2) ◇ A/D変換処理 (sample03.asm, A/D変換データを得るまで) LOOP MOVLW MOVWF CALL BSF ADCHECK BTFSC GOTO MOVF MOVWF B'00000001' ADCON0 WAIT1 ADCON0,1 AN0 ADCON0,1 ADCHECK ADRESH,0 A → Aレジスタ A/D変換機能のプログラミング(2) ◇ ドレミ音の決定 (sample03.asm) MOVLW D1 SUBWF A,0 BTFSC STATUS,0 GOTO TMR1SET1 ;-----------------------------MOVLW D2 SUBWF A,0 BTFSC STATUS,0 GOTO TMR1SET2 ;================== ※1, 2行目における閾値D1, D2の定義 #DEFINE D1 XXH #DEFINE D2 XXH ■ BTFSC STATUS,0 ? → STATUSレジスタの0ビットをテストし(調べ)、 クリア(ゼロ)の場合は次の命令をスキップする。 1-ゼロ 0-ゼロではない IRP RP1 RP0 TO RD Z bit8 DC C bit1 1-桁上り,桁下りあり 0-なし StATUSレジスタの機能 ※STATUSレジスタのCフラグやZフラグは、ADDLW(加算)命令や SUBWF(減算)命令などによって変化する。 ■ SUBWF(減算)命令と桁上がり(桁あふれ) 例題 「04H - 06H」, 「04H - 03H」 04H B’00000100’ ( 06H B’00000110’ を反転して+1 ) -06H B’11111010’ 04H-06H B’11111110’ -------------------------------------------------------------04H B’00000100’ ( 03H B’00000011’ を反転して+1 ) -03H B’11111101’ 04H-03H B’100000001’ STATUSレジスタのCフラグに格納される A/D変換機能のプログラミング(2) ◇ タイマデータの指定 (sample03.asm) TMR1SET3 MOVLW MOVWF MOVLW MOVWF GOTO TMR1SET2 MOVLW MOVWF MOVLW MOVWF GOTO TMR1SET1 (省略) XX T1H XX T1L LOOP XX T1H XX T1L LOOP A/D変換機能のプログラミング(3) ◇ シュミットトリガの実現 ← 手ぶれ対策 FF ド D1 D1S TMR1の変更なし D2 D2S TMR1の変更なし 00 レ ミ テキストp.12 のフローチャート → 課題3 ◆ 来週の自由製作(課題チェック後) 1)sample3.asm をメモ帳で開き、 D1, D2, ドレミ各音のTMR1 データを書き替える。 2)アセンブル、PICマイコンへの 書込み 3)動作確認 4)課題3の実現、オリジナル作品 の製作 実験室にて (発表時のアイディア点 +10までの評価) プログラム作成 は計算機実習室 (+20までの評価)
© Copyright 2024 ExpyDoc