簡易信号発生ユニット(PIC16F628)
概要
PIC16F628は、ボルテージリファレンスモジュールを内蔵しており、16段階の電圧を出力することが出来ます。
これを利用して簡単な信号発生器を作成してみました。
スイッチ切り替えでサイン波とノコギリ波が選択出来ます。
動作原理
とても簡単です。
- サイン波
- 角度20°単位でのサインデータ18個を順次ボルテージリファレンスモジュールに出力します。
- ノコギリ波
- 0~15までのデータを順次ボルテージリファレンスモジュールに出力します。
尚、サイン波とノコギリ波の切り替えはスイッチで行います。
また、PICより出力された電圧を抵抗とコンデンサによるローパスフィルタを通して出力します。
回路図
ソースコード
- sin2.c
//********************************************************************** void main() { unsigned char tbl[] = { 0b11100000 | 7, 0b11100000 | 9, 0b11100000 | 11, 0b11100000 | 13, 0b11100000 | 14, 0b11100000 | 14, 0b11100000 | 13, 0b11100000 | 11, 0b11100000 | 9, 0b11100000 | 7, 0b11100000 | 5, 0b11100000 | 3, 0b11100000 | 1, 0b11100000 | 0, 0b11100000 | 0, 0b11100000 | 1, 0b11100000 | 3, 0b11100000 | 5, 0b11100000, 0b11100001, 0b11100010, 0b11100011, 0b11100100, 0b11100101, 0b11100110, 0b11100111, 0b11101000, 0b11101001, 0b11101010, 0b11101011, 0b11101100, 0b11101101, 0b11101110, 0b11101111, }; unsigned char i; CMCON = 0b00000111; TRISA = 0b11111111; while (1) { if (PORTA.F0 == 1) { for (i = 0; i < 18; i++) // サイン波 VRCON = tbl[i]; } else { for (i = 18; i < 34; i++) // のこぎり波 VRCON = tbl[i]; } } } //**********************************************************************




