PIC16F84電子遊戯(95)
最終更新日:2003年1月25日
簡易信号発生器を作ろう (1ページ)へ (2ページ)

簡易信号発生器のポート割付
ポート名 入出力 機能
RA0 IN SW1入力
RA1 OUT フィルター制御
RA2 IN SEL1
RA3 IN SEL2
RA4 IN SEL3
RB0 OUT 8bitD/A出力
RB1 OUT 8bitD/A出力
RB2 OUT 8bitD/A出力
RB3 OUT 8bitD/A出力
RB4 OUT 8bitD/A出力
RB5 OUT 8bitD/A出力
RB5 OUT 8bitD/A出力
RB7 OUT 8bitD/A出力
簡易信号発生器のメインルーチンのフローの一部
方形波と正弦波についてメインルーチンの概略フローを見て下さい。
それぞれの波形について専用のルーチンを組んでいます。
波形ごとに処理時間が異なるため各ステップでの周波数が異なります。
(方形波と正弦波の概略フローです)
wave_countのデータを元に波形出力を制御しています。このデータに加えるデータを変化させることにより出力周波数を変化させています。
正弦波はテーブルデータを読み出しているため、高い周波数になるほどデータを読み出す間隔が広くなるため、波形は乱れます。
簡易信号発生器の主要RAM説明
wave_count 信号出力用カウンタ
henka_step wave_countに加算するデータ
time_count henka_stepのデータを読み出すカウンタ
henka_stepのデータ(wave_countに加算するデータ)は数値が大きくなるほどwave_countの繰り上がりに対して効果がなくなるところがありますので、その数値を間引きするためにtime_countを用いて加算するデータをテーブルから読み出しています。(すいません、説明が難しいので後でソースを見て下さいね。)
簡易信号発生器の波形の選択
波形の選択は三つのSELスイッチで行います。
ポート数が足りないため、SELスイッチは電源ON時にしか判定しません。
従って、波形を切り換えるときはSELを設定した後にリセットスイッチを押します。
SEL1 SEL2 SEL3 波形
OFF OFF OFF 方形波
ON OFF OFF 正弦波
OFF ON OFF ノコギリ波
OFF OFF ON パルス波
簡易信号発生器の波形出力
ではこの発生器から出力できる波形の一部を見ていただきます。
方形波
(かなり綺麗な波形ですね)
正弦波
(周波数が高くなるとちょっと厳しい波形です)
ノコギリ波
(なんとか波形を保っております?)
パルス波
(パルス部は細くて見えない?)
いかがでしょうか。充分実用(?)に使えると思いますが・・・・
簡易信号発生器の出力電圧可変
一応、出力電圧が可変できるように設計しています。出力電圧は約5Vまで可能です。
(出力電圧可変の状態です。左が1Vで右が0.2Vです。)
簡易信号発生器の全ソースリストと全HEXコード
毎度おなじみのソースリストとHEXコードです。
一緒に圧縮していますので、ダウンロードしてからじっくり眺めてください。
(今回からXPで解凍出来るようにZIPにしています。)
ソースリストとHEXコードはこちらです。
簡易信号発生器の大完成
では大完成した雄姿とその中身を見て下さい。
(かなりコンパクトにまとまりました)
(ACアダプターも使えるようにDCジャックも付けました)
ということで、かなり重宝する発振器が出来ました。もっと精度が必要な場合は皆さんでクロックを速くするなりして工夫して下さい。
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。

不明点などあればメールお願いいたします。nonchansoft@nifty.com