閲覧総計:59628  (本日:1  昨日:0)



【目次】(項目をクリックすると飛べます)


A/D値をLCDに表示

液晶ディスプレイ(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ビット接続例

制御ICが「HD44780準拠品」のLCDの場合データ4ビット接続が可能な事を知りました。
早速4ビット接続での稼働テストをしてみました。 07/10/13

P1010556.JPG

/**
* 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);
}



★この情報は役に立ちましたか?

選択肢 投票
はい 92  
普通 44  
いいえ 54  

8ビット接続例

06/11/19時点では、このLCDはデータ8ビット接続しか動かないと勘違いしてました。
当時作成した8ビット接続のプログラムも記録として残しておきます。 07/10/13記

【参照Help】
「mikroC Libraries」の「LCD8 (8-bit interface) Library」
 06/11/20

P1010207.JPG

/**
* 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表示法(基礎)

★この情報は役に立ちましたか?

選択肢 投票
はい 21  
普通 1  
いいえ 2  

添付ファイル: fileP1010556.JPG 6064件 [詳細] fileP1010207.JPG 2999件 [詳細]