2009年8月18日,新潟大学 「情報」と「ものづくり」 の実践教育3 下保敏和,佐藤亮一.

Slides:



Advertisements
Similar presentations
論理回路 第3回 今日の内容 前回の課題の解説 論理関数の基礎 – 論理関数とは? – 真理値表と論理式 – 基本的な論理関数.
Advertisements

論理回路 第 11 回
10. メモリ 五島 正裕.
マイコン入門実践教育プロセス説明 第4システム部 ES443 塩島秀樹.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
Handel-C基礎 および 7セグとマウスのハンドリング
Verilog HDL 12月21日(月).
基礎プログラミングおよび演習 第9回
テープ(メモリ)と状態で何をするか決める
FPGAを用いたMG3用 インターフェース回路の解説
ロジック回路学習ボード MLCTB-BASE 説明書 NAND 7400 NOT 7404 AND 7408 OR 7432
4.2.2 4to1セレクタ.
実習4 2次元テーブルの利用 フローチャートの作成.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
PIC制御による赤外線障害物 自動回避走行車
実習3 ページコントロール フローチャートの作成.
情報処理Ⅱ 第4回 2007年10月29日(月).
神経すいじゃ君の素顔 ~回路の独立化と   パラレル通信の仕組み~.
配列(1) 第9回目 [6月15日、H.16(‘04)] 本日のメニュー 1)前回の課題について 2)前回の宿題について 3)配列 4)課題
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
第8回  論理ゲートの中身と性質 論理ゲートについて,以下を理解する 内部構成 遅延時間,消費エネルギー 電圧・電流特性 瀬戸.
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
演習課題の進め方 1.製作内容の決定 2.部品の配置を決める (回路図を描く) 3.処理の流れをフローチャートに表す
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第3週目
第5回 今日の目標 §1.6 論理演算と論理回路 ブール代数の形式が使える 命題と論理関数の関係を示せる
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
R8C/Tiny I/Oポートの仕組み.
電子回路Ⅰ 第13回(2009/01/28) 演算増幅器.
実 習 4 2次元テーブルの利用.
プログラミング演習Ⅱ 課題4第3週 画像処理 (1) ビット演算子.
ワンチップマイコンを用いた DCモータ走行車制御
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
ディジタル回路 5. ロジックの構成 五島 正裕.
計算機構成 第2回 ALUと組み合わせ回路の記述
ICトレーナーの構成 7セグメントLED ブレッドボード XOR OR AND NAND 電源端子 スイッチ端子 LED端子 データLED
3. 論理ゲート の 実現 五島 正裕.
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
FETの等価回路 トランジスタのバイアス回路(復習)
信号伝搬時間の電源電圧依存性の制御 による超伝導単一磁束量子回路の 動作余裕度の改善
2009年8月17日,新潟大学 「情報」と「ものづくり」 の実践教育2 佐藤亮一,下保敏和.
ディジタル回路 9. 演算回路 五島 正裕.
論理回路 第4回
  第3章 論理回路  コンピュータでは,データを2進数の0と1で表現している.この2つの値,すなわち,2値で扱われるデータを論理データという.論理データの計算・判断・記憶は論理回路により実現される.  コンピュータのハードウェアは,基本的に論理回路で作られている。              論理積回路.
カラス撃退装置 ~カラスもたじたじ~ 8班 班長 藤井将之     梅田陽平     大村泰史     藤井秀徳.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
コンピュータアーキテクチャ 第 3 回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 3 回.
コンピュータの五大要素 入力装置 データ(プログラム)を取り込む 出力装置 処理結果のデータを外部に取り出す
情報処理Ⅱ 2005年10月28日(金).
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
プログラミング演習Ⅱ 課題4第4週 画像処理 (2) 応用.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
論理回路(and,or,not)を作成. 回路を組み合わせ半/全加算器.
信号伝搬時間の電源電圧依存性の制御 による超伝導単一磁束量子回路の 動作余裕度の改善
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
信号データの変数代入と変数参照 フィードバック制御系の定常特性 フィードバック制御系の感度特性
JavaScript    プログラミング入門 2-3 式と演算子 2006/10/12 神津 健太.
情報処理Ⅱ 2006年10月27日(金).
アルゴリズム ~すべてのプログラムの基礎~.
情報処理3 第4回目講義         担当 鶴貝 達政 12/17/2019.
Presentation transcript:

2009年8月18日,新潟大学 「情報」と「ものづくり」 の実践教育3 下保敏和,佐藤亮一

試験について 重要 のページを要チェックしてください. PIC回路,プログラムが完成しなくても,合否には関係ありません

本日の内容 午前 9:20-10:10 論理演算(NOT, AND, OR) 10:20-11:10 プログラム説明(論理演算,テーブル処理) 11:20-12:10 演習 午後 13:20-14:10 モータを用いる回路の説明           (ドライブ能力,入力ポートについて) 14:20-15:10 回路作成 15:20-16:10 (プログラム作成(条件文),説明) 16:20-17:00 試験

午前の目次 論理演算 論理演算のプログラム解説 テーブル処理のプログラム解説 演習

午前の目次 論理演算 論理演算のプログラム解説 テーブル処理のプログラム解説 演習

1.論理演算 重要 否定(NOT)演算 論理積(AND)演算 論理和(OR)演算 A OUT 1 A B OUT 1 A B OUT 1

1.論理演算 重要 否定(NOT)演算 論理積(AND)演算 論理和(OR)演算 1011 0110 1011 0110 1011 0110 1111 0000 1111 0000 0100 1001 1011 0000 1111 0110

午前の目次 論理演算 論理演算のプログラム解説 テーブル処理のプログラム解説 演習

2.論理演算のプログラム sample-84-not.c 否定(NOT)を用いたプログラム例 for(;;) { pb = 1; for (i=0; i<13 ; i++) { PORTB = ~pb; PORTA = ~pb >> 8; timer_wait(INTERVAL); pb <<= 1; } pb = 1;  8ビットだと 0000 0001 PORTB = ~pb; により,以下のようになる. 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 NOT PORTB 7 6 5 4 3 2 1 0 1 1 1 1 1 1 1 0 0がON,1がOFF 点滅が逆になる 実際には,PORTA(0-4), PORTB (0-7)の 合計13個のLEDが点滅する.

2.論理演算のプログラム sample-84-logic.c 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } /* off from high bit */ pb = 0x1000; for (i=0; i<13 ; i++) { PORTB |= pb; PORTA |= pb >> 8; timer_wait(INTERVAL); pb >>= 1; }

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } PORTB = 0xff; PORTA = 0x1f; PORTBとPORTAの初期値 PORTA PORTB 0001 1111 1111 1111

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } pb = 1; 変数pbに 0000 0001 を代入

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } PORTB &= ~pb; 変数pbのNOT値 1111 1110とPORTBの初期値とのAND演算 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 AND 1 1 1 1 1 1 1 0

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } PORTA &= ~(pb >> 8); 変数pbの8ビット右シフトのNOT値 11111111値と,PORTAの初期値とのAND演算 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 AND 0 0 0 1 1 1 1 1 PORTA PORTB 0001 1111 1111 1110 よって,1回目のループでの PORTA, PORTBの値は

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } pb<<=1; 変数pbの値を左に1ビットシフト 0000 0010

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } PORTB &= ~pb; 変数pbのNOT値 1111 1101とPORTBの値とのAND演算 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 AND 1 1 1 1 1 1 0 0

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } PORTA &= ~(pb >> 8); 変数pbの8ビット右シフトのNOT値 11111111値と,PORTAの初期値とのAND演算 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 AND 0 0 0 1 1 1 1 1 PORTA PORTB 0001 1111 1111 1100 よって,2回目のループでの PORTA, PORTBの値は

2.論理演算のプログラム sample-84-logic.c 前半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* * and & , or | , not ~ * shift left << , shift right >> */ /* on from low bit*/ PORTB = 0xff; PORTA = 0x1f; pb = 1; for (i=0; i<13 ; i++) { PORTB &= ~pb; PORTA &= ~(pb >> 8); timer_wait(INTERVAL); pb <<= 1; } 以上を繰り返すと, PORTA PORTB 0001 1111 1111 1100 1回目 0001 1111 1111 1100 2回目 3回目 0001 1111 1111 1000 0001 0000 0000 0000 12回目 0000 0000 0000 0000 13回目

2.論理演算のプログラム sample-84-logic.c 後半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* off from high bit */ pb = 0x1000; for (i=0; i<13 ; i++) { PORTB |= pb; PORTA |= pb >> 8; timer_wait(INTERVAL); pb >>= 1; } pb = 0x1000; 変数pbに 0001 0000 0000 0000 を代入

2.論理演算のプログラム sample-84-logic.c 後半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* off from high bit */ pb = 0x1000; for (i=0; i<13 ; i++) { PORTB |= pb; PORTA |= pb>>8 ; timer_wait(INTERVAL); pb >>= 1; } PORTB |= pb; 変数pbの値 0001 0000 0000 0000とPORTBの値とのOR演算 0001 0000 0000 0000 0000 0000 0000 0000 OR 0001 0000 0000 0000

2.論理演算のプログラム sample-84-logic.c 後半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* off from high bit */ pb = 0x1000; for (i=0; i<13 ; i++) { PORTB |= pb; PORTA |= pb>>8 ; timer_wait(INTERVAL); pb >>= 1; } PORTA |= pb>>8; 変数pbの値の8ビット右シフトした値 0000 0000 0001 0000とPORTAの値との OR演算 0000 0000 0001 0000 0000 0000 0000 0000 OR 0000 0000 0001 0000 PORTA PORTB 0001 0000 0000 0000 よって,1回目のループでの PORTA, PORTBの値は

2.論理演算のプログラム sample-84-logic.c 後半 論理積(AND), 論理和(NOT)を用いたプログラム例 for(;;) { /* off from high bit */ pb = 0x1000; for (i=0; i<13 ; i++) { PORTB |= pb; PORTA |= pb>>8 ; timer_wait(INTERVAL); pb >>= 1; } 以上を繰り返すと, PORTA PORTB 0001 0000 00000 0000 1回目 0001 1000 0000 0000 2回目 3回目 0001 1100 0000 0000 0001 1111 1111 1110 12回目 0001 1111 1111 1111 13回目

午前の目次 論理演算 論理演算のプログラム解説 テーブル処理のプログラム解説 演習

2.論理演算のプログラム 重要 sample-84-table.c tableを用いたプログラム例 static unsigned char tbl[] = { /* Capital: OFF , small: ON */ /* PA PB */ 0x1f, 0xff, /* G GGGG RRRR RRRR */ 0x0a, 0xaa, /* g GgGg RrRr RrRr */ 0x15, 0x55, /* G gGgG rRrR rRrR */ 0x1f, 0x00, /* G GGGG rrrr rrrr */ 0x00, 0xff, /* g gggg RRRR RRRR */ 0x00, 0x00, /* g gggg rrrr rrrr */ }; for (;;) { for(i=0;i<sizeof(tbl);i+=2) { PORTA = tbl[i]; PORTB = tbl[i+1]; #define INTERVAL 0x2000 timer_wait(INTERVAL); }

2.論理演算のプログラム 重要 sample-84-table.c tableを用いたプログラム例 配列スタート PORTA PORTB 2つ進む for(i=0;i<sizeof(tbl);i+=2) { PORTA = tbl[i]; PORTB = tbl[i+1]; #define INTERVAL 0x2000 timer_wait(INTERVAL); }

午前の目次 論理演算 論理演算のプログラム解説 テーブル処理のプログラム解説 演習

午前の部 終わり

本日の内容 午前 9:20-10:10 論理演算(NOT, AND, OR) 10:20-11:10 プログラム説明(論理演算,テーブル処理) 11:20-12:10 演習 午後 13:20-14:10 モータを用いる回路の説明           (ドライブ能力,入力ポートについて) 14:20-15:10 回路作成 15:20-16:10 (プログラム作成(条件文),説明) 16:20-17:00 試験

午後の目次 ドライブ能力について 回路作成 プログラム解説(入力) 演習

午後の目次 ドライブ能力について 回路作成 プログラム解説(入力) 演習

モータを接続した回路図 重要 5V: 信号の電源 3V: モータの電源 信号の電源ライン モータの電源ライン M アースライン

モータを接続した回路 重要 LED:  10mA程度 モータ: 300mA程度 ここの電流は? M トランジスタは大丈夫?

トランジスタ特性 2SC1815 LED:  10mA程度 モータ: 300mA程度

FET特性 2SK2231 LED:  10mA程度 モータ: 300mA程度

PICの出力特性 16F84A (はき出し)

PICの出力特性 16F84A (吸い込み)

トランジスタとFET ベース,エミッタ,コレクタ ゲート,ソース,ドレイン

モータを接続した回路図(Tr) M

モータを接続した回路(FET) 重要 M M

午後の目次 ドライブ能力について 回路作成 プログラム解説(入力) 演習

FET

午後の目次 ドライブ能力について 回路作成 プログラム解説(入力) 演習

3.入力を含んだプログラム 1ビット(RA0)を入力に用いたプログラム例 sample-84-motor.c TRISA = 0x00; /* 4-0 output */ PORTA = 0xff; TRISB = 0x01; /* 7-1 output, 0 input input/interrupt */ PORTB = 0xfe; 0000 0000 0000 0000 0000 0000 0000 0001 入力

3.入力を含んだプログラム 1ビット(RA0)を入力に用いたプログラム例 sample-84-motor.c #define INTERVAL 6000 #define NO_ACTION 400 for(;;) { RA0 = 1; /* motor ON */ timer_wait(INTERVAL); RA0 = 0; /* motor OFF */ button_wait(); timer_wait(NO_ACTION); } 一定時間駆動 スイッチONで駆動 スイッチOFFでストップ

午後の目次 ドライブ能力について 回路作成 プログラム解説(入力) 演習

午後の部 終わり