本文へスキップ

アトメル社のAVRマイコンをつかった電子工作および無線を使った電子工作を紹介します。





ホーム > ソフト室 >AVRマイコンで始めるC言語の使い方 >演算結果をLCDに表示する

AVRマイコンで始めるC言語の使い方

演算結果をLCDに表示する

ここでは”5+10”の加算を行い、結果をLCDに表示を行います。
演算結果をLCDに表示できるコードに変換してからLCDに表示を行います。

フローチャート

1.演算を行うためにint型変数を宣言するとともに初期  値を入れます。
  i = 5, j = 10, K = 0, sum;
  sumは演算結果を入れておきます。
  kは数字から文字列に変換する際に使用します。
  int型範囲は-32768~32767なので最大5桁です。
  従って文字コードに変換した結果を格納する配列は
  5あればOKです。
2.ポート設定、LCD初期化は前回と同一です。
3.演算をして結果をsumに格納します。
4.sumを10で割った余りを演算します。
  換算結果を文字コードに変換し田結果をstr[]に格納
  します。
  剰余演算子は'%'です。
  数字(10進)から文字コードへ変換するには30hを加
  算します。
5.一つ上位の桁を演算するために10で割ります。
  結果をsumに格納します。
  配列を+1進めます。(k++をします。)
6.sumの値が'0'であれば変換を終了します。
7.文字コードに変換した結果をLCDに表示させます。
  str[]に格納されている文字数はkにありますのでこ
  れを使用して文字数分LCDに表示させます。

プログラム

/*
 * avr009_sum.c
 *
 */ 


#include <avr/io.h>
#include "hd44780.h"    // EZ-LCDインクルードファイル

void InitHard( void);   // ポートの初期化及び割込設定
int main(void)
{
        int     i = 5, k = 0, j = 10, sum, m;
        char str[5];
        
        InitHard();                     // ポートの初期化をします。
        lcd_init ();            // LCDの初期化をします。
        
        sum = i + j;
        
        do   // 剰余を演算子します。
        {
                str[ k++] = sum % 10 + 0x30;
                sum /= 10;
        }while( sum);           

        for ( m = 0; m < k; m++)        //LCDに表示します。
        {
                lcd_putc( str[ k - (m + 1)]);
        }
                                
    while(1)
    {
        //TODO:: Please write your application code 
    }
}

void InitHard( void) // ポートの初期化
{
        // ポートB初期設定
        DDRB = 0xff;    // PB7~PB0を出力に設定します。
        PORTB = 0;              // PB7~PB0に'L'を出力します。
        // ポートC初期設定
        DDRC = 0x3f;    // PC7,PC6は初期(入力)、PC5~PC0を出力に設定します。
        PORTC = 0;              // PC7~PC0に'L'を出力します。
        // ポートD初期設定
        DDRD = 0xf0;    // PD7~PD4は出力、PD3~PD0は入力に設定します。
        PORTD = 0;              // PD7~PD0に'L'を出力します。
}

実行結果

LCD表示器に演算結果を表示することができました。
前ページ次ページ