• 締切済み

I2CでZJM162A というLCDを稼働できない

複数のLCDをPICでI2Cインターフェースで表示用に使用しようとしています。 I2Cを使わず、パラレルで繋ぐと問題なく表示します。 コネクタで簡単に別なLCDと交換できるようになっており バックライトありの1602Aや2004Aから差替えても表示すべき内容が表示されます。 I2C環境下も同じ初期化で命令で1602Aや2004Aは問題ありません。 しかし、ZJM162A では2ライン設定しているにもかかわらず、1行で文字化けします。 タイミングを変更してテストしても、ZJM162A だけは初期化で指定した通りにならず、文字も 0x?F のコードしか表示しません。 4bitモード/2Lines/5x8dotで初期化しているだけです。 LiquidCrystal_I2Cのソースを参考に初期化手順は全く同じにしても ZJM162A だけは1行モード/文字化けで表示します。 MPLAB IDE v8.63 PIC16F1938 ZJM162A/I2Cカード I2Cカード http://ht-deko.com/arduino/pic/i2c_lcd_03.jpg LCD http://www.aitendo.com/data/aitendo/_/70726f647563742f32303132303730345f3061633864372e6a7067003235300000660066.jpg よろしくお願いします。

みんなの回答

  • koujikuu
  • ベストアンサー率43% (428/992)
回答No.3

No.1 補足2 PCF8574 の LCD 接続は P7 - D7 P6 - D6 P5 - D5 P4 - D4 P3 - BACK LIGHT P2 - E P1 - R/W P0 - RS です、オープンドレイン(弱プルアップ)を CMOS H/L 出力に変えるのは 74HC541 等のバッファを入れるのが簡単です またLCDを複数接続する場合、E 信号以外は共通にできます D7-D4,R/W,RS,R/W=L (write固定) 74HC595 のシリアルーパラレル変換ICを使う方法もあります (LiquidCrystal_SR.h ライブラリ)

全文を見る
すると、全ての回答が全文表示されます。
  • koujikuu
  • ベストアンサー率43% (428/992)
回答No.2

No.1 補足 PCF8574 出力は、オープンドレイン + 弱プルアップ( 100uA 50kΩ相当 ) なので LCD 側にプルダウン抵抗があると HIGH レベルが中間電圧となり CMOS Hレベル 3.5V以上 ( VCC*0.7 ) を満たさない場合があります

peanus15
質問者

お礼

ありがとうございます。 オペアンプを所有していないので、仮のトランジスタでアンプして テストしましたが、波形が崩れたのか動くLCDでも同様な振る舞いに変わり 動かなくなり、ZJM162A と同様文字化け(表示文字は異なる) PCF8574には、4Bitしか信号用に割り当てがないこともわかりました。 現象的、上記テストの結果から推察して ZJM162Aは補足の通り、10年以上前の製品で信号レベルがPCF8574の 出力では認識できないものと判断するしかないようです。

peanus15
質問者

補足

Dear Sir We have rest of National day.sorry for late reply. Firstly we changed from ZIJING Company to FANGGAUAN company in 2007 for 10 years. Because ZIJING Company boss can not have good business administration, and then we buy this company in the year of 2007. Now we are FANGGUAN company ,pls you know.You have bought products for 10 years or just now ? Could provide us your product photos for the front and the back of the product? And then we can sovle your problems. We made LCD product for 15 years selling many cities and many countrys in the world. About all product specifications disclosed ont the net, we can not do that, but we can provide it by email sending you. No matter you will buy or not buy our product in the future, thank you for telling us the reseaon of your products, we can solve all the problems because we have good engineers now. And we export to America, Korea, Bulgaria etc now from the year of 2007. They have high-class stringent specifications and high grade quality in their countrys. So if you belive our new company -- FANGGUAN company, we would like provide free samples as your drawing of product to redesign what you need and suitable product for you. How about you? We are waiting for your reply all the time. Thanks Helen ZJM162A は10年以上前に作られたもので 会社も FANGGAUAN という会社に吸収され、その会社はLCDを製造して いるという その会社のHPでは、一切、自社製品の技術情報をネットで公開して おらず、技術情報開示の要請に上記のふざけたスペルミスだらけの回答 しかしてこない。 現在、ZJM162A とIIC/I2Cカードが販売されて写真がたくさん掲載されて いるサイトのリンクを付けて送り返して応答を待つことにした。

全文を見る
すると、全ての回答が全文表示されます。
  • koujikuu
  • ベストアンサー率43% (428/992)
回答No.1

LCD 8 → 4ビットモード切り替え不良だと思われます ( 8ビットモードで書き込んでいる為 D3-D0 が1と認識される 内蔵プルアップ ) こちらの ZJM161A タイミングを参考にして下さい https://plaza.rakuten.co.jp/lovesun/diary/201602090000/ また busy flag (BF) を読み出すと コマンド受付可能かチェックできます 参考 http://elm-chan.org/docs/lcd/hd44780_j.html

peanus15
質問者

お礼

コメントありがとうございます・・・・ 問題の趣旨をよく読んでからアドバイスをいただけると嬉しいです。 I2C制御ボードでZJM161Aを駆動された経験がないと回答も難しいと思います。

peanus15
質問者

補足

タイトルで明記しましたが、問題があるのは「I2Cで」です。 PICでLCDを使うには、パラレルとシリアル(I2C)の2つ方法があります。 1、PIC -> LCD (16Pin) パラレル接続 2、PIC(Serial 2Pin) -> I2C(Parallel 16Pin) -> LCD シリアル接続 問題が発生しているのは接続2(I2C)です。 状況説明の2行目に「パラレルで繋ぐと問題なく表示します。」と明記 接続1ではPICから直接制御の初期化手順で他のLCDも ZJM162A も 期待通りに稼働(表示)しているという意味です。 パラレル運用では困っていません。 回答いただいた前提は、パラレルであり、シリアル制御カード(I2C)に ついては関連性がありません。 I2Cでは、1Byte送信するには、データを4Bit分解して制御コードを 付加して4回送るという全く異なる通信でI2C制御カード配下のLCD用に データを送るという対応をするのです。 Busy回避は、出すcommandの処理必要時間の数倍の時間の遅延を与えてもZJM162Aのみ不良という状況は変わりません。 ZJM162Aは処理が遅いのかも知れませんが、それならパラレルでも問題が 発生するはずですが、起こりません。 ZJM162A の基板に書かれている会社名で検索して出てきた会社に 英文でSPECの開示を要請していますが、未だ有効な回答がない状態 ちなみに全製品の製品情報は未公開というunpolite company

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PICを使用してのLCD制御について

    PIC(16F877A)を使用してLCDの制御を行っています。 LCDに表示を行ってから、(カーソルと呼ぶのでしょうか?)黒の■が2行目でチカチカと点滅をしていて、邪魔だなと感じるのですが、点滅させない方法があるのでしょうか? もしあるのであれば、教えて頂けますか? PICのプログラムはC言語を使用しています。 ご回答、アドバイスをよろしくお願いします。

  • PIC(PIC16F84A)を用いたLCDの2桁表示について

    現在、去年、秋月電子で購入したSHARPのLCD(LM162AT1)をとPIC16F84Aを用いて、周波数カウンタを製作しようと思っています。 そこでLCDとPIC(PIC16F84A)を用いたテスト回路を製作してLCDの表示方法をC言語で書いて勉強しています。1桁の表示はできるのですが、2桁の表示ができません。 MicrochipのMPLAB IDE Ver.8.14を使用しています。 LCDのソースコードは付属のサンプルコードを使用しています。 どうして、2桁表示できないか教えてください。 また、対処方法も教えてください。 よろしくお願いいたします。

  • LCDへの命令

    この画像の16文字×2行のLCDに次の命令を送るプログラムを教えてください。 1)画面の表示を消去する 2)カーソルを1行目8文字目に移動し、文字Aを表示する。  カーソルを2行目7文字目に移動し、文字Bを3個表示する 3)カーソルを2行目先頭へ移動する 4)1234+5678を計算し、その結果を使ってLCDに1234+5678=?????と表示する。   ?????は計算結果の数字で置き換える。 似たような命令もありますが、お願いします。

  • LCD制御

    交流回路を使ってLCDディスプレイの制御をやろうと思っています。 今PIC16F877Aを使ってSP521PRを制御しようとしていますが、交流回路を使ってPICとLCDの接続方法がわかりません。 交流回路の組み方とか仕組みを教えてください。お願いします。

  • 16×2キャラクタLCDへの文字表示について

    16×2キャラクタLCDへの文字表示について質問です. CGRAMアドレス:0xffの塗りつぶしの四角を表示させたいのですが, '■'が'β'になって表示されてしまいます. どのような方法をとれば■が表示できるでしょうか. 開発言語はC,環境はMPLAB X IDE,XC8コンパイラ. 対象デバイスはPIC18F4553です. 御回答の程よろしくお願いいたします.

  • LCD表示プログラムで誤表示が解決できない

    pic16F84AにS-10551D(秋月)をつないでキャラクタ表示をしようとしていますが50%くらい誤まって表示してしまい解決策が有りません。 プログラムはアッセンブラでMPLAB IDEv8.60を使用 電波新聞社のPICマイコン完全マスターを参考 にしています。データ長4bitのイニシャライズも本やLCD添付資料のままでは表示しませんでした。 LCDパネルの問題かマイコンソフトの問題かの区別も出来ていません。 ちなみにソースを変更してSC1602BS 16*2行のLCDパネルでは正しく表示出来ます。 S-10551Dは16桁1行の一番安いパネルですが使えず捨てるのはくやしいので質問しました。同じような経験をされて解決された事があればアドバイス願います。 最終的にはLCDにバッテリーの充放電量を表示できる充放電コントローラーを作るのが目的です。

  • LCDのサブルーチンについて

    今、LCDとPICの接続方法を [PIC(下位4ビット)⇔LCD]から[PIC(上位4ビット)⇔LCD]に変更することを考えています。 LCDのサブルーチンはHi-Tech CコンパイラーのLCDのサンプルで使用されていたものを使用しています。 接続方法を変更するにあたりサブルーチンを書き換えなくてはいけないのですが、どのように書き換えればいいのかわかりません。 参考までにLCDのサブルーチンとPICとLCDとの接続方法を示した図を掲載します。 #define _LEGACY_HEADERS #define _XTAL_FREQ 4000000 #include <pic.h> #include "lcd.h" #define LCD_RS RA0 //#define LCD_RW RA4 #define LCD_EN RA1 #define LCD_DATA PORTB #define LCD_STROBE() ((LCD_EN = 1),(LCD_EN=0)) /* write a byte to the LCD in 4 bit mode */ void lcd_write(unsigned char c) { __delay_us(40); LCD_DATA = ( ( c >> 4 ) & 0x0F ); LCD_STROBE(); LCD_DATA = ( c & 0x0F ); LCD_STROBE(); } /* * Clear and home the LCD */ void lcd_clear(void) { LCD_RS = 0; lcd_write(0x1); __delay_ms(2); } /* write a string of chars to the LCD */ void lcd_puts(const char * s) { LCD_RS = 1; // write characters while(*s) lcd_write(*s++); } /* write one character to the LCD */ void lcd_putch(char c) { LCD_RS = 1; // write characters lcd_write( c ); } /* * Go to the specified position */ void lcd_goto(unsigned char pos) { LCD_RS = 0; lcd_write(0x80+pos); } /* initialise the LCD - put into 4 bit mode */ void lcd_init() { char init_value; //ADCON1 = 0x06; // Disable analog pins on PORTA init_value = 0x3; //TRISA=0; //TRISB=0; LCD_RS = 0; LCD_EN = 0; //LCD_RW = 0; __delay_ms(15); // wait 15mSec after power applied, LCD_DATA = init_value; LCD_STROBE(); __delay_ms(5); LCD_STROBE(); __delay_us(200); LCD_STROBE(); __delay_us(200); LCD_DATA = 2; // Four bit mode LCD_STROBE(); lcd_write(0x28); // Set interface length //lcd_write(0xF); // Display On, Cursor On, Cursor Blink lcd_write(0x0C); lcd_clear(); // Clear screen lcd_write(0x6); // Set entry Mode }

  • 同じドライブIC搭載のLCDで位置ずれが起きる

    今まで購入が可能だったというLCDモジュールがすでにメーカー側で終息品になっているということで、代わりになるLCDモジュールを探しています。 今まで使用していたLCDモジュールが PE12864-004 というLCDモジュールだったのですが、 秋葉原の部品屋さん(aitendo)で購入した”CH12864F”という型番の前よりもサイズが小さめのLCDモジュールを試しい接続してみたところ、そのままのプログラムで表示動作ができることを確認しました。 このCH12864FというLCDモジュールのページを見てみると http://www.aitendo.com/product/12387 内蔵コントローラチップは”ST7567R”というのを使用しているということがわかりました。 そこで、同じ内臓コントローラチップを使用しているLCDモジュールならばいろいろな形状や種類のLCDモジュールでもOKなのかなと思い、同じST7567Rを搭載しているという "FGC12864SYHDA-000011E"と書かれたLCDモジュールを購入してためしてみたのですが、マイコンから送信している漢字フォントの画像などは表示できているのですが、なぜか位置ずれが起きてしまっていました。 同じ内臓コントローラチップを使っていても、位置ずれの修正などはプログラムで行わなければいけないのでしょうか? どうぞ、ご教示の程よろしくお願い致します。

  • LCD(sc1602)が不調

    PICを勉強しています。以前からPICを使ってLCDに文字などを表示させる実験?などをしていたのですが、昨日から突然、上段すべてに四角(0xFF)が表示されるようになりました。下段には何も表示されません。ブレッドボード上の回路に変更はありません。 LCDにVdd、Vss、Voのみを接続しても、やはり上段すべてに四角が表示され、上記と変化ありません。以前に作成した(LCDへの表示を確認済みの)プログラムを使ってみましたが、これも同様で改善なしでした。 新品時に電源のみを接続したときには、上下段とも、何も表示されなかったと記憶しているのですが。 ネットを検索したら、同じ症状の例を発見しました。それへのアドバイスとしては、クロックを遅くする(または初期化時間を長めに取る)、回路を見直す、でした。もちろん双方とも試してみましたが、やはり変化ありません。よいアドバイスをどうかよろしくおねがいいたします。

  • H8 LCD の表示

    H8S2612を使っています。LCDを使いたいですが,なかなかできません,1行目が表示できるんですが,2行目が出てこないです。LCDの4ビット表示を使っています。r/w とD1~D3はGNDにつないでいます。 ちなみに,1行目が表示できるから,初期設定と4ビット表示の関数は問題ないと思いますが。何方がおしえていただけませんか?よろしくおねがいします。

FANTOM-0のVTW音切れについて
このQ&Aのポイント
  • FANTOM-0のVTW音切れについて質問なのですが、演奏中にオルガン(VTW)を使用しても同じ音色のままで音切れすることがありますか?
  • FANTOM-0の音切れは、オルガン(VTW)を使用した場合でも起こるのでしょうか?演奏中に音色が途切れることはあるのでしょうか?
  • FANTOM-0のVTW音切れに関して質問です。オルガン(VTW)を使用した場合でも同じ音色のままで音が途切れることがあるのでしょうか?
回答を見る