19章:電子回路No.9新PIC入門C言語編応用オモチャ

    作成2014.04.04

     電子回路No.9新PIC入門C言語編を応用した2進カウンタ・オモチャを作成します。
  1. 2進カウンタ・オモチャ回路図
     2進カウンタ・オモチャ回路図を図19-1に示します。



  2. 電子部品リスト
     図19-1の構成部品は下記表に示すように合計金額が¥393であり安価です。
    No品名購入先単価数量小計
    1PICマイコン PIC16F627A−I/P秋月電子通商1401140
    2電池ボックス 単3×3本 フタ付・プラスチック・スイッチ付・端子リード線タイプ秋月電子通商90190
    3片面ガラス・ユニバーサル基板 Cタイプ めっき仕上げ (72x48mm) 日本製秋月電子通商60160
    4タクトスイッチ(黒色)秋月電子通商10220
    5圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000−A0秋月電子通商30130
    6赤色LED 3mm OSDR3133A 500mcd 30度100個入秋月電子通商3.5828
    7ICソケット (18P) (10個入)秋月電子通商10110
    8カーボン抵抗(炭素皮膜抵抗) 1/4W1KΩ (100本入)秋月電子通商188
    9積層セラミックコンデンサー0.1μF50V (25個入)秋月電子通商414
    10カーボン抵抗(炭素皮膜抵抗) 1/4W10kΩ (100本入)秋月電子通商133
    -合計---393


  3. ソースプログラム
     my_BinaryCounteをベースに若干の修正を加えました
    (1)ソースプログラム
    ソースプログラムを以下に示します。
    #define _LEGACY_HEADERS
    #include 	
    // コンフィギュレーションワードの設定
    __CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
    // プロトタイプ宣言
    void WaitTime (long cnt);
    // メイン関数
    void main (void)
    {
    	 unsigned char PC=0;
    	 unsigned char MC=0;
    
    	// 1,2,17,18端子を入出力端子に設定
    	CMCON = 0x07;
    	
    	// 電圧レベルの初期設定
    	PORTB = 0xFF;
    	
    	// 入出力設定
    	TRISA = 0b00100011;
    	TRISB = 0x00;
    	
    	// 永久ループ
    	while(1)
    	{
    		if(RA0 == 0)// SW1がONの場合
    		{
    			WaitTime (255);// 待ち時間関数の呼び出し
    			while( RA0 == 0 );// SW1がONの間ループ
    			WaitTime (255);// 待ち時間関数の呼び出し
    			
    			if(PC <= 1)
    			{
    				PC=16;
    			}
    			else
    			{
    				PC=PC/2;
    			}
    			PORTB = 0xFE;
    			MC=0;
    		}
    		if(RA1 == 0)// SW2がONの場合
    		{
    			WaitTime (255);// 待ち時間関数の呼び出し
    			while( RA1 == 0 );// SW2がONの間ループ
    			WaitTime (255);// 待ち時間関数の呼び出し
    			
    			if(MC <= 1)
    			{
    				MC=16;
    			}
    			else
    			{
    				MC=MC/2;
    			}
    			PORTB = 0x01;
    			PC=0;
    		}
    	
    		if(PC > 1)
    		{
    
    			WaitTime (500*PC);
    			PORTB = PORTB - 1;
    		}
    		else
    		{
    			if(MC > 1)
    			{
    
    			WaitTime (500*MC);
    			PORTB = PORTB + 1;
    			}
    			else
    			{
    				PORTB =0xFE;
    			}	
    		}	
    	}
    }
    
    // 待ち時間関数
    void WaitTime ( long cnt )
    {
    	int	i;
    	while (cnt > 0)
    	{
    		for(i=0;i<64;i++){RA2=0;cnt--;}
    		for(i=0;i<64;i++){RA2=1;cnt--;}
    	}
    	for(i=0;i<2000;i++){RA2=1;}			
    }
    
     ソースプログラムの内容は以下を開いてコピーします。
    「ソースプログラムの内容」にいく。


  4. 動作確認
    (1)SW1を1回押して離すと8個のLEDがカウントアップを開始します。
    (2)SW1さらに押して離すとカウントアップが早くなります。(4回ほどで元に戻ります)
    (3)SW2を1回押して離すと8個のLEDがカウントダウンを開始します。
    (4)SW2さらに押して離すとカウントダウンが早くなります。(4回ほどで元に戻ります)
    (5)圧電スピーカから音がでます。

    **8個のLEDで0〜225までの数値を表示できます。


  5. 2進カウンタ・オモチャ外観(表側)



  6. 2進カウンタ・オモチャ外観(裏側)
     基板裏側は配線保護のためエポキシ樹脂でコーティングしました。



  7. まとめ
    (1)キットで遊ぼう電子回路No.9新PIC入門C言語編の総まとめとして、2進カウンタ・オモチャを作成しました。
    (2)初めて万能小型基板を使用して電子回路を組立ました。
    (3)万能小型基板は専用プリント基板と比較すると、配線しにくいですが、なんとかまとまりました。
    (4)基板裏側の配線は見苦しいのですが、エポキシ樹脂でコーティングで改善します。また配線保護となります。










トップページに戻る。