• 検索結果がありません。

MB-LCD1 標準入出力関数による表示

N/A
N/A
Protected

Academic year: 2021

シェア "MB-LCD1 標準入出力関数による表示"

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

(1)

液晶表示ユニット MB-LCD1 標準入出力関数による表示

概要

本アプリケーションノートは、液晶表示ユニット MB-LCD1 を、オリジナル・ライブラリ (STD_LCD_LIB.lib)と、コンパイラ NC30WA 付属の標準ライブラリ(r8clib.lib)の標準入 出力関数を使用して表示する方法を説明するものです。 オリジナル・ライブラリ(STD_LCD_LIB.lib)の詳細については、「液晶表示ユニット MB-LCD1 オリジナル・ライブラリの紹介(MB_LCD_1_SG043199.pdf)」を参照してください。 動作環境は以下のとおりとします。 ターゲットマイコン:SR8C15CP ターゲットボード:MB-RS8 開発環境:ルネサステクノロジ社 統合化開発環境 HEW Version 4.00.01.001 ツールチェイン Renesas M16C Standard Toolchain 5.30.02

MB-LCD1 の H/W 構成

液晶表示部(Sunlike Display Tech 社 SC1602BS*B)にシフトレジスタ 74HC164 を接続し、ポ ート信号 3 線とリセット信号のみによる制御を実現しています。 各ポート接続表 SR8C15CP 74HC164(シフトレジスタ) SC1602BS*B(液晶表示部) P3_3(出力) A,B シリアルデータ入力 - P3_4(出力) - E 動作起動信号入力 P3_5(出力) CLK クロック入力 - RESET(出力) CLR クリア信号入力 -

(2)

サンプルプログラムの構成

本アプリケーションノートで紹介するサンプルプログラムは HEW のプロジェクトで提供して います。以下にプロジェクトフォルダの構成を示します。 ncrt0.a30 M16C ツールチェイン標準のスタートアップルーチン NCRT0.A30 に、外部発振回路からのクロ ックをメインクロックとする設定を追加しています。 本スタートアップルーチン実行後、メインクロックは 20MHz となります。(ターゲットボー ド MB-RS8 に搭載した場合の動作を想定しています。) 全セクションを設定する定義ファイル SECT30.INC をインクルードしています。 本スタートアップルーチンは必ず先頭にリンクしてください。 sect30.inc M16C ツールチェイン標準のセクション定義ファイルです。NCRT0.A30 からインクルードされ ます。 sfr_r815.inc ターゲットマイコン SR8C15CP(ルネサステクノロジ R8C/Tiny シリーズ R5F21154SP)の SFR(Special Function Register)の定義ファイルです。

STD_LCD.h STD_LCD_LIB.lib を使用するためのヘッダファイルです。かならず C ソースファイル内でイ ンクルードしてください。また、M16C ツールチェインコンパイラ NC30WA で提供される標準 ライブラリを使用しているので、標準ヘッダファイル「string.h」を C ソースファイル内で インクルードしてください。本サンプルプログラムでは、「string.h」は環境変数 INC30 よ り指定されたディレクトリ(デフォルトのインストール で”C:\Renesas\NC30WA\V530R02\inc30”に設定されています)にあることが前提となります。

(3)

STD_LCD_LIB.lib MB-LCD1 を制御するオリジナル・ライブラリです。 本ライブラリで使用する周辺機能は以下のとおりです。 入出力ポート:P3_3(出力)、P3_4(出力)、P3_5(出力) STD_LCD_TEST.c MB-LCD1 に文字キャラクタを表示させる C 言語のプログラムです。標準入出力関数とオリジ ナルのライブラリを使用しています。 (stdio.h) 本サンプルプログラム内で標準入出力関数を使用しているので、stdio.h をインクルードし ています。本サンプルプログラムでは、環境変数 INC30 より指定されたディレクトリ(デフ ォルトのインストールで”C:\Renesas\NC30WA\V530R02\inc30”に設定されています)にあるこ とが前提となります。 (string.h) 本サンプルプログラム内で文字列操作関数を使用しているので、string.h をインクルードし ています。本サンプルプログラムでは、環境変数 INC30 より指定されたディレクトリ(デフ ォルトのインストールで”C:\Renesas\NC30WA\V530R02\inc30”に設定されています)にあるこ とが前提となります。 (r8clib.lib) 本サンプルプログラム内で標準入出力関数、文字列操作関数を使用しているので、標準ライ ブラリ r8clib.lib が環境変数 LIB30 より指定されたディレクトリ(デフォルトのインストー ルで”C:\Renesas\NC30WA\V530R02\lib30”に設定されています)にあることが前提となります。

(4)

サンプルプログラムの内容

main <LCD_LIB.c> <概要> 液晶表示ユニット MB-LCD1(キャラクタタイプ 16 文字×2 行)に文字を表示させる。 名前 main 引数 なし 戻り値 なし 呼び出し元 - 使用オリジナル・ライブラリ (STD_LCD_LIB.lib より) std_LCD_init,LCD_puts,LCD_cursor LCD_gotoXY,LCD_putc 使用標準入出力関数ライブラリ (コンパイラ提供 r8clib.lib より)

strcpy, printf, putchar

<リスト> <実行結果> MB-LCD1 に 1 秒おきに以下のように表示する。 #include <stdio.h> #include <string.h> #include "std_lcd.h" // プロトタイプ宣言 void wait_x(void); void wait_x(void) { long l; for(l=0;l<150000;l++) { ; } } // メインルーチン void main(void) { int i,j; char str[20]; long l; std_LCD_init(); strcpy(str,"Renesas"); j=1234; while(1) { printf("Hello World!\n <%s>",str); for(i=6;i!=0;i--) { wait_x(); } printf("\nMy name is R8C. %d %04X",j,j); for(i=6;i!=0;i--) { wait_x(); } for(i=1;i<=100;i++) { wait_x(); LCD_gotoXY(0,1); printf("Count: %03d",i); } putchar(0x0c); // LCD 消去 j++; } }

(5)

<実行結果>

① 1 行目に「Hello world!」、2 行目に「<Renesas>」と表示する。 ② 1 行目に「My name is R8C.」、2 行目に「1234 04D2」と表示する。 ③ 2 行目に「Count: xxx」と表示する。xxx は 000~100 までカウントする。 ④ 100 までカウントすると、①の「Hello world!」、「<Renesas>」に戻って②~④と繰り 返す。 図 2 サンプルプログラムの実行結果 ① ② ③ ④

(6)

ライブラリの仕様

LCD_init <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 の初期設定を行う。 名前 std_LCD_init 引数 なし 戻り値 なし <実行結果> ・入出力ポート 3 の P3_3,P3_4,P3_5 を出力ポートに設定する。 ・MB-LCD1 を以下のとおり設定する。 インタフェースデータ長 :4 ビット長 デューティ(1行の表示文字数):16 文字 表示文字構成 :5×8 ドットマトリクス カーソル :点灯させない(ホーム位置(0 番地)に設定) カーソル方向 :インクリメント 表示:オン、カーソルのある桁は点滅しない std_LCD_init <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 の初期設定を行う(LCD_init を実行する)。 標準出力(stdout)の出力先を設定する。 名前 std_LCD_init 引数 なし 戻り値 なし <実行結果> ・LCD_init を実行する。(詳細は LCD_init の項を参照) ・標準出力(stdout)にオリジナル・ライブラリ LCD_putc を割りあてる。 ※本関数を実行後、標準出力(stdout)は液晶表示ユニット MB-LCD1 に設定されます。

(7)

LCD_puts(*str) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 に文字列を表示する。 名前 LCD_puts 引数 unsigned char *str (文字列は対応する文字 16 文字まで) 戻り値 なし <実行結果> MB-LCD1 に引数*str の示す文字列を表示する。 <C 言語での呼び出し例> MB-LCD1 のホーム位置から Sunhayato と表示する。 #include "STD_LCD.h" 中略 char str[10]="Sunhayato"; LCD_init(); LCD_puts(str); S u n h a y a t o

(8)

LCD_putc(c) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 に文字を表示する。 名前 LCD_putc 引数 char c (c=対応する文字 1 文字) 戻り値 なし <実行結果> MB-LCD1 に文字を表示する。 <C 言語での呼び出し例> MB-LCD1 のホーム位置に A を表示する。 #include "STD_LCD.h" 中略 char c; LCD_init(); c='A'; LCD_putc(c); A LCD_cursor(b) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 のカーソル表示を制御する。 名前 LCD_cursol 引数 unsigned char b (b=0,1) 戻り値 なし <実行結果> MB-LCD1 のカーソルを、引数 char b が 1 の場合は表示、0 の場合は消去する。 <C 言語での呼び出し例> MB-LCD1 のホーム位置にカーソルを表示する。 #include "STD_LCD.h" 中略 LCD_init(); LCD_cursor(1); _

(9)

LCD_gotoXY(x,y) <STD_LCD_LIB.lib>

<概要>

液晶表示ユニット MB-LCD1 のカーソル位置を設定する。 名前 LCD_gotoXY

引数 unsigned char x,y (x=0~15、y=0,1)

戻り値 なし <実行結果> MB-LCD1 のカーソルを引数 x(列)、y(行)の位置に設定する。 <C 言語での呼び出し例> MB-LCD1 に 1 行目の左端にカーソルを設定する。 #include "STD_LCD.h" 中略 LCD_init(); LCD_cursor(1); LCD_gotoXY(0,1); 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 _ LCD_locate(pos) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 のカーソル位置を設定する。(DDRAM アドレスを設定する) 名前 LCD_locate

引数 unsigned char pos (pos=DDRAM アドレス)

戻り値 なし

<実行結果>

(10)

LCD_gotoX(x) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 のカーソル位置を設定する。 名前 LCD_gotoX 引数 unsigned char x (x=0~15) 戻り値 なし <実行結果> MB-LCD1 のカーソルを引数 x(列)の位置に設定する。 <C 言語での呼び出し例> MB-LCD1 の 1 行目の左端から右端へカーソルを移動する。 #include "STD_LCD.h" 中略 long l; LCD_init(); LCD_cursor(1); for (l=0;l<250000;l++) { ; } LCD_gotoX(15); 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 _ _ LCD_gotoY(y) (LCD.a30) <概要> 液晶表示ユニット MB-LCD1 のカーソル位置を設定する。 名前 LCD_gotoY

引数 unsigned char y(y=0,1)

戻り値 なし <実行結果> MB-LCD1 のカーソルを引数 y(行)の位置に設定する。 <C 言語での呼び出し例> MB-LCD1 の 0 行目の左端から 1 行目左端にカーソルを移動する。 #include "STD_LCD.h" 中略 long l; LCD_init(); LCD_cursor(1); for (l=0;l<250000;l++) { ; } LCD_gotoY(1); 0 _ 1 _

(11)

LCD_clear <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 の表示を消去する。 名前 LCD_ clear 引数 なし 戻り値 なし <実行結果> MB-LCD1 の表示を消去し、カーソルをホーム位置に設定する。 LCD_data(c) <STD_LCD_LIB.lib> <概要> 液晶表示ユニット MB-LCD1 に DDRAM のデータを書き込む。 名前 LCD_data 引数 unsigned char c (c=対応する文字コード 1 文字) 戻り値 なし <実行結果> MB-LCD1 に DDRAM のデータに対応する文字パターンを表示する。(文字コードと文字パター ンの対応については MB-LCD1 添付資料を参照)

(12)

標準ライブラリ strcpy (r8clib.lib) 1

<文字列操作関数>

[機 能] 文字列の複写を行います。 [書 式] #include <string.h>

char _far * strcpy( s1, s2 ); [実現方法] 関数

[引 数] har _far *s1; ... 複写先の文字列へのポインタ const char _far *s2; ... 複写元の文字列へのポインタ [戻り値] ●複写先の文字列へのポインタを返します。 ●"s1"で示される領域に"s2"で示される(NULLで終了している)文字列を 複写します。 [解 説] ●複写先の文字列は、NULLで終了します。 ●オプション-O[3~5],-OR及び-OSを指定した場合は、最適化により関数の インライン展開を行う可能性があります。 ※1 ルネサステクノロジ社「R8C/Tiny,M16C/60,30,Tiny,20,10 シリーズ用 Cコンパイラパッケージ V.5.30Cコンパイラユーザーズマニュアル」より抜粋 標準ライブラリ printf (r8clib.lib) 1 <入出力関数> [機 能] stdoutへの書式付き出力を行います。 [書 式] #include <stdio.h>

int printf( format, argument... );

[実現方法] 関数

[引 数] const char _far *format; ... 書式指定文字列のポインタ

formatで与えられる文字列の%以降の指定は、次の意味を持ちます。[ ]内は省 略可能です。書式の各指定については次のページで説明します。※2 書式: %[フラグ][最小フィールド幅][精度][修飾文字(l、L、又はh)] 変換指定記号 書式例: %-05.8ld [戻り値] ●出力した文字数を返します。 ●ハードウェアに起因するエラーの場合、EOFを返します。 [解 説] ●formatの指定に従ってargumentを文字列に変換しstdoutへ出力します。※3 ●argumentにポインタを与える場合は、far型ポインタである必要があります。 ※1 ルネサステクノロジ社「R8C/Tiny,M16C/60,30,Tiny,20,10 シリーズ用 Cコンパイラパッケージ V.5.30Cコンパイラユーザーズマニュアル」より抜粋 ※2 printf format の書式設定についてはルネサステクノロジ社の上記コンパイラマニュア ル(付録 E.2.3 標準関数リファレンス printf の項)を参照してください。 ※3 オリジナル・ライブラリ std_LCD_init 実行後は、stdout は液晶表示 MB-LCD1 に設定され ます。

(13)

標準ライブラリ putchar (r8clib.lib) 1 <入出力関数> [機 能] stdoutに1文字を出力します。※2 [書 式] #include <stdio.h> int putchar( c ); [実現方法] マクロ [引 数] int c; ... 出力する文字 [戻り値] ●正常に出力できた場合、出力した文字を返します。 ●エラーの場合、EOFを返します。 [解 説] ●stdoutに1文字を出力します。 ※1 ルネサステクノロジ社「R8C/Tiny,M16C/60,30,Tiny,20,10 シリーズ用 Cコンパイラパッケージ V.5.30Cコンパイラユーザーズマニュアル」より抜粋 ※2 オリジナル・ライブラリ std_LCD_init 実行後は、stdout は液晶表示 MB-LCD1 に設定され ます。

(14)

参考文献

・ 液晶表示ユニットの取扱説明書: MB-LCD1 添付資料※1 ・ オリジナル・ライブラリ(STD_LCD_LIB.lib)について: 「液晶ユニット MB-LCD1 オリジナル・ライブラリの紹介」(MB_LCD_1_SG043199.pdf)※ 1

・ 統合化開発環境 High-performance Embedded Workshop の使い方:

「High-performance Embedded Workshop ユーザーズマニュアル」(JHEWU51.pdf)※2

「SR8C15CP スタートアップガイド」(SR8C15CP_SG043101.pdf) ※1 ・ コンパイラ付属標準ライブラリについて: ルネサステクノロジ社製コンパイラ「NC30WA コンパイラパッケージ V5.30 ユーザーズマ ニュアル」※2 1 サンハヤト株式会社発行 2 株式会社ルネサステクノロジ発行

(15)

<本資料について> ● 本資料は、電子工作や電子回路、パーソナルコンピュータの操作について一般的な知 識をお持ちの方を対象にしています。 ● 本資料を元に操作するには、株式会社 ルネサス テクノロジ社製 R8C/Tiny マイコンに ついての知識や開発環境などが必要です。 <安全設計に関するお願い> ● 一般的に半導体を使用した製品は、誤動作したり故障することがあります。半導体の 誤動作や故障の結果として事故や損害などを生じさせないように考慮した安全設計を ご購入者の責任で行ってください。 <本資料のご利用にあたって> ● この取扱説明書に掲載している内容は、お客様が用途に応じた適切な製品をご購入頂 くことを目的としています。その使用により当社及び第三者の知的財産権その他の権 利に対する保証、又は実施権の許諾を意味するものではありません。また、権利の侵 害に関して当社は責任を負いません。 ● 本資料に記載した情報を流用する場合は、お客様のシステム全体で充分評価し適用可 能かご判断願います。当社では適用可能判断についての責任は負いません。 ● 本資料に記載してある内容は、一般的な電子機器(学習教材、事務機器、計測機器、 パーソナル機器、コンピュータ機器など)に使用されることを目的としています。高 い品質や信頼性が要求され、故障や誤作動が直接人命を脅かしたり人体に危害を及ぼ す恐れのある、医療、航空宇宙、原子力制御、運輸、移動体、各種安全装置などの機 器への使用は意図も保証もしておりません。 ● この取扱説明書の一部、又は全部を当社の承諾なしで、いかなる形でも転載又は複製 されることは堅くお断りします。 ● 全ての情報は本資料発行時点のものであり、当社は予告なしに本資料に記載した内容 を変更することがあります。 ● この資料の内容は慎重に制作しておりますが、万一記述誤りによってお客様に損害が 生じても当社はその責任を負いません。 ● 本資料に関してのお問合せ、その他お気付きの点がございましたら、当社までお問合 せください。 ● 本資料に関する最新の情報はサンハヤト株式会社ホームページ (Hhttp://www.sunhayato.co.jp/H)に掲載しております。

参照

関連したドキュメント

AUTO : 出力先機器の EDID に従います。. DVI :

TC10NM仕様書 NS-9582 Rev.5 Page

Lane and Bands Table と同様に、Volume Table と Lane Statistics Table も Excel 形式や CSV

① 要求仕様固め 1)入出力:入力電圧範囲、出力電圧/精度 2)負荷:電流、過渡有無(スリープ/ウェイクアップ含む)

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

1号機 2号機 3号機 4号機 5号機

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL

理由:ボイラー MCR範囲内の 定格出力超過出 力は技術評価に て問題なしと確 認 済 み で あ る が、複数の火力