キッチンタイマーちょっとしたPICの演習,公開講座,体験学習用にPIC12F629 を使ったキッチンタイマーを作りました.パーツは, ブレッドボード,電池・電池ボックス・電池スナップ, PIC12F629,LED,圧電ブザー,スイッチ,抵抗1kと10kΩ です. 出来上がりはこんな感じ. ![]() 動作は, スイッチを押した回数で秒数設定. スイッチを1回押すと10秒.(2回で20秒,・・・) 秒数設定後,2秒以上待つとLEDが早く点滅してスタート準備完了. スイッチを押すとカウントを開始. 指定秒数経ったらブザーがなる. スイッチでブザー停止,初期状態に戻る. 手書き回路図↓ ![]() プログラムリスト #include "pic.h" #include "delay.h" #define TRIM 80 // trimming for delay time to 100us __CONFIG(INTIO & WDTDIS & BORDIS & MCLRDIS); main(){ // initialize unsigned long cnt, i; // cnt: counter, i: etc unsigned char f; // flag for the end of set process TRIS0=0; // LED: GPIO0 for digital output TRIS1=0; // BUZZ: GPIO1 for digital output TRIS2=1; // SW: GPIO2 for digital input CMCON=0x07; while (1){ // reset LED, BUZZ and counter GPIO0=1; // LED OFF GPIO1=0; // BUZZ OFF cnt=0; // reset counter // set process f=0; // count start flag while (!f){ while (GPIO2); // wait for SW-ON GPIO0=0; // LED ON cnt+=10; // 10 sec plus DelayUs(TRIM); // chattering off while (!GPIO2); // wait for SW-OFF GPIO0=1; // LED OFF DelayUs(TRIM); i=0; while (GPIO2){ // count interval while SW-OFF DelayUs(TRIM); i++; if (i>20000){ f=1; break; } } } // wait for start-SW while (GPIO2){ // wait for SW-ON GPIO0=0; // LED ON for (i=0;i<500;i++) DelayUs(TRIM); GPIO0=1; // LED ON for (i=0;i<500;i++) DelayUs(TRIM); } // count down process while (cnt>0){ // count down cnt GPIO0=1; // LED OFF for (i=0;i<5000;i++) { DelayUs(TRIM); } GPIO0=0; // LED OFF for (i=0;i<5000;i++) { DelayUs(TRIM); } cnt--; } // Timeout, BUZZ and LED ON while (GPIO2){ // wait for stop GPIO0=0; // LED ON GPIO1=1; // BUZZ ON for (i=0;i<10;i++) DelayUs(TRIM); GPIO1=0; // BUZZ OFF for (i=0;i<10;i++) DelayUs(TRIM); } DelayUs(TRIM); // chattering off while (!GPIO2); // wait for SW-OFF } } プログラムリストほか,MPLABプロジェクトファイルのダウンロード. これを1クラス分,42個書込んで準備. ![]() ![]() C言語ではじめるPICマイコン ![]() やさしいPICマイコン電子工作パソコンとつないで遊ぼう ジャンル別一覧
人気のクチコミテーマ
|