概要
PIC16F88とMPLAB XC8 C Compilerを使用した開発例として,2個の押しボタンスイッチ(タクトスイッチ)を使用する際のプログラム例を紹介します. 開発環境は下記のとおりです.
PIC | PIC16F88-I/P |
---|---|
MPLAB X IDE | MPLAB X IDE v2.26 |
MPLAB XC8 | MPLAB XC8 C Compiler v1.32 |
PICkit 2 | MPLAB X IDEを使用して書込み |
回路
回路図
電源はPICkit 2から5.0Vを供給し,内蔵クロック 8MHzで動作させています. 各タクトスイッチは,10kΩ抵抗でプルアップされた負論理入力回路となっています. 私がSW1として使用したタクトスイッチはLED内蔵ですが,このLEDは使用していません. 7セグメントLEDの電流制限抵抗には200Ωを使用していますが,330~1kΩ程度の方が良いかもしれません.
回路部品
下表は使用部品表です. 参考単価をクリックすると,秋月電子通商のページに飛びます. 「互換品」と記載されているリンクについては,互換性があると考えられる部品のページに飛びます. ただし,私が互換性および動作を確認したわけではありませんので,ご注意ください.
番号 | 部品名 | 型番 | 数量 | 参考単価 |
---|---|---|---|---|
U1 | PICマイコン | Microchip PIC16F88-I/P | 1 | 250円 |
SW1 | LED付き タクトスイッチ |
Switronic ST-12-303FC-G (緑,正方形) |
1 | 150円 |
SW2 | タクトスイッチ | 各社 | 1 | 10円 (互換品) |
LED1 | 7セグメントLED | PARA LIGHT C-421E (カソードコモン) |
1 | |
R1 - R3 | 炭素皮膜抵抗 | 各社 1/4W 10kΩ | 3 | 1円 (互換品) |
R4 - R10 | 炭素皮膜抵抗 | 各社 1/4W 200Ω | 7 | 1円 (互換品) |
その他 | リード線など | 適量 |
プログラム
タクトスイッチのチャタリングによる誤動作防止対策
タクトスイッチを使用する際は,チャタリング対策が必要です. 下記のプログラムでは,スイッチの状態を10ミリ秒の間隔を置いて2回確認するようにしています. 1回目と2回目のスイッチの状態が一致し,なおかつ現在のスイッチの状態(sw_state)が前回のスイッチの状態(sw_state_prev)と異なる場合は,スイッチの状態についての判定(switch文)に移行します. これは,スイッチの状態が変化した直後のみ,スイッチの状態に対応する処理を実行するためです.
main.c
下記はソースファイル「main.c」です.参考になれば幸いです.
完成
タクトスイッチと7セグメントLEDの使用例
プログラム教えてください。
返信削除