• 追加された行はこの色です。
  • 削除された行はこの色です。
閲覧総計:&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:RA0  RS:RA2  E:RA3
  * 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(はい[5],いいえ[3])
 #vote(はい[6],いいえ[3])
 - 必要なものだけをシンプルにまとめたすばらしい入門ページです!! -- [[tonus]] &new{2008-01-06 (日) 21:37:25};
 
 #comment
 
 **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(はい[6],いいえ[0])
 
 #comment