#freeze 閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);)~ ~ 【目次】(項目をクリックすると飛べます) #contents ~ *A/D値をLCDに表示 [#c8b96228] 液晶ディスプレイ(LCD:Liquid Crystal Display)の活用の一つとして A/D変換値を表示する事例を紹介します。 アナログセンサの値をデジタル変換した0〜1023の値をLCDに表示する 事で入力されたアナログセンサ値を数値で正確に把握する事が可能となり ます。 本事例は「PIC16F88」を用い、半固定抵抗を回す事により、0〜1023のA/D変換値を 作り、その値をリアルタイムでLCDに表示しました。 06/11/20 16文字×1行LCD DMC16117A (OPTREX社製) 秋月@300円 制御ICは「日立HD44780準拠品」 電源:5V http://www.allelectronics.com/spec/LCD-114.pdf **4ビット接続例 [#fa8ce341] 制御ICが「HD44780準拠品」のLCDの場合データ4ビット接続が可能な事を知りました。 早速4ビット接続での稼働テストをしてみました。 07/10/13 &attachref(P1010556.JPG,zoom,150x150,button){新しい写真添付}; /** * A/D変換値を液晶ディスプレイ(LCD)に表示 データ4bit接続 * * PIC16F88 クロック:内蔵8MHz * * アナログ入力:RA1 * LCD制御pin R/W:RB0 RS:RB2 E:RB3 * LCDデータpin D4:RB4 D5:RB5 D6:RB6 D7:RB7 * LCD:DMC16117A (OPTREX社製) 秋月@300円 06/11/15 * http://www.allelectronics.com/spec/LCD-114.pdf * 電源:乾電池3本(4.5V) * * Devvice Flags: * _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF * _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON * _WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2 * * MikroC v7.0.0.3 */ void main() { //使用変数の定義 int port; char s_port[7]; //マイコンの初期化 PORTA = 0b00000000; //PORTAの中身をきれいにする PORTB = 0b00000000; //PORTBの中身をきれいにする OSCCON = 0b01110000; //内臓クロック8MHzに設定 //A/D変換clock設定 0.125us*16倍=2.0us at 8MHz > 1.6us ADCON1.ADCS2=1; ADCON0.ADCS1=0; ADCON0.ADCS0=1; // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 // ANSEL = 0b00000010; //RA1のみアナログ使用、他は全てデジタル使用 TRISA = 0b00000010; //RA1のみ1:入力に設定、他は0:出力 TRISB = 0b00000000; //PORTB 8ヶ全て出力に設定 //マイコンの初期化終わり Lcd_Config(&PORTB,2,3,0,7,6,5,4); //LCDのピン接続設定 Lcd_Init(&PORTB); //LCD初期化 Lcd_Cmd(LCD_CURSOR_OFF); //カーソル非表示 do { //アナログデータの取得(0~1023) port = ADC_Read(1); //RA1値をアナログデジタル変換 Delay_ms(500); //0.5秒待機 IntToStr(port, s_port); //数値を文字列に変換 Lcd_Out(1, 1, "A/D Levl"); //LCD上位文字列表示 Lcd_Out(2, 1, s_port); //LCD下位文字列表示 }while(1); } ~ ★この情報は役に立ちましたか? #vote(はい[18],普通[2],いいえ[6]) - 必要なものだけをシンプルにまとめたすばらしい入門ページです!! -- [[tonus]] &new{2008-01-06 (日) 21:37:25}; - Lcd_configとLcd_initで二回初期化してる。Lcd_configはいらない。 -- [[774]] &new{2008-12-29 (月) 00:36:46}; - Lcd_configはカスタム設定で、Lcd_initはデフォルト設定。上の設定はまんまデフォルト設定になってる。 -- [[774]] &new{2008-12-29 (月) 00:38:28}; - ついでにLcd_cmd(Lcd_Clear)も入れておいた方が良いと思う。 -- [[774]] &new{2008-12-29 (月) 00:41:00}; - この装置にバキュームセンサーを取り付けて数字とバーグラフ表示させたいです。御教授頂けますか? -- [[simako]] &new{2009-03-05 (木) 11:23:24}; - simakoさん、投稿ありがとうございます。 「電子工作etc」さんの↓このページの情報が参考になるのではないでしょうか? http://www8.plala.or.jp/InHisTime/page030.html#PIC-042 いかがでしょうか? -- [[PICとMikroC]] &new{2009-03-06 (金) 01:06:46}; - 管理人様情報提供真にありがとうございます。じっくり読んで参考にさせていただきます。分からない事が出てきましたらまたお付き合い宜しく御願いいたします。 -- [[simako]] &new{2009-03-06 (金) 07:30:46}; - 管理人様まずこの回路で実験してみたいので回路図を書いて頂けないでしょうか?宜しく御願いいたします。 -- [[simako]] &new{2009-03-08 (日) 08:08:49}; - simakoさん、了解しました。回路図書いてみます。少々時間をください。 (でも、LCDのどれと、PICのどのピンを接続すれば良いかはソースに記述してますし、 迷う所は配線写真を拡大して見て頂くとわかると思いますよ。) -- [[PICとMikroC]] &new{2009-03-08 (日) 16:40:20}; - 管理人様 お手数おかけいたしましたがお蔭様で解決できました。ありがとう御座いました。 -- [[simako]] &new{2009-03-10 (火) 18:23:35}; - simakoさん、おめでとうございます。よかったですね。今後ともよろしく。 -- [[PICとMikroC]] &new{2009-03-10 (火) 22:58:38}; - simakoさん、おめでとうございます。よかったですね。今後ともよろしく。 -- [[PICとMikroC]] &new{2009-03-10 (火) 23:01:39}; - 管理人様お世話になっております。おねがいがございます。車に標準装備されてるバキュームセンサーを使いhttp://www.jaspa-oita.or.jp/jissen/2002/j_1407.html センサーの特性図です。この出力電圧をA/D変換してLCDに数字で−○○○mmHgと表示させる様にC言語でプログラム書いていただくこと出来ませんでしょうか?ご検討頂けると幸いです。 -- [[simako]] &new{2009-03-15 (日) 15:45:43}; - simakoさん、車のバキュームセンサの出力電圧をA/D変換してLCDに数字で−○○○mmHgと表示させるプログラムをC言語で書いて差し上げる事はご遠慮させて頂きたいです。しかし、simakoさんの書かれたプログラムを添削させて頂くことは喜んでやらせてもらいます。ご検討願います。 -- [[PICとMikroC]] &new{2009-03-15 (日) 20:11:11}; - simakoさん、ここの「情報交換掲示板」にプログラムや写真を投稿出来る様にしました。ご利用ください。 -- [[PICとMikroC]] &new{2009-03-15 (日) 20:53:32}; #comment_nospam **8ビット接続例 [#tbdf3cd2] 06/11/19時点では、このLCDはデータ8ビット接続しか動かないと勘違いしてました。 当時作成した8ビット接続のプログラムも記録として残しておきます。 07/10/13記 【参照Help】 「mikroC Libraries」の「LCD8 (8-bit interface) Library」 06/11/20 &attachref(P1010207.JPG,zoom,150x150,button){新しい写真添付}; /** * A/D変換値を液晶ディスプレイ(LCD)に表示 * * PIC16F88 クロック:内蔵8MHz * * アナログ入力:RA1 * LCD制御pin RA0:R/W RA2:RS RA3;E * LCD:DMC16117A (OPTREX社製) 秋月@300円 06/11/15 * http://www.allelectronics.com/spec/LCD-114.pdf * 電源:乾電池3本(4.5V) * * 開発環境:MikroC V6.2 * Device Flags: * _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF * _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON * _WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2 */ void main() { //使用変数の定義 char *text1 = "A/D Levl"; //LCD上位表示文字 char *text2 = "********"; //LCD下位表示文字 //unsigned int port; //char *s_port; int port; //07/10/4 修正 char s_port[7]; //07/10/4 修正 //マイコンの初期化 //内蔵クロック8MHz使用に設定 OSCCON = 0b01110000; //A/D Clock Set = 2.0us //Up to 1.6us ADCON1.ADCS2=1; ADCON0.ADCS1=0; ADCON0.ADCS0=1; // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 // ANSEL = 0b00000010; //RA1のみアナログ使用 PORTA = 0b00000000; //PORTAの中身をきれいにする PORTB = 0b00000000; //PORTBの中身をきれいにする TRISA = 0b00000010; //RA1のみ1:入力に設定、他は0:出力 TRISB = 0b00000000; //PORTB 8ヶ全て0:出力に設定 //マイコンの初期化終わり Lcd8_Config(&PORTA, &PORTB, 2,3,0,7,6,5,4,3,2,1,0); //LCD初期設定 Delay_ms(1000); //1秒待機 Lcd8_Cmd(LCD_CURSOR_OFF); //カーソル非表示 do { //アナログデータの取得 //0~1023 port = ADC_Read(1); //RA1値をアナログデジタル変換 Delay_ms(500); //0.5秒待機 IntToStr(port, s_port); //数値を文字列に変換 Lcd8_Out(1, 1, text1); //LCD上位文字表示 Lcd8_Out(2, 1, s_port); //LCD下位文字表示 } while(1); } 関連ページ:LCD表示法(基礎) ★この情報は役に立ちましたか? #vote(はい[12],普通[0],いいえ[1]) #comment_nospam