Serial monitor using Character LCD (SC1602BS,SC2004等対応)
Topics | PICC Pro lite mode | XC8 | MPLABX | Actual use | USART | PWM | LCD | Interrupt | PICkit2 | PIC16F1823 |
外部発振回路を使うPIC16F648A/PIC16F1827を使用した通信モニターについてはこちらへ移動しました。
更に古いタイプ
パソコンでは古い入出力となったシリアル通信ですが、組み込み系のマイコンや内部回路では、プロトコルが簡単で理解しやすいシリアル通信が今でも使われています。開発やデバッグなどでちょっとした電文を確認したい時があると思いますが、そのときに大変便利な装置です。アスキー表示、バイナリ表示ができます。また、簡易コンソールとしても使用できます。
以前に公開している16F648系からセラロックを省き、値段の安いPIC16F1823を使用した事で更にコストを下げています。
現在ソフトウェアがサポートしているLCDモジュールは4種類です。
CGRAM対応。promdata.cのデータを書き換えると8種類のオリジナルキャラクターに対応します。
CG0~7はアスキーキャラクタコード0x80~0x87に対応しております。0x88~0x8Fの場合はCG0~7となります。
初期設定値として、トランプ記号などが入っています。
CGRAM0 ハート、CGRAM1 ダイヤ、CGRAM2 スペード、CGRAM3 クラブ、CGRAM4 令、CGRAM5 和、CGRAM6 ●、CGRAM7
♪
装置名 | 超ローコストシリアルLCDモニター16F1823版 |
対応通信スピード | 1,200/2,400/4,800/9,600/19,200/31,250(midi)/38,400bps(公称値) エラーレートは後述の付録参照。内部発振の±2%の誤差が加わります。 70バイト以上の通信バッファ内蔵。 |
対応LCD | SC1602B(16桁2行) SC242A aitendo (24桁2行) ACM0802C-NLW-***(8桁2行) SC2004(20桁4行) ※いずれも互換品が使用できますが、電源の配線は各LCDのデータシートを必ず確認の上ご使用ください。 |
通信フォーマット | 8ビット、パリティ無し、ストップ1ビット |
表示形式 | ●ASCII表示 カーソルが点滅表示 ●16進表示 カーソルがアンダーバー表示 表示形式切替は右ボタンで行います。 |
各種機能 | 画面初期ボタン、モード切替ボタン、ASCII/16進表示切替ボタン、LCD負電圧用発振出力 |
MPU | Microchip 16F1823 Silicon ver A6 or upper |
クロック | 内蔵オシレーター使用 8MHz ±2% |
電源 | 3V~5V 消費電流2.8mA@3.3V |
その他 | PICkit2/ICD2インターフェース搭載 |
表示仕様 | 代表的なキャラクターLCD型番 | 電源※ |
---|---|---|
16桁2行 | SC1602B | 1:VCC 2:GND |
SD1602 | 1:GND 2:VCC | |
8桁2行 | ACM0802C 、LMB0820DFC 、SC0802 | 1:GND 2:VCC |
24桁2行 | SC242A(aitendo) | 1:GND 2:VCC |
20桁4行 | SC2004 ※ASCII表示のみ | 1:GND 2:VCC |
※電源は必ず使用するLCDのデータシートを確認してください。
その他に、基板、電線、半田などが必要となります。
Item | Quantity | Reference | Part | 備考 |
---|---|---|---|---|
1 | 4 | C1,C3 | 0.1uF | 積層セラミックコンデンサ |
2 | 1 | C2 | 10uF/16V | 電解コンデンサ |
3 | 1 | DBG1 | HEADER6_L | PICKIT2/3接続用2.5mm Lアングルコネクタ |
4 | 1 | JP1 | HEADER 2X2 | 電源設定用のヘッダーです。ジャンパーが2つ必要になります。 |
5 | 1 | J1 | CON2 | 電源コネクターです。 |
6 | 1 | J2 | CON1 | 通信入力用コネクターです。 |
7 | 1 | LCD1 | CON7X2 SB1602BS等 |
SUNLIKE SC1602BS-B液晶ユニット+コネクタオスメス ※電源について、使用するLCDモジュールの仕様を必ず確認してください。 |
8 | 1 | R1 | 10K | 10kΩ抵抗(茶黒橙金)※1/4~1/32Wのカーボン抵抗等 |
9 | 1 | R2 | 100K | 100kΩ抵抗(茶黒黄金)※1/4~1/32Wのカーボン抵抗等 |
10 | 2 | R3,R4 | 100 | 100Ω抵抗(茶黒茶金)※1/4~1/32Wのカーボン抵抗等 |
11 | 3 | SW2,SW3,SW4 | PUSH_BUTTON | タクトスイッチ |
12 | 1 | U1 | PIC16F1823 | PICマイコンMicrochip 16F1823 14ピンのDIPソケットも用意します。 |
13 | 1 | VR1 | T10K(B) | 半固定10kΩ抵抗※3.3Vで使用するときは搭載しません。 |
14 | 1 | VR2 | T100K(B) | 半固定100kΩ抵抗(多回転タイプ)※3.3Vで使用するとき |
15 | 2 | C4,C5 | 0.1uF | 積層セラミックコンデンサ※3.3Vで使用するとき |
16 | 2 | D1,D2 | 1S2076 | 一般小信号ダイオード(1N4148等)※3.3Vで使用するとき |
アイテム番号14~16について、この装置を3.3Vで使用したい場合に搭載する回路です。PICマイコンから負電圧を生成するための発振出力が出ているので、これを利用して負電圧を生成できます。
Date | Download (Version) |
Build | Folder(MPLABX以降は参考情報として) | Device | note |
---|---|---|---|---|---|
New 2024/11/2 |
1.53 | MPLABX IDE 6.20 XC8 ver 2.50 |
lcd_serial_16f1823.X | PIC16F1823 | フォルダ内に既にビルド済ファイルを入れております。 |
Date | Download (Version) |
Build | Folder(MPLABX以降は参考情報として) | Device | note |
---|---|---|---|---|---|
New 2025/1/26 |
2.00 | MPLABX IDE 6.20 XC8 ver 3.00 |
lcd_serial_16f1823_sc2004.X | PIC16F1823 | 仕様は従来と同じです。再ビルド時は、Project Properties ->XC8 Compiler Optimizationを選択しOption categoriesの項目で Optimization levelを2に変更する必要があります。 |
2019/4/14 |
1.52 | MPLABX v5.15 XC8 v2.05 |
C:\data\picsrc\MPLABXProjects\lcd_serial_sc2004.X |
PIC16F1823 | Hexファイルは以下のフォルダ \lcd_serial_sc2004.X\dist\default\production\ lcd_serial_sc2004.X.production.hex |
使用するLCDの1pin、2pinの電圧に応じてJP1で電源の極性を変更します。LCDの濃度調整で、それぞれの電圧で最適になるように半固定抵抗を調整します。
プログラム種別 | ASCIIモード時 | BINモード時 |
---|---|---|
SC1602B(16桁2行)用 aitendo (24桁2行)LCDモジュール用 ACM0802C-NLW-***(8桁2行)用 |
カーソル点滅 文字が0x20~0xffのコードであれば表示 文字が0x80~0x87のコードはCGRAM0~7までの対応 文字が0x88~0x8fのコードはCGRAM0~7までの対応 ascii code 12 (ctrl +l) LCD消去 ascii code 0x0b (ctrl +k)カーソル以降の行を消して切替 ascii code 0x0d (Enter) 行の切替のみ ascii code 0x11 (ctrl +q)カーソルを消す ascii code 0x17 (ctrl +w) カーソル表示 |
カーソルがアンダーバーになる 該当するアスキーコードを16進表示 |
SC2004(20桁4行) | カーソル点滅 文字が0x20~0xffのコードであれば表示 文字が0x80~0x87のコードはCGRAM0~7までの対応 文字が0x88~0x8fのコードはCGRAM0~7までの対応 エスケープシーケンスでカーソル移動 0x1b,0x5b,0x41 up 0x1b,0x5b,0x42 donw 0x1b,0x5b,0x43 right 0x1b,0x5b,0x44 left ctrl+q カーソル非表示 ctrl+w カーソル表示 ctrl+l LCDクリア ctrl+m カーソル以降を消去し改行 |
今までの通信モニターと使用方法は同じですので、このページを参照してください。
電源を入れると、予め設定されているボーレートで受信可能状態となります。(初期値は38,400bps)
ASCIIモードとBINモードでは、カーソルの表示が異なる事で、モードを表現しています。ASCIIモードは点滅、BINモードはアンダーバーです。変更は右ボタンを押す毎に切り替わります。表示モードは電源を切っても記憶します。
左ボタンを押すと、表示をクリアします。
ボーレートの変更は、モードボタンを押しながら左ボタンを押します。左右ボタンでボーレートを選択し、モードボタンで設定します。
モードボタンを押しながら左ボタンを押して離し、モードボタンが離されるまで、バージョンとLCD種別表示を行います。ボーレートは、次回のボーレート更新まで記憶します。
PIC内部のPWMモジュールから83.8KHzの発振出力しているので、これを利用してLCDのコントラストピンに負電源を与える事ができます。
検証はしていませんが、64バイトの通信バッファを持っているので、アスキーモードであれば、取りこぼしは恐らく発生しないと思います。バイナリーモードの場合は38,400bpsの場合、100バイト位の連続受信はできると思います。
ターミナルの設定はSJISモードで設定します。
・ボーレートのエラーレート表
Fosc(MHz) | baud | fosc | brg(parm) | x | integer | real | error rate |
---|---|---|---|---|---|---|---|
8 | 1,200 | 8,000,000 | 64 | 103.16667 | 103 | 1201.923077 | 0.16026% |
8 | 2,400 | 8,000,000 | 16 | 207.33333 | 207 | 2403.846154 | 0.16026% |
8 | 4,800 | 8,000,000 | 16 | 103.16667 | 103 | 4807.692308 | 0.16026% |
8 | 9,600 | 8,000,000 | 16 | 51.08333 | 51 | 9615.384615 | 0.16026% |
8 | 19,200 | 8,000,000 | 16 | 25.04167 | 25 | 19230.76923 | 0.16026% |
8 | 38,400 | 8,000,000 | 16 | 12.02083 | 12 | 38461.53846 | 0.16026% |
8 | 31,250 | 8,000,000 | 16 | 15.00000 | 15 | 31250 | 0.00000% |
上記エラーレートに内部発振回路の±2%の発振誤差が加わります。エラーレートを無視できない場合は、16F648A/16F1827の外付け発振回路式をお使いください。一般的に1ビットあたり3%程度であれば実用範囲と言われています。
ボーレートとクロックの相関計算をするエクセルのシートをダウンロードできるようにしておきました。excel calculation sheet
表面 青:基板上で配線 赤色:表側でジャンパー線 橙・緑色:ジャンパー線で対応
一部の抵抗、コンデンサやスイッチなどのピン番号は、回路図と異なっています。
詳しい配線やデータはダウンロードできます。
Date | version | Tool | note |
---|---|---|---|
2015/11/23 | bd_lcdserial16f1823_20151123-213614.zip | PasS 1.52 PCBE 0.60.1 |
配線修正(D2,C5)、ライブラリ欠落のエラー回避 |
2012/5/4 | bd_lcdserial16f1823_20120505-010615.zip | PasS PCBE |
基板データはPadSで製作。PCBE形式へ変換したデータ同梱(DL不可) |
MPLAB SNAPを使えるように定電圧書き込みを検討しましたが、LVP ONの時はMCLRピンがポートとして使用できなくなるのと、現在空いているRC4ポートは、通信ポートに割当たっていてポートとして使用できないため、ダイオードを使ったり、LCDの信号の共用をするなどのトリッキーな回路を組むことになるので今回は見送りました。2024/11/2
2025/1/26 SC2004C(20桁4行)をMPLABX 6.20/XC8 3.00、MPLAB SNAP対応。
2024/11/2 MPLABX IDE v6.20/XC8 v2.50に対応。
2019/4/15 Ver1.52 CGRAM 対応
2019/4/7 LCDシリアルPIC16F1823バージョンのMPLABX5.15 XC8 Ver2.05対応
2015/12/20 ソースコードをMPLABXに対応(バグ修正)
2015/11/23 PasS、PCBEデータ修正
2012/5/4 基板製作データ追加
2011/10/12 エラーレート表追加
2011/10/11midiクロックのボーレート追加 ver.1.33公開
2011/10/1 一部説明追加
2011/7/27 一部加筆
2011/6/26 ローコストLCDシリアル通信モニターのPIC16F1823版の公開
(C)2011-2025 air variable All Rights Reserved..