割り込みでサーボを動かすの巻きPIC16F88でA/D変換してみる。kazurock0926前回はひさびさのマイコン工作の開始という事でPIC16F88で割り込みを学びました。ACモーターのフィードバック制御まであとはLCD表示とA/D変換を学ぶのみです。今回は難易度がグッと上がるLCDを表示させるという挑戦をします。ムゲンダイってなってますね。本当はユミ→ユメです。使ったものはLCDパネルのSC1602です。ちなみにバックライトがついてるのもを秋月で500円でゲットじつは今は値上がりしてます。今は700円なーりピンの配置まず最初の感想は、こんなたいそうな物本当に表示させれるようになるんかいな?と正直思いました。ネットでは結構情報もあるのですが、いまいち良くわかりませんでした。根気よく他サイトを読み込んでいくと・・・なんとなーくやりかたがわかってきたのです。PICでLCD表示させるということさてどのようにPICでLCDを表示させるかですが、もちろんのことPICのI/Oポートからの出力の切り替えによって文字データや数字データを出力します。その取り決めはすでに決まっていて、私たちが自由に決める事はほぼありません。表示させる取り決めや手順などは、あらかじめ決められていてその通りにプログラミングすればいいだけなんです。難しいのは開発環境やプログラミング言語の違いで若干迷うというだけで基本的な方法は一緒です。IDEの開発環境でC言語でプログラムしています。実際私はここのプログラムを少しいじらせてもらい、使っています。間違いなくムズイのはLCDパネルの初期化です。LCDパネルを使うようにするにはPICのプログム上でPICを表示させる為に”初期化”させないと使えません。その初期化がややこしくて、電源立ち上げ後数msecまってLCDのDB4−DB8にこのビットを送ってそのあと数ミリsec待って・・・めんどくさいんです。この世の中便利でそのような手順のソースコードをまとめてくれて、そのソースをインクルード(読み込む)するだけで簡単に使えるように公開してくれる先人達がいます。ありがたーく使わせてもらいます。ちなみにそのソースはこちらです。このソースはC言語でPIC16F84A用です。試しにこのプログラムでPIC16F88でLCD表示させようと試みましたができませんでした。最初にはまって嫌になりました・・・しかしちょこっとプログラムを改造するだけでPIC16F88でも文字を表示させる事に成功しました!!!回路図LCD表示の方法は4ビットモードで。クロックは便利な内部クロック1MHzLCDは秋月で買った500円のSC1602を使用しました。ソースの使い方LCDの表示はなんだか難しそうですが、そうでもありません。難しいプログラムは先人たちがソース化してくれており、私の様の相乗り精神満載の人が簡単に使えるようにしてくれています。私の使命はその使い方を皆様に教授いたします。MPLABXを使います。知らないあいだにバージョンが3.4に上がっとります。新規作成でプロジェクトをつくります。デバイスはPIC16F88を選んで、コンパイラーはXC8を選んでおきます。MPLABXのざっくりした使い方はこちらそして後のプログラムの解説の最後でダウンロードできるファイルをプロジェクトの中のヘッダーファイルとソースファイル下にドラッグ&ドロップさせます。そんでもってコンパイルするだけで、最初の映像のようにLCDを表示させる事が可能です。メインプログラムを書き換えれば自由自在にLCDを使ったPIC電子工作の完成という手筈になります。下記にプログラムの解説とLCD表示のワンポイントアドバイスを書いてます。“lcd.h”をインクルードしているのでlcd.cの関数が使えます。LCD画面クリアlcd_cls();画面のクリアは上記関数で行います。);//これは文字の表示位置の設定です。(0,0)最初の0のところで1行目か2行目を設定1なら2行目です。そんで次の0のところで何文字目から文字を表示させるかを決めます。SC1602は16文字表示なので0−15を入れる事になります。);文字は上記で表示させます。半角英数と半角カタカナが表示させる事ができます。ch){lcd_putc(ch);}を定義しておくと、なんとC言語でおなじみのpringf関数が使えます。);で文字位置を決めてprintf(“モジヲニュウリョク”);で文字をLCDに表示させれるようになります。メインプログラムでLCDに表示させる為に使う関数は上記2つで事足ります。すごくないですか?本当ならもっと面倒なんですよ。あとPICのどのピンをLCDに割り当てるかなどの細かい設定は実際のプログラム中に書いています。今回作成したプログラムですがダウンロードできるようにしておきまますね。以外とPIC16F88を利用したLCD表示を解説しているサイトがないので・・・ダウンロードは右クリックで”名前をつけてダウンロード”でゲットしてね。なんと外部発振でLCDを動かすと挙動がおかしくなることが判明しました。原因はlcd.cの中でstrobe(E)の信号を送る前と送ったあとの待ち時間が短い事に原因がある事が判明しました。修正する事でHSの外部発振でも使用可能になりました。IEDでコンパイルするだけで使えます。メインファイルを書き換えるだけで他の用途にも改造できるでしょう。ファイトん!!下記に全てのプログラムを載せておきまーす。//スポンサードリンク/*ピン配列はこんな感じにしました。LCDを使うには4ビットモードで4つのピンを使います。Enableに設定しました。Enableは設定次第でどこでも設定できます。lcd.cで簡単に設定できます。詳しくはlcd.cの説明で。printfを利用するならこの記述がいります。本当はfor分などを使うとスッキリするのですが、勉強の為、たくさん書いてます。);__delay_ms(1000);}}LCDのヘッダーファイルlcd.hこのヘッダーファイルで定義された関数を使って文字を表示させます。*/LCDの初期化や書き込みなどをまとめたソースコードlcd.cもともとがPIC16F84A用のソースコードなのでそのままではLCD表示できません。手を加えて書き直しました。言ってもほぼそのまま使っています。手を加えたところだけ赤で書き直しております。PIC16F88では初期化に時間がかかるみたいで、だいたいwait時間を決められた時間より5倍程度伸ばすとうまくいきます。partB上位を使うか下位を使うか決めます。下位から出力するようになります。ちなみにLCDパネルのLCD_RWはグランドに落としておかいとLCDがうまく表示してくれません。下位4bitをクリア#endif}むちゃくちゃたくさん書きましたが、理解すると驚くほど簡単にLCD表示が可能になりPIC電子工作のリミッターをさらに上昇させる事になるでしょう。あきらめずに頑張っていきましょう。割り込みでサーボを動かすの巻きPIC16F88でA/D変換してみる。PM楽しく記事を読ませていただきました。ありがとうございます。コンニチワ」の直前に、)1列目に黒い四角が表示される瞬間がありますが、その表示のままになって、その先に進まなくなりました。つくる途中に気になったこととして、記事と異なることをやってしまった以下の3点があります。VDD.3LCDにはんだつけする際、10秒ほど当てつづけた(加熱しすぎ?)原因として考えられることがお分かりであれば教えて頂けますでしょうか。私の問題なのに恐縮ですがよろしくお願いします。PM美鈴様どうもコメントありがとうございます。MPLABXで書き込みにpickit3を使ったということですねもし問題なくコンパイルできているのでしたら、pickit3でも正しく書き込みできるはずです。書き込みの際のエラーですが、文面からUSBの電源供給ができていないと書いています。本来なら5Vいるのに、4.75Vしかないよって言ってます。USBポートを変えてみて試してみてはどうでしょうか?LCDの故障ですが10秒ならあて過ぎかもしれませんね。あと、よくある表示ができない原因にコントラストの調整があります、コントラストの調節はLCDの3番に可変抵抗をつけ任意の電圧を入力してコントラストを調節します。この調節をしてもうまくいなかないのであれば私のメールアドレスにmplabxのプロジェクトファイルをコピーして送ってくだされば原因を精査いたします。プログラムに問題がなければ、ハードに問題があるはずです。PM早速のご連絡有難う御座います。・USBポートを変えると書き込みの際のエラーはなくなりました。・10kΩの可変抵抗をつけてコントラストの調整を行いましたが、うまくいきませんでした。汗そこでプロジェクトファイルをお送りしたいと思っていますがメールアドレスはどちらになるのでしょうか。宜しければ一度私のメールアドレスに空メールでも送っていただけますでしょうか。AM美鈴様お問い合わせより美鈴様のメールアドレスを誤入力くださるこちらよりメールいたしますので、プロジェクトファイルを送ってくださると確認します。10kΩの可変抵抗を繋いでコントトラスト調整すると画面が暗くなったり、何も映らなくなったりしますか?もしそうならなければ、LCDの配線に問題があると思います。それではよろしくお願いいたします。PMお世話になっております。お問い合わせより連絡致しましたが、届きましたでしょうか。可変抵抗についてですが、10kΩの可変抵抗を繋いで、ちゃんとコントトラスト調整すると画面が暗くなったり、何も映らなくなったりします。PM美玲様gmailあてにメールを送っています。返信でソースを送ってくださると検証いたします。kazurock0926#gmail.com一応メールアドレスを乗せておきます。#を@に変えてください。メールロボット収集対策です。PMお世話になっております。プロジェクトファイルをご確認いただきありがとうございます。おかげさまでうまくいきました。親切なご対応ありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。鉛バッテリー充電器の製作23端子レギュレーターで可変電源装置を自作しよう!!キッチンタイマーの修理PIC16F88でLCD表示に挑戦!!PIC16F88でA/D変換してみる。~赤外線解析編~HiLetgoの激安ESP8266を使うブログをメールで購読メールアドレスを記入して購読すれば、更新をメールで受信できます。WordPress.。