工学ゼミ Ⅲ 安全 環境活動に役立つ LEDイルミネーションの製作 第 1 回
1. 概要 3~5 名の学生グループで安全 環境活動に役立つ LED イルミネーションを作製する 作品のデザイン画や部品リスト 回路図 動作フロー図等は事前に作成し 計画的に作業を行うことが求められる
2. 達成すべき目標 作品に係る資料を事前にまとめ それに基づいて製作が行える 集団の中で 自身の知識 技術を積極的に応用しながら 実用的でオリジナルな作品を導くことができる
3. 制限条件 電子部品 (LED, マイコン, ユニバーサル基板, 配線コード, 電池, 電池ボックス ) は支給されたものを使用すること 外観に使用する部材は 1 グループあたり 1,000 円までの経費 ( 自己負担 ) を認める - その他 - 作品の製作過程は ipad で写真を撮り 中間 発表や最終発表で活かすこと
6. スケジュール 第 1 回ガイダンス ; サンプル作品の紹介 グループを編成し 担当や作品のコンセプトを決める 担当 : リーダー 設計 部品調達 製作 ( 加工 / プログラミング ) 第 2 回設計 1; 作品のデザイン画 部品リスト 回路図 動作フロー図をまとめる 第 3 回設計 2; 上記の資料をTAにチェックしてもらい 指摘事項を修正する 第 4 回製作 1 第 5 回中間発表 ;1グループあたり3 分程度で現在の進捗状況を発表する 第 6 回製作 2 30 秒の作品紹介ビデオを作成し 発表会 2 日前までにコンテンツサーバへアップロードする 第 7 回発表会 ; 各グループが作成した作品紹介のビデオを上映する 第 5 回と第 7 回は S2-8 に集合 それ以外は 情報電子実験室
過去の作品を紹介
PIC マイコン? - ピン配置 - LED の点灯制御に利用 RA0 から RA7(PORTA) RB0 から RB7(PORTB) RC0 から RD7(PORTC) RD0 から RD7(PORTD) RE0 から RE2(PORTE) RE3 は使用できない VDD は電源 ( 電池 ) の + VSS は - 側に!
L11 L12 LED の点滅を制御する ( 回路 ) (1) スイッチの操作 (2)PIC マイコンのポート出力を利用 SW1 3V
LED の点滅を制御する ( プログラム ) 例 1)RA2 に接続した LED を点灯 その他は消灯 RA0 RA2 RA1 RA3 MOVLW MOVWF B 00000100 PORTA RA4 RA5 例 2)RA0, RA3, RA4 に接続した LED を点灯 その他は消灯 RA0 RA2 RA4 RA1 RA3 RA5 MOVLW MOVWF B 00011001 PORTA PORTA は以下の RA7 から RA0 の 8 つのポートに出力する値をまとめている RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0
PIC マイコンのプログラム作成手順 1 プログラム設計 ( 動作フロー図の作成 ) 2 コーディング ( ソースファイル ***.ASM の作成 ) 3 アセンブル ( オブジェクトファイル ヘキサファイル ***.HEX の作成 ) 4 シミュレーション ( 誤りの検出 ) 5 PIC ライターを使用してマイコンにプログラムを書き込む 6 実機のテスト プログラム開発環境
イルミネーション製作の手順 ( 推奨 ) 1. 担当 作品の基本コンセプトを決める ( 本日 ) 2. 作品のデザイン画 部品リスト 回路図 動作フロー図をまとめる ( 次回 ) 3. 回路図と動作フロー図をもとに各時刻の LED 点滅データをポートごとに整理する ( 各ポートの出力パターン表を作成 ) 4. 各ポートの出力パターン表をもとにコーディング
アセンブラ命令語 バイト処理命令 ; バイト (8 ビット ) の値を処理 1) 加算 (UA はユーザが設けたデータ格納レジスタ ) ADDWF UA, 0 ; W = W+UA ADDWF UA, 1 ; UA = W+UA (0とすると加算結果をWレジスタに保存) 2) 論理積 ANDWF UA, 0 ; W = W & UA 3) 値をゼロクリア CLRF UA ; UA=0 CLRW ; W=0
4) 値 (0, 1) の反転 COMF UA, 1 5) 値を 1 減らす DECF UA, 1 ; UA = UA ^ 0xFF ; UA = UA-1 6) 値を1 減らし 0になったら次の命令をスキップ DECFSZ UA, 1 ; UA = UA 1 IF (UA==0) SKIP GOTO KURIKAESHI ; RETURN ; サブルーチンから戻る
7) 値を1 増やす INC UA, 1 ; UA = UA + 1 8) 値を1 増やし 0になったら次命令をスキップ INCFSZ UA, 1 ; UA = UA +1 ; IF (UA==0) SKIP; 9) 論理和 IORWF UA, 1 ; UA = W UA 10) データの移動 ( コピー ) MOVF UA, 0 ; W = UA (UAの値をWへ) MOVWF UA ; UA = W (Wの値をUAへ)
11) 何もしない NOP 12)1ビット左シフト RLF UA, 1 ; UA= 01000000, C=1( キャリー ) とすると UA= 10000001, C=0 になる 13)1ビット右シフト RRF UA, 1 ; UA= 01000000, C=1( キャリー ) とすると UA= 10100000, C=0 になる
14) 減算 SUBWF UA, 1 ; UA = UA W 15) 上位 4 ビットと下位 4 ビットの値を入れ替え SWAPF UA, 1 16) 排他的論理和 XORWF UA, 1 ; UA= 01010000 とすると UA= 00000101 ; UA = UA ^ W
ビット処理命令 1) あるビットをゼロにする BCF INTCON, 7 ; INTCONレジスタの7ビットをゼロ 2) あるビットを1にセットする BSF STATUS, 5 ; STATUS レジスタの 5 ビット を 1 にする * INTCON や STATUS レジスタは 特殊レジスタ 予め機能が定められている IRP RP1 RP0 TO RD Z DC C bit8 1- ゼロ 0- ゼロではない bit1 Status レジスタの機能 1- 桁上り, 桁下りあり 0- なし
3) ビット検査命令 BTFSC UA, 3 ; UAの3ビットを調べ ゼロ ( クリア ) だったら 次の命令をスキップ BTFSS UA, 3 ; UAの3ビットを調べ 1( セット ) だったら 次の命令をスキップ
リテラル命令 ; 定数を伴う演算 1) 加算 ADDLW 34H ;W = W + 34H 2) 論理積 ANDLW 45H ; W = W & 45H 3) 論理和 IORLW 56H ; W = W 56H 4) 定数の読出し ( 移動 ) MOVLW 78H ; W = 78H * Hが付いている場合は値が16 進数表記
5) 減算 SUBLW 89H ; W = 89H W 6) 排他的論理和 XORLW 9AH ; W = W ^ 9AH CPU 動作モード設定 解除 1) ウォッチドックタイマクリア CLRWDT 2) スリープモード設定 SLEEP
ジャンプ命令 1) サブルーチンの呼び出し CALL SUB1 ; サブルーチンSUB1を呼び出し * サブルーチンSUB1 内のRETURN 命令が実行されると CALLの次に記述した命令が実行される 2) 指定ラベルへジャンプ GOTO SAKURA ; ラベルSAKURAやジャンプ 3) サブルーチンから戻る RETURN RETLW k (Wにkを格納して戻る) RETFIE ( 割込み利用の場合 )
8-3-2. プログラムの形式 ( 資料 pp.5-6) スタート 初期設定 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち B 00000000 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち
8-3-2. プログラムの形式 ( 資料 pp.5-6) スタート 初期設定 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち W レジスタを介して目的のポートへデータを出力 LOOP MOVLW B'11111111' MOVWF PORTA MOVWF PORTB MOVWF PORTC MOVWF PORTD MOVWF PORTE CALL WAIT0 B 00000000 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち
8-3-2. プログラムの形式 ( 資料 pp.5-6) スタート 初期設定 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち LOOP MOVLW B'11111111' MOVWF PORTA MOVWF PORTB MOVWF PORTC MOVWF PORTD MOVWF PORTE CALL WAIT0 B 00000000 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち
8-3-2. プログラムの形式 ( 資料 pp.5-6) スタート 初期設定 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち LOOP MOVLW B'11111111' MOVWF PORTA MOVWF PORTB MOVWF PORTC MOVWF PORTD MOVWF PORTE CALL WAIT0 B 00000000 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち
8-3-2. プログラムの形式 ( 資料 pp.5-6) スタート 初期設定 MOVLW MOVWF MOVWF MOVWF MOVWF MOVWF CALL (PORTA) (PORTB) (PORTC) B 00000000 PORTA PORTB PORTC (PORTD) PORTD (PORTE) PORTE WAIT0 1 秒待ち B 00000000 (PORTA) (PORTB) (PORTC) (PORTD) (PORTE) 1 秒待ち
数値データの表記 10 進 D 10 16 進 H 10または10H 2 進 B 00001010 プログラムメモリマップ データメモリマップ
< 参考書 ホームページ > 1. 角山正博, 佐藤栄一 ; コンピュータの基礎, 青山社, 2013. 2.http://www.picfun.com/, 電子工作の実験室, 後閑.(PIC マイコンの機能やプログラミングについて解かりやすく解説 ) 3.http://www.microchip.co.jp/, マイクロチップテクノロジージャパン.(MPLAB や PIC16F1939 などのデータシートをダウンロード可能 ) 4.http://esato.net/ex/micom/, PIC マイコンによる LED イルミネーション製作, 佐藤.( コーディングやシミュレーションの操作手順を写真入りで説明 )