I2C液晶(ST7032i使用)プログラム解説マニュアル(R8C/38A版)

Similar documents
SPI接続超小型グラフィック液晶(ST7565R使用)プログラム解説マニュアル(R8C/38A版)

RY_R8C38ボード RY-WRITER基板 自動書き込み・実行解説マニュアル

R8C/38Aマイコン R8C/35Aマイコン 制御ライブラリ解説マニュアル

RS232-TTLレベル変換基板製作マニュアル

液晶・microSD基板(Ver.2)kit12_38aプログラム解説マニュアル データ解析(microSD)編 (R8C/38A版)

デュアルショック2制御基板 製作・プログラム解説マニュアル(R8C/38A版)

microSD基板 製作マニュアル

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

MB-LCD1 アセンブラ・ライブラリによる制御

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

HDLトレーナーサンプルプログラム説明書

1. LCD LS027B4DH01 について LS027B4DH01 は 400dot x 240dot のグラフィック LCD です 秋月電子通商で購入できます 外形サイズ : 62.8 x x 1.53mm LCD のフレキシブルケーブルの根元の部分はちょっと力を加えただけで表示が

R8C/M12Aマイコン実習マニュアル ブレッドボード版

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

PowerPoint Presentation

スライド 1

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

プログラミング実習I

ミニマイコンカー製作キットVer.2 C言語走行プログラム解説マニュアル

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

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

Microsoft Word - PIC-USBマイコンボード_v1-02@WEB公開用資料.docx

スライド 1

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

赤外線受光モジュール C言語リモコンプログラム解説マニュアル

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

パーツリスト 組み立て前にすべてのパーツがそろっているかご確認ください 種類 品番 数 種類 品番 数 基板 I2C LCD 1 コンデンサ 0.1uF (104) 積層セラミック 1 IC ATtiny コンデンサ 10uF 電解 1 半固定抵抗 10~50kΩ 1 コネクタ IC ソ

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

第11回高校生ものづくりコンテスト全国大会 電子回路組立部門 プログラム解説マニュアル

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

UMB-CP2114 User's Manual

プログラミング基礎

Arduinoで計る,測る,量る

ファイル入出力

EB-RL7023+SB/D2

スライド 1

ルネサス統合開発環境 操作マニュアル(R8C/38A版)

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

PowerPoint プレゼンテーション

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

スライド 1

AKI-PIC16F877A開発キット (Ver1

MAC アドレス変更ツール MAC アドレスチェンジャー ユーザーズマニュアル User's Manual エレコム株式会社

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

/* モジュールストップ解除 */ SYSTEM.MSTPCRA.BIT.MSTPA24 = 0; /* MSTPA24(S12ADA 制御部 ) クロック供給開始 */ SYSTEM.MSTPCRA.BIT.MSTPA17 = 0; /* MSTPA17(S12ADA0) クロック供給開始 */

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

データ解析実習マニュアル

WLAR-L11G-L/WLS-L11GS-L/WLS-L11GSU-L セットアップガイド

現行のICカードリーダRW4040インストーラの課題

Microsoft PowerPoint - RL78G14_動画マニュアル_タイマRD.ppt [互換モード]

スライド 1

Taro-ファイル処理(公開版).jtd

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

Flash Loader

Taro-82ADAカ.jtd

Notes and Points for TMPR454 Flash memory

Microsoft Word - PCMtoSPDIFmanual.doc

Studuino ライブラリ環境設定Windows編

目次 目次 ターミナルアダプタの接続イメージ INS 回線とターミナルアダプタの接続 ターミナルアダプタの設定とパソコン接続 ドライバのダウンロードとインストール ユーティリティインストールCD-ROMをお持ちでない場合.

初心者のための RL78 入門コース ( 第 3 回 : ポート出力例 2 とポート入力 ) 第 3 回の今回は, 前回作成したプログラムを RL78/G13 のハードウェアを用いて見直しをお こないます 今回の内容 8. コード生成を利用した実際のプログラム作成 ( その 2) P40 9. コー

PowerPoint Presentation

LANカード(PG-2871) 取扱説明書

2009年9月24日

My Cloud ホーム2.0 ユーザーズマニュアル

CS+ RL78コンパイラ CC-RL V リリースノート

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

2. 仕様 電源 :USB バスパワー (USB 入力の 5V 電源を使用します ) 出力 : 3.5mm ステレオジャック アナログステレオ出力 最大 20mArms 対応ヘッドホンインピーダンス 1Ω~500Ω RCA ピンジャック アナログ 2ch 出力 (L R) ラインレベル ヘッドホンア

1 1 Arduino とは Arduino アルドゥイーノ は ワンボードマイコンの一種で オープンソースハードウェアであ り 組み立て済みの基板を購入することもできるほか 誰でも自分の手で Arduino を組み立てる ことができます USBコネクタでPCと接続して利用します デジタルポートとア

memo

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

親指シフトキーボード(FMV-KB611)、JISキーボード(FMV-KB621)、FMV-LIFEBOOK(親指シフトキーボードモデル)をお使いになる方へ

スライド 1

第1回 プログラミング演習3 センサーアプリケーション

Transcription:

マイコンカーラリー応用キット I2C 液晶 (ST7032i 使用 ) プログラム解説マニュアル (R8C/38A 版 ) 本マニュアルで説明しているセット内容 本基板の対象マイコンボード 本基板の制作 ( 結線 ) についての説明 本基板のプログラムについての説明 ( 株 ) 秋月電子通商製の I2C 接続小型 LCD モジュールピッチ変換キット通販コード :K-06795 を制御します RY_R8C38 ボード 本マニュアルで解説 本マニュアルで解説 第 1.02 版 2015.04.20 株式会社日立ドキュメントソリューションズ

注意事項 (rev.6.0h) 著作権 本マニュアルに関する著作権は株式会社日立ドキュメントソリューションズに帰属します 本マニュアルは著作権法および 国際著作権条約により保護されています 禁止事項 ユーザーは以下の内容を行うことはできません 第三者に対して 本マニュアルを販売 販売を目的とした宣伝 使用 営業 複製などを行うこと 第三者に対して 本マニュアルの使用権を譲渡または再承諾すること 本マニュアルの一部または全部を改変 除去すること 本マニュアルを無許可で翻訳すること 本マニュアルの内容を使用しての 人命や人体に危害を及ぼす恐れのある用途での使用 転載 複製 本マニュアルの転載 複製については 文書による株式会社日立ドキュメントソリューションズの事前の承諾が必要です 責任の制限 本マニュアルに記載した情報は 正確を期すため 慎重に制作したものですが万一本マニュアルの記述誤りに起因する損害が生じた場合でも 株式会社日立ドキュメントソリューションズはその責任を負いません その他 本マニュアルに記載の情報は本マニュアル発行時点のものであり 株式会社日立ドキュメントソリューションズは 予告なしに 本マニュアルに記載した情報または仕様を変更することがあります 製作に当たりましては 最新の内容を確認いただきますようお願いします すべての商標および登録商標は それぞれの所有者に帰属します 連絡先 株式会社日立ドキュメントソリューションズ 135-0016 東京都江東区東陽六丁目 3 番 2 号イースト 21 タワー E-mail:himdx.m-carrally.dd@hitachi.com

目次 1. 概要... 1 1.1 購入先... 2 2. 仕様... 3 3. 回路図... 4 3.1 I2C 接続小型 LCD モジューピッチ変換キットにフラットケーブルを取り付ける... 4 3.2 マイコンボードと取り付ける... 5 4. プログラム... 6 4.1 ワークスペースのインストール... 6 4.2 プロジェクト... 8 4.3 lcd_st7032i_lib.c ファイル... 9 4.3.1 使用できる関数... 9 4.3.2 I2C 液晶と接続するポートの変更... 11 4.4 i2c_lcd_38a.c ファイル... 12 4.4.1 プログラム... 12 4.4.2 プログラムの解説... 14 5. 参考文献... 16 - I -

- II -

1. 概要 本マニュアルは ( 株 ) 秋月電子通商で販売されている I2C 接続小型 LCD モジュールピッチ変換キット ( 通販コード :K-06795) ( 以下 I2C 液晶 ) を RY_R8C38 ボード (R8C/38A マイコン ) で制御するための結線 プログラムについて解説しています I2C Inter-Integrated Circuit の略で I-squared-C( アイ スクエアド シー ) が正式な読みとされています 略して I 2 C と書きますが テキストエディタでは 上付文字の 2 は表記できないため I2C と表記されることもあります ( 出典 : ウィキペディア http://ja.wikipedia.org/wiki/i%c2%b2c ) 本マニュアルでは I2C と表記します 本基板の特徴を 下記に示します I2C 液晶との結線は +5V GND SDA SCL の各端子の 4 本のみです R8C/38A マイコンの I2C バスインタフェース 機能を使用することにより プログラムの負荷を減らして制御することができます ( ただしマイコンのポートと I2C 液晶との接続は P3_7 端子と SDA 端子 P3_5 端子と SCL 端子のみとなります ) 具体的には 割り込みプログラムで実行している lcdshowprocess 関数の処理時間が 液晶 microsd 基板の液晶より短くなります R8C/38A マイコンの P3_7 端子 P3_5 端子以外にも接続可能 ( ただし I2C バスインタフェースは使いません ) ただし プログラムの負荷が増えます 具体的には 割り込みプログラムで実行している lcdshowprocess 関数の処理時間が 液晶 microsd 基板の液晶より長くなります RY_R8C38 ボードに RY_R8C38 ボードコネクタ変換基板を取り付け I2C 液晶を接続 表示しているところ - 1 -

1.1 購入先 品名購入先写真 RY_R8C38 ボード ( 株 ) 日立ドキュメントソリューションズの販売サイト https://www2.himdx.net/mcr/ 型式 :M-S181 コネクタは各自で実装 写真は半田付け例 RY_R8C38 ボードコネクタ変換基板 無くても結線は可能です ( 株 ) 日立ドキュメントソリューションズの販売サイト https://www2.himdx.net/mcr/ 型式 :M-S185 本製品はキット 写真は完成例 I2C 接続小型 LCD モジュールピッチ変換キット ( 株 ) 秋月電子通商 http://akizukidenshi.com/catalog/g/gk-06795/ 型式 :K-06795 本製品はキット 写真は完成例 - 2 -

2. 仕様 I2C 液晶の使用を下記に示します 参考に 液晶 microsd 基板の液晶も掲載しておきます 液晶 I2C 液晶 秋月電子通商製 I2C 接続小型 LCD モジュール 8x2 行 液晶 microsd 基板 ( 参考 ) 秋月電子通商製 LCD キャラクタディスプレイモジュール (1 6 2 行バックライト無 ) 写真 ( 液晶を基板に半田付けした完成例 ) 秋月電子通商製の I2C 接続小型 LCD モジューピッチ変換キットに取り付けた例 日立ドキュメントソリューションズ製の液晶 microsd 基板に取り付けた例 マイコンとの接続線 2 本 (SDA 端子 SCL 端子 ) 7 本 (E 端子 WR 端子 RS 端子 D3 端 D2 端子 D1 端子 D0 端子 ) 液晶のサイズ ( 基板は含みません ) 30 19.5 厚さ約 1mm 85 30 厚さ 13mm 液晶の重さ ( 基板は含みません ) 約 1g 約 32g 表示数横 8 文字 縦 2 行横 16 文字 縦 2 行 濃さの調整 特徴 プログラムで設定 小さく軽いが 表示文字は 16 文字 (8 2) しかない 外付けで取り付ける 10kΩ のボリュームで調整 I2C 液晶よりは大きく重たいが 表示文字は 32 文字 (16 2) ある - 3 -

3. 回路図 3.1 I2C 接続小型 LCD モジューピッチ変換キットにフラットケーブルを取り付ける 変換キット付属の基板に I2C 液晶を半田付けします 基板の半田面にジャンパーが 2 箇所ありますので ショートさせます ( プルアップを ON にします ) 基板には 5 個のランドがありますので 回路図のようにフラットケーブルを取り付けます 1 番目と 2 番目のランドは ショートさせます 10 ピンメスコネクタ + フラットケーブルを取り付ける できる限り SCL 端子と SDA 端子の接続ポートは P3_5 と P3_7 にしてください プログラムの負荷を軽減することができます それ以外のポートにも接続可能ですが プログラムの変更が必要です プログラムの変更については 4.3.2 I2C 液晶と接続するポートの変更 を参照してください 1 5 結線例 - 4 -

3.2 マイコンボードと取り付ける 10 ピンメスコネクタをポート 3 に接続します RY_R8C38 ボードのポート 3 は 26 ピンコネクタで 10 ピンメスコネクタを接続することができません RY_R8C38 ボードコネクタ変換基板を使うと良いでしょう (26 ピンメスコネクタを用意して直接 接続しても問題ありません ) ポート 3 ポート 5 10 ピンメスコネクタ ポート 6 ポート 0 ポート 2 RY_R8C38 ボード RY_R8C38 ボードコネクタ変換基板 できる限り SCL 端子と SDA 端子の接続ポートは P3_5 と P3_7 にしてください プログラムの負荷を軽減することができます それ以外のポートにも接続可能ですが プログラムの変更が必要です プログラムの変更については 4.3.2 I2C 液晶と接続するポートの変更 を参照してください RY_R8C38 ボードに RY_R8C38 ボードコネクタ変換基板を取り付け I2C 液晶を接続 表示しているところ - 5 -

4. プログラム 4.1 ワークスペースのインストール 1 マイコンカーラリーホームページ http://www.mcr.gr.jp /index2.html にアクセスします 技術情報 ダウンロード をクリックします R8C/38A マイコン (RY_R8C38 ボード ) に関する資料 をクリックします 2 i2c_lcd_38a.exe をダウンロードします 3-6 -

圧縮解除をクリックします 4 フォルダは変更できません 変更した場合は ルネサス統合開発環境の設定を変更する場合がでてきます 解凍が終わったら 自動的に C ドライブ Workspace フォルダが開かれます 今回使用するのは i2c_lcd_38a です 5 閉じるをクリックして終了です 6 C ドライブ Workspace i2c_lcd_38a i2c_lcd_38a.hws をダブルクリックすると ルネサス統合開発環境が立ち上がります 7 i2c_lcd_38a.hws - 7 -

4.2 プロジェクト lcd_st7032i_lib.c を使うときは printf_lib.c ファイルも取り込んでおきます (printf 文を使わなくとも ) このファイルが無ければ ビルド時にエラーが発生します ワークスペース i2c_lcd_38a には 1 つのプロジェクトが登録されています プロジェクト名プログラム内容 i2c_lcd_38a startup.c i2c_lcd_38a.c lcd_st7032i_lib.c printf_lib.c 最初に実行されるプログラムです マイコン固有の設定などを行います 設定が終わると main 関数に移動します このプログラムを編集することはありません main 関数のあるプログラムです このプログラムを編集してください I2C 液晶を表示させるためのライブラリ ( よく使う関数を集めたファイル ) です このプログラムを編集することはありません (I2C 液晶の接続ポートを変更する場合は一部 編集します ) lcd_st7032i_lib.c を使うときは このファイルも取り込んでおきます このファイルが無ければ ビルド時にエラーが発生します このプログラムを編集することはありません - 8 -

4.3 lcd_st7032i_lib.c ファイル lcd_st7032i_lib.c は I2C 液晶に文字を表示する専用の関数が用意されているファイルです ( ライブラリファイルといいます ) lcd_st7032i_lib.c は C:\WorkSpace\i2c_lcd_38a\i2c_lcd_38a フォルダにあります 4.3.1 使用できる関数 initlcd 関数 書式 int initlcd( void ) 内容引数戻り値使用例 I2C 液晶を初期化します なし 0: 異常 1: 正常 asm(" fset I "); /* 全体の割り込み許可 */ initlcd(); /* i2c 液晶の初期化 */ initlcd 関数は 全体割り込み許可をした後に実行してください lcdprintf 関数 書式 int lcdprintf(char *format,...) 内容 引数 I2C 液晶に文字を表示します 書式は printf 関数と同じです 表示位置は前回表示された続きか lcdposition 関数で指定された位置です char *format 書式文字列... 可変個引数 戻り値正常時 : 出力した文字列異常時 : 負の数 lcdprintf( "01234567" ); lcdprintf( "89abcdef" ); 実行すると下図のようになります 使用例 0 1 2 3 4 5 6 7 列 行 0 1 0 1 2 3 4 5 6 7 8 9 a b c d e f - 9 -

lcdposition 関数 書式 void lcdposition(char x,char y) 内容 引数 戻り値 I2C 液晶に表示する位置を指定します char x 列 ( 0 ~ 7 ) char y 行 ( 0 ~ 1 ) なし lcdposition( 0, 0 ); /* 表示する位置を指定 */ lcdprintf( "I2C LCD." ); /* 表示する文字列 */ 実行すると下図のようになります 使用例 0 1 2 3 4 5 6 7 列 行 0 1 I 2 C L C D. lcdshowprocess 関数 書式 void lcdshowprocess( void ) 内容 引数 戻り値 I2C 液晶の表示制御を行います この関数は割り込み処理などで 1ms ごとに実行してください なし なし /* LCD 表示処理用関数 (1ms ごとに実行 ) */ lcdshowprocess(); 使用例 I2C 液晶の表示は 1 文字表示に最大で 10ms の時間がかかります ( データシート参照 ) 16 文字表示しようとすると 最大で 160ms かかってしまいます 1 回の表示に 160ms も時間を取られては 他の処理が何もできなくなり大問題です lcdshowprocess 関数は 1ms ごとに実行して 1ms ごとに少しずつ I2C 液晶表示処理をする関数です この関数は 1ms ごとに実行してください 今回は タイマ RB の 1ms ごとの割り込み関数内で実行します この関数の仕組み 本来は 1 文字分の表示データを I2C 液晶に送った後 10ms 待ってから次の表示データを送らなければいけません この関数は 1 文字分の表示データを I2C 液晶に送った後 すぐに関数を終了します 次にこの関数が実行されても まだ 1ms しか経っていないので何もせずに関数を終了させます 10 回目で 次の 1 文字分のデータを送り またすぐに関数を終了します これを繰り返します - 10 -

lcdcontrast 関数 書式 void lcdcontrast( int i ) 内容 引数 戻り値 I2C 液晶の表示の濃さを制御します 0~63 0 が薄く ( 何も表示されない ) 63 が濃く ( 真っ黒になる ) なります 最初は 30 くらいで表示させて 濃さを実際に確認して調整してください なし 使用例 lcdcontrast( 30 ); /* コントラスト ( 濃さ ) の設定 30 にする */ 4.3.2 I2C 液晶と接続するポートの変更 マイコンの P3_7 端子 P3_5 端子を使う場合 ( 推奨 ) マイコンの P3_7 端子と I2C 液晶の SDA 端子 マイコンの P3_5 端子と I2C 液晶の SCL 端子を接続する場合は 下記のように 21 行目の数字を 1 にします ( 初期設定値は 1 です ) その他の設定はありません 21 : #define I2C_SFR 1 /* 1: マイコンのSFR 使用 */ 22 : /* 0: 使用せずにポートで処理 */ マイコンの P3_7 端子 P3_5 端子を使わない場合 21 行を 0 にします また 35~38 行目の端子の設定を 接続する端子に合わせて設定します 今回は例として I2C 液晶の SDA 端子は P9_0 端子 SCL 端子は P9_1 端子に接続することとします I2C 液晶をポート 0 に接続することはできません (PD0 レジスタがプロテクトされているため ) 21 : #define I2C_SFR 0 /* 1: マイコンのSFR 使用 */ 22 : /* 0: 使用せずにポートで処理 */ 中略 34 : /* I2C_SFR = 0 のときのポート設定 ポート 0 は設定できません */ 35 : #define i2c_sda p9_0 /* 液晶の SDA 端子 */ 36 : #define i2c_sdaddr pd9_0 /* 液晶の SDA 端子の入出力設定レシ スタ */ 37 : #define i2c_scl p9_1 /* 液晶の SCL 端子 */ 38 : #define i2c_sclddr pd9_1 /* 液晶の SCL 端子の入出力設定レシ スタ */ - 11 -

4.4 i2c_lcd_38a.c ファイル 4.4.1 プログラム 1 : /****************************************************************************/ 2 : /* 対象マイコン R8C/38A */ 3 : /* ファイル内容 I2C 液晶 ( コントローラ :ST7032i) 制御プログラム */ 4 : /* バージョン Ver.1.00 */ 5 : /* Date 2014.01.03 */ 6 : /* Copyright ジャパンマイコンカーラリー実行委員会 */ 7 : /****************************************************************************/ 8 : 9 : /*======================================*/ 10 : /* インクルード */ 11 : /*======================================*/ 12 : #include <stdio.h> 13 : #include "sfr_r838a.h" /* R8C/38A SFRの定義ファイル */ 14 : #include "lcd_st7032i_lib.h" /* ST7032i(I2C) 液晶表示ライフ ラリ */ 15 : /* 注意 液晶を使うときは ルネサス統合開発環境の C source file 欄に 16 : printf_lib.c も追加してください 無い場合 ヒ ルト 時にエラーになります */ 17 : 18 : /*======================================*/ 19 : /* シンボル定義 */ 20 : /*======================================*/ 21 : 22 : /*======================================*/ 23 : /* プロトタイプ宣言 */ 24 : /*======================================*/ 25 : void init( void ); 26 : 27 : /*======================================*/ 28 : /* グローバル変数の宣言 */ 29 : /*======================================*/ 30 : unsigned long cnt1; /* 1msごとに +1 */ 31 : 32 : /************************************************************************/ 33 : /* メインプログラム */ 34 : /************************************************************************/ 35 : void main( void ) 36 : { 37 : /* マイコン機能の初期化 */ 38 : init(); /* 初期化 */ 39 : asm(" fset I "); /* 全体の割り込み許可 */ 40 : initlcd(); /* I2C 液晶初期化 */ 41 : 42 : lcdcontrast( 30 ); /* コントラスト ( 濃さ ) の設定 0~63*/ 43 : 44 : lcdposition( 0, 0 ); 45 : lcdprintf( "time = " ); 46 : while( 1 ) { 47 : lcdposition( 0, 1 ); 48 : lcdprintf( "%08ld", cnt1 ); 49 : 50 : p4_5 = (cnt1 / 500 ) & 0x1; /* マイコンボードのLEDを点滅 */ 51 : } 52 : } 53 : 54 : /************************************************************************/ 55 : /* R8C/38A スペシャルファンクションレジスタ (SFR) の初期化 */ 56 : /************************************************************************/ 57 : void init( void ) 58 : { 59 : int i; 60 : 61 : /* クロックをXINクロック (20MHz) に変更 */ 62 : prc0 = 1; /* プロテクト解除 */ 63 : cm13 = 1; /* P4_6,P4_7をXIN-XOUT 端子にする */ 64 : cm05 = 0; /* XINクロック発振 */ 65 : for(i=0; i<50; i++ ); /* 安定するまで少し待つ ( 約 10ms) */ 66 : ocd2 = 0; /* システムクロックをXINにする */ 67 : prc0 = 0; /* プロテクトON */ 68 : - 12 -

69 : /* ポートの入出力設定 */ 70 : prc2 = 1; /* PD0のプロテクト解除 */ 71 : pd0 = 0x00; /* 7-0: センサ基板 Ver.4.1 */ 72 : pd1 = 0xd0; /* 5:RXD0 4:TXD0 3-0:DIP SW */ 73 : p2 = 0xc0; 74 : pd2 = 0xfe; /* 7-0: モータドライブ基板 Ver.4 */ 75 : pd3 = 0xff; /* */ 76 : p4 = 0x20; /* P4_5のLED: 初期は点灯 */ 77 : pd4 = 0xb8; /* 7:XOUT 6:XIN 5:LED 2:VREF */ 78 : pd5 = 0x5f; /* 7-0:LCD/microSD 基板 */ 79 : pd6 = 0xef; /* 4-0:LCD/microSD 基板 */ 80 : pd7 = 0xff; /* */ 81 : pd8 = 0xff; /* */ 82 : pd9 = 0x3f; /* */ 83 : pur0 = 0x04; /* P1_3~P1_0のプルアップON */ 84 : 85 : /* タイマRBの設定 */ 86 : /* 割り込み周期 = 1 / 20[MHz] * (TRBPRE+1) * (TRBPR+1) 87 : = 1 / (20*10^6) * 200 * 100 88 : = 0.001[s] = 1[ms] 89 : */ 90 : trbmr = 0x00; /* 動作モード 分周比設定 */ 91 : trbpre = 200-1; /* プリスケーラレジスタ */ 92 : trbpr = 100-1; /* プライマリレジスタ */ 93 : trbic = 0x07; /* 割り込み優先レベル設定 */ 94 : trbcr = 0x01; /* カウント開始 */ 95 : } 96 : 97 : /************************************************************************/ 98 : /* タイマRB 割り込み処理 */ 99 : /************************************************************************/ 100 : #pragma interrupt inttrb(vect=24) 101 : void inttrb( void ) 102 : { 103 : cnt1++; 104 : 105 : /* LCD 表示処理用関数 (1msごとに実行) */ 106 : lcdshowprocess(); 107 : } 108 : 109 : /************************************************************************/ 110 : /* end of file */ 111 : /************************************************************************/ I2C 液晶が繋がっている端子は 入力でも出力でも どちらでも構いません (init Lcd 関数で設定するため ) - 13 -

4.4.2 プログラムの解説 (1) ヘッダファイルのインクルード 9 : /*======================================*/ 10 : /* インクルード */ 11 : /*======================================*/ 12 : #include <stdio.h> 13 : #include "sfr_r838a.h" /* R8C/38A SFRの定義ファイル */ 14 : #include "lcd_st7032i_lib.h" /* ST7032i(I2C) 液晶表示ライフ ラリ */ 14 行 I2C 液晶制御ライブラリのヘッダファイルをインクルードします これで lcd_st7032i_lib.c 内の関数を使うことができます (2) I2C 液晶の初期化 コントラストの設定 32 : /************************************************************************/ 33 : /* メインプログラム */ 34 : /************************************************************************/ 35 : void main( void ) 36 : { 37 : /* マイコン機能の初期化 */ 38 : init(); /* 初期化 */ 39 : asm(" fset I "); /* 全体の割り込み許可 */ 40 : initlcd(); /* I2C 液晶初期化 */ 41 : 42 : lcdcontrast( 30 ); /* コントラスト ( 濃さ ) の設定 0~63*/ 40 行 42 行 I2C 液晶の初期化をします initlcd 関数は 全体の割り込みが許可された状態 ( asm(" fset I ") 以降 ) で実行してください I2C 液晶のコントラスト ( 表示の濃さ ) の調整をします 値は 0~63 を設定します 0 が薄く ( 何も表示されない ) 63 が濃く ( 真っ黒になる ) なります 最初は 30 くらいで表示させて 濃さを実際に確認して調整してください (3) I2C 液晶に表示する 44 : lcdposition( 0, 0 ); 液晶の0 列目 0 行目にセット 45 : lcdprintf( "time = " ); 46 : while( 1 ) { 47 : lcdposition( 0, 1 ); 液晶の0 列目 1 行目にセット 48 : lcdprintf( "%08ld", cnt1 ); アルファベットは エル ディー です 49 : 50 : p4_5 = (cnt1 / 500 ) & 0x1; /* マイコンボードのLEDを点滅 */ 51 : } - 14 -

44 行 I2C 液晶の表示位置を 0 列目 ( 文字目 ) の 0 行目に設定します 45 行 I2C 液晶に time = をの 7 文字を表示させます ( スペース含む ) 47 行 I2C 液晶の表示位置を 0 列目 ( 文字目 ) の 1 行目に設定します 48 行 I2C 液晶に cnt1 変数の値を表示させます 関数の引数部分は " %08ld", cnt1 となっています %08ld( 出力変換指定子 ) の % の後は 0 空白桁を 0 で埋めます 8 幅を指定します 8 桁です l 引数を long 型のサイズとして扱います d 10 進数に変換して表示します 結果 cnt1 の値を 8 桁で空白桁は 0 で埋めて 10 進数に変換します 例えば cnt1 に 12345 が代入されているとすると I2C 液晶には次のように表示されます 0 1 2 3 4 5 6 7 列 行 0 1 t i m e = 0 0 0 1 2 3 4 5 50 行 I2C 液晶とは関係ないですが マイコンが動作していると分かるように マイコンボード上の LED を 500ms ごとに点灯 消灯させています (4) I2C 液晶表示処理関数 97 : /************************************************************************/ 98 : /* タイマRB 割り込み処理 */ 99 : /************************************************************************/ 100 : #pragma interrupt inttrb(vect=24) 101 : void inttrb( void ) 102 : { 103 : cnt1++; 104 : 105 : /* LCD 表示処理用関数 (1msごとに実行) */ 106 : lcdshowprocess(); 107 : } 106 行 lcdposition 関数や lcdprintf 関数は 表示をする準備をしているだけです 実際に表示させているのが lcdshowprocess 関数です 1ms ごとにこの関数を実行します 今回は タイマ RB 割り込み関数が 1ms ごとに実行されているので この関数内に lcdshowprocess 関数を記述しています - 15 -

5. 参考文献 ルネサスエレクトロニクス ( 株 ) R8C/38C グループユーザーズマニュアルハードウェア編 Rev.1.10 ルネサスエレクトロニクス ( 株 ) M16C シリーズ,R8C ファミリ用 C/C++ コンパイラパッケージ V.6.00 C/C++ コンパイラユーザーズマニュアル Rev.1.00 ルネサスエレクトロニクス ( 株 ) High-performance Embedded Workshop V.4.09 ユーザーズマニュアル Rev.1.00 ルネサス半導体トレーニングセンター C 言語入門コーステキスト第 1 版 電波新聞社マイコン入門講座大須賀威彦著第 1 版 ソフトバンク ( 株 ) 新 C 言語入門シニア編林晴比古著初版 共立出版 ( 株 ) プログラマのための ANSI C 全書 L.Ammeraal 著吉田敬一 竹内淑子 吉田恵美子訳初版 マイコンカーラリー 販売部品についての詳しい情報は マイコンカーラリー販売サイトをご覧ください https://www2.himdx.net/mcr/ R8C マイコンについての詳しい情報は ルネサスエレクトロニクスのホームページをご覧ください http://japan.renesas.com/ の 製品情報 欄 マイコン R8C でご覧頂けます - 16 -