実験の目的

PICにより発生した周期パルスで圧電ブザーを駆動することにより、音を発生させることができる。ここでは、実際に圧電ブザーを駆動させて音の発生を確認する。

実験回路の結線

ここではCPUボードとI/Oボードを用いる。これらを表6のように接続する。また接続の様子を図6-1に示す。

表6 実験6の接続端子
CPUボード +5V GND RB0
I/Oボード +5V GND BUZZER

図6-1

図6-1 実験6の結線


プログラム

以下のプログラムよりHEXファイルを作成し、PICにプログラムせよ。

;
;               実験6 圧電ブザーテストプログラム
;
; CONFIG1
 __CONFIG _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CCPMX_RB0 & _CP_OFF
; CONFIG2
 __CONFIG _CONFIG2, _FCMEN_ON & _IESO_ON

                list            p=16F87
                #include        <p16F87.inc>

                ORG             0x000           ; リセットベクタを 0番地に指定

                BSF             STATUS,RP0      ; STATUSのビットPR0をセット(BANK 1)
                CLRF            TRISB           ; Bポートを全て出力に設定

                BCF             STATUS,RP0      ; STATUSのビットPR0をセット(BANK 0)

COUNT1          EQU             0x20
COUNT2          EQU             0x21

                MOVLW           0x0             ; Wレジスタに0を転送
                MOVWF           PORTB           ; Wレジスタの値をBポートに転送
LOOP0
                INCF            PORTB,1         ; ポートBの内容を1増加
                CALL            WAIT
                GOTO            LOOP0           ; ラベルLOOP0へジャンプ

;               無駄時間待ち処理 WAIT

WAIT            MOVLW           0x7F            ; Wレジスタに0x7Fを転送(周波数調整)
                MOVWF           COUNT1          ; COUNT1にWレジスタの内容を転送
LOOP1           CALL            WAIT1           ; WAIT1をサブルーチンコール
                DECFSZ          COUNT1,F        ; COUNT1を減算してCOUNT1に格納
                GOTO            LOOP1           ; COUNT1が0でなければ繰り返す
                RETURN                          ; COUNT1が0になったら戻る。

WAIT1           MOVLW           0x02            ; Wレジスタに0x02を転送(周波数調整)
                MOVWF           COUNT2          ; COUNT2にWレジスタの内容を転送
LOOP2           NOP                             ; 1命令サイクル消費
                DECFSZ          COUNT2,F        ; COUNT2を減算してCOUNT2に格納
                GOTO            LOOP2           ; COUNT2が0でなければ繰り返す
                RETURN                          ; COUNT2が0になったら戻る。
                END

List.4 圧電ブザーテストプログラム


出力周波数の測定

音の発生が確認できたら、オシロスコープで音の周波数を測定せよ。

応用

  1. I/OボードのBUZZER端子を、CPUボードのRB0からRB1、RB2・・・RB7にそれぞれ接続しなおしてみよ。RB0に対して音の高さがそれぞれ1/2、1/4・・・1/256になっている筈である。
  2. 無駄時間待ち処理の時間を種々変更して、音の高さがどのように変化するか確認せよ。このとき、プログラムの各設定値と、それに対する周波数の測定結果を記録しておくこと。