PIC16F877A マイコン完全ガイド:特徴・ピン配列・LED点滅実装まで徹底解説
PIC16F877は、初心者からプロフェッショナルまで幅広く活用できる多くの特徴を備えたマイクロコントローラーです。PIC16F877Aは、PIC16F877の全機能に加え、内部クロック発振器、改良されたADCモジュール(12ビット分解能、4チャネル同時変換可能)などを搭載しています。本記事では、PIC16F877の特徴、入出力ポート、簡単な接続例を紹介し、これらの回路デバイスの理解と活用を助けます。
1. PIC16F877 概要
PIC16F877は、ソフトウェアの助けを借りて複数のタスクを実行できるPICマイクロコントローラーです。スタンドアロン使用や、RAMPSやArduinoボード等の他デバイス回路への追加用途向けに設計されています。単体動作も可能ですが、問題なく動作させるにはクリスタル発振子(周波数源)が必要です。完全スタティックデバイスで、限定されたフラッシュメモリとRAMで動作。優れた運用柔軟性、低コスト、回路での採用実績No.1を誇ります。
2. PIC16F877 の主な特徴
一般的な特徴
- 省電力STOPモード(回路から外さずに停止可能)
- 高速PWMモジュール(最大256レベル出力、内蔵プログラマブルプリスケーラー付きクロック)
- I/O回路用内部電圧レギュレーター1つ、内蔵発振器(クリスタルまたはセラミック共振子)
- オンチップコンパレータモジュール1つ
- ADC:12ビット分解能、最大4チャネル同時アナログ入力変換
- 外部割り込み対応(スリープモードからのウェイクアップ等)
- 8種類の省電力モード
- アナログコンパレータモジュール
- 最大23本のI/Oピン
- SPIモード1つ、UARTモジュール4つ(うち1つはフルデュプレックス)
- 割り込みコントローラー(最大14割り込みソース)
- ウォッチドッグタイマー(時間間隔経過で割り込み生成)
- パワーオンリセット生成回路
- プログラマブルブラウンアウト検出器(BOD)
- 内部校正済み発振器(内部RC回路をクロックソースとして使用可能)
- デバッグWIREインターフェース経由でのインシリアルプログラミングおよびインシリアルデバッグ機能
主要/キーフィーチャー
- 最大20MHz 内部クロック動作周波数
- 基本入出力ポート:5ポート(A〜E)
- 10ビットADC入力チャネル:8チャネル
- 並列通信用PSP(Parallel Slave Port)搭載
- PIC16F877A:8KB フラッシュメモリ
- シリアル通信インターフェース2種:2線式I²C™バス、SMBus
- データメモリ:368バイト、EEPROMデータメモリ:256バイト(14ビット)
- タイマー3つ:16ビットタイマー1つ、8ビットタイマー2つ(タイマー/カウンターモード可)
追加特徴
- C言語でプログラミング可能
- 16MHz内部発振器で動作
- PIC16F877Aはマスター/スレーブ設定可能、SPIモジュール搭載
3. PIC16F877A マイコンピン図
PIC16F877チップは、40ピンDIP、44ピンTQFP、44ピンQFN等、用途により多様なパッケージで提供されます。以下のピン図を参照してください。
出典:Microchip Datasheets
4. 入出力ポート説明
各ポートには2つのレジスタが関連付けられます。例:ポートC → PORTCレジスタとTRISCレジスタ。TRISCレジスタでポートの入力/出力方向を決定。各ピンに独立して値を割り当て可能。プログラミングにはコンパイラを使用。PIC16F877AにはMPLAB XC8コンパイラが最適です。
- ポートA: アナログ入力、デジタルI/O、PWM出力として機能。ピン#2〜#7(RA0〜RA5)の6ピン
- ポートB: デジタル入力、アナログ入力、タイマー入力キャプチャ、タイマー出力比較、PWM入力。ピン#33〜#40(RB0〜RB7)の8ピン
- ポートC: カウンター/タイマーモジュール(入出力)、UART、SPI。ピン#15〜#18(前半4)、#23〜#26(後半4)の8ピン(RC0〜RC7)
- ポートD: デジタル入力、アナログ入力、タイマー出力。ピン#19〜#22(前半4)、#27〜#30(後半4)の8ピン(RD0〜RD7)
- ポートE: 工場予約用。ピン#8〜#10(RE0〜RE2)の3ピン
- VDD/VSS: 電源ピン、MCLR:マスタークリアピン
- 最大18本のGPIOピンで、関連レジスタにより入力/出力設定可能
- GPIOピン以外にも、チップ上面に専用ピンあり
- VDD:正電源電圧ピン、VSS:グランド基準
- 23本のI/Oピン、バンクAとバンクBの2バンクに分割
- 各I/Oピンは固有ビットを持ち、割り当て時に入力または出力として機能
5. 理論から実践へ:PIC16F877AでLED点滅
LEDをPIC16F877Aに接続する回路図と、接続に必要な重要ピンを示します。クイック接続手順:
- 5VをMCLRピン#1に接続、10kΩ抵抗を追加
- 5Vをピン#11(VDD)に接続。反対側で5Vをピン#32(VSS)に接続
- VSS(ピン#12)にグランド供給。ピン#13(OSC1)、#14(OSC2)を16MHzクリスタル発振子に接続
- 33pFコンデンサ2個をグランドに接続。ピン#31(VSS)をグランドに接続
- LEDと10kΩ抵抗をピン#21(RD2)に接続し、プログラム書き込みを有効化
LED点滅実装では、LEDをPORTDとグランド間に接続。1個のみ点滅させる場合、10kΩ抵抗と組み合わせます。PORTDを出力設定にし、出力ラッチのハイ→ロートランジションでLED点灯。PORTDをロ→ハイにするにはDDRBレジスタに0x01を書き込み、ハイにするには0x00を書き込み(LED点灯)。
まとめ
本記事では、PIC16F877の概要、特徴、PIC16F877Aの入出力ポートについて学びました。お楽しみいただけましたか?PICマイコンにご興味があれば、他の記事もご参照ください。PIC16F877についてご質問があれば、お気軽にお問い合わせください。
産業技術
- クイックリターン機構:原理、種類、応用、メリット・デメリット
- E3.series 2021:高度なケーブル&ハーネス機能と無料トライアル
- バッテリー接続の選び方:直列・並列・直並列構成の完全ガイド
- エジェクタピンで射出成形を最適化:タイプ別特徴とベストプラクティス
- フィレットと面取り:設計者が知るべき重要な違い
- CMMSの進化:過去・現在・未来 ─ テクノロジーがメンテナンス成功をどう牽引するか
- 在庫管理ソフトウェアの機能とメリット:効率を最大化
- PIC18マイクロコントローラ:特徴、性能、使い方
- 2N3771 NPNトランジスタ:ピン配置、特徴、用途、代替品
- AT89C51 マイコン徹底解説:ピン配列・特徴・プログラミング・代替チップ選定基準まで
- Arduinoプロトシールド組み立てガイド:ステップバイステップで徹底解説