表 示 制 御 16 文 字 2 行 の 表 示 が 可 能 ですが, 内 部 アドレスと LCD 画 面 とは 連 続 したアドレスに 配 置 されていませ ん. +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0A +0B +0C +0D +0E +0F +40



Similar documents
3. スイッチ設定 ( 表 3) モジュール SW4 SW5 C1 OFF 下 (GND) C2 OFF 下 (GND) C3 OFF 下 (GND) C4 OFF 下 (GND) C5 OFF 上 (R/-W) C6 ON 下 (GND) 使用するモジュールに応じて, スイッチを切り換えて下さい.

HTG-35U ブルーバック表示の手順書 (2014年12月改定)

1

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

1.2. ご 利 用 環 境 推 奨 ブラウザ Internet Explorer Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

<4D F736F F D CB4907D817A936497CD8AC7979D835C E64976C8F915F E646F63>

●70974_100_AC009160_KAPヘ<3099>ーシス自動車約款(11.10).indb

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

DN6(R04).vin

文科省様式3-2集計オプションマニュアル

あいち電子調達共同システム

名刺作成講習

R4財務対応障害一覧

賞 状 を 作 ってみよう 1- 賞 状 フォルダを 使 用 賞 状 のテンプレートから ワードで 賞 状 の 文 章 を 作 成 します あらかじめ EXCEL で 作 成 した 受 賞 者 の 名 簿 から 学 年 クラス 名 前 を 入 れて 印 刷 します 1Excel の 賞 状 名 簿.

目 次 1.はじめに 1-1. はじめに 2. 操 作 2-1. 概 要 2-2. 操 作 方 法 ( 調 査 依 頼 の 確 認 ) 2-3. 操 作 方 法 ( 回 答 登 録 ) 2-4. 操 作 方 法 (ワークシート 出 力 ) 2-5. 操 作 方 法 (ワークシート 取 込 ) 3.

PowerPoint プレゼンテーション

購買ポータルサイトyOASIS簡易説明書 b

目 次 1 インストール 手 順 プログラム データファイルのインストール Microsoft Access2013Runtime SP1(32bit) 版 のインストール 基 本 操 作 ログイン メニュー...

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  



1 はじめに 1.1 アドインの 機 能 このツールは Microsoft Excel 用 のアドインです 本 アドインには 下 記 の 機 能 があります スペルと 文 章 のチェック 機 能 Microsoft Word の スペルチェックと 文 章 校 正 の 機 能 を 使 用 して Exc

PowerPoint-Präsentation

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

スライド 1

新 生産管理システム ご提案書 2002年10月15日 ムラテック情報システム株式会社

Microsoft PowerPoint - webサイト更新マニュアル ppt [互換モード]

<はじめに> この 手 順 書 では 社 労 夢 を 用 いてe-Govの 社 会 保 険 様 式 記 入 方 式 の 一 括 申 請 の 手 順 について 説 明 させていただきます ⅰ 氏 名 変 更 届 2ページから ⅱ-1 被 扶 養 者 ( 異 動 ) 届 3ページから ⅱ-2 3 第 号

(Microsoft Word - \203G\203N\203V\201[\203h.docx)

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

の と す る (1) 防 犯 カ メ ラ を 購 入 し 設 置 ( 新 設 又 は 増 設 に 限 る ) す る こ と (2) 設 置 す る 防 犯 カ メ ラ は 新 設 又 は 既 設 の 録 画 機 と 接 続 す る こ と た だ し 録 画 機 能 付 防 犯 カ メ ラ は

ファイルサーバー(NFS) 構築ガイド

MapDK3のインストール

Word 003 スキルブック 06 - オブジェクトの 利 用 0.Word で 作 る 表 : 行 幅 を 最 小 値 より 小 さく 設 定 する 3 表 の 左 右 のサイズを 適 宜 調 整 します Word で 表 を 作 成 するとき, 列 幅, 行 幅 ともに 基 本 的 に 自 由

やさしく名刺ファイリング v.3.0 操作マニュアル

01_07_01 データのインポート_エクスポート_1

file:///L|/kajo/_RESOURCE/index.html

HDC-EDI BaseのAny変換における閏年の取り扱いに関する重要なお知らせ

XML形式の電子報告書作成に当たっての留意事項

Microsoft Word - tutorial7-language.docx

<4D F736F F D B68F918DEC90AC89898F4B899E977095D2816A2E646F63>

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

Transcription:

LCD(SC1602)4ビットモード 接 続 Sunlike 社 製 SC1602を 制 御 してみます. 今 回 は 結 線 数 を 節 約 して,マイコンとは6 本 のポートを 使 って 接 続 します. 接 続 の 概 要 LCDを4ビットモードで 制 御 LCDとマイコンの 接 続 は6 本 DB4~DB7:4ビットモードデータバス RS :レジスタセレクト (コマンド/データ) E :イネーブル 信 号 LCDのR/W 信 号 はW 固 定 常 時 ライトイネーブルでLCDへの 書 き 込 みのみ を 実 行 します.LCDのデータ/ステータスを 読 み 出 すことはできません. 制 御 概 要 表 示 用 RAMエリアを32 文 字 分 確 保 メイン 側 はテキストコードをRAMにセットする のみとし,LCDへの 転 送 はLCD 制 御 メインで ある l_main()に 任 せます. LCDへの 転 送 処 理 はメインルーチン 実 行 周 期 ( 1ms)に 対 し,1バイト 分 の 処 理 だけを 実 行 し ます.したがって, 画 面 全 体 を 書 き 換 える 時 間 は 32ms 必 要 となります( 詳 細 は 後 述 ). 使 用 ポート P1_3 -STB MJU3711 -STB P4_5 CLK MJU3711 CLK P1_7 DATA MJU3711 DATA 図 1.SC1602 接 続 回 路 図 ワークスペース LCD1602_シリアル 接 続 lcd1602_s_0

表 示 制 御 16 文 字 2 行 の 表 示 が 可 能 ですが, 内 部 アドレスと LCD 画 面 とは 連 続 したアドレスに 配 置 されていませ ん. +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0A +0B +0C +0D +0E +0F +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +4A +4B +4C +4D +4E +4F 1+00h +0Fhまでの16 文 字 はオートインク リメントで 連 続 して 書 き 込 みが 可 能 です. 表 示 用 RAM アドレスは 継 続 してインクリメント +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0A +0B +0C +0D +0E +0F +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +4A +4B +4C +4D +4E +4F 2 DDRAM アドレスを+40hに 変 更 MSB LSB 1 1 0 0 0 0 0 0 40h +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0A +0B +0C +0D +0E +0F +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +4A +4B +4C +4D +4E +4F 3+40h +4Fhまでの16 文 字 はオートインク リメントで 連 続 して 書 き 込 みが 可 能 です. +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0A +0B +0C +0D +0E +0F +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +4A +4B +4C +4D +4E +4F 4 DDRAM アドレスを+00hに 変 更 表 示 用 RAM ポインタは1 行 目 先 頭 に 補 正 が 必 要 です. MSB LSB 1 0 0 0 0 0 0 0 00h オートインクリメントについて +0Fhのあと,データを 書 き 込 むとLCD 内 部 の DDRAM アドレスは+10h +11h と 変 化 しているようです.そして+28hに 到 達 した 時 点 で 自 動 的 に+40h(2 行 目 先 頭 )に 補 正 されます. したがって,1 行 終 了 時 に DDRAM アドレスを 変 更 す る 必 要 があります. // LCD 変 数 定 義 unsigned char zlpdisp; unsigned char zlbdisp[32]; // 表 示 ポインタ (0 ~ 31,0x80,0xc0) // 表 示 バッファ

; リスト1 初 期 化 // LCD 初 期 化 データ typedef struct wait_cmd // ***** 構 造 体 定 義 ***** unsigned int wait; 時 間 ( 約 1.1us 単 位 ) unsigned char cmd; // コマンド WAIT_CMD; // ***** ウェイト 時 間,コマンド 構 造 体 テーブル ***** const WAIT_CMD LCD_INI[8] = // wait, cmd 実 測 で 微 調 整 65040,0x30, // 65000us, 00110000b 8bit 4100,0x30, // 4100us, 00110000b 8bit 100,0x30, // 100us, 00110000b 8bit 40,0x28, // 40us, 00111000b 4bit,2-lines 40,0x08, // 40us, 00001000b Display Off 40,0x01, // 40us, 00000001b Clear Display 1640,0x06, // 1640us, 00000110b Entry Mode Set 40,0x0c, // 40us, 00001100b Display On ; // LCD_ON 信 号 で 制 御 時 は 15ms 65ms にすること // 理 由 :マイコンの 方 が 先 に 起 動 するため // LCDは 4.5V になってから 起 動 する // ***** 初 期 画 面 データ ***** const char Q_G0[33] = "R8C/M120ANDD ROM32KB RAM1280 "; // LCD 初 期 化 void l_ini() unsigned char i; for (i = 0; i < 32; i++) // ***** 初 期 画 面 データ 転 送 *****; zlbdisp[i] = Q_G0[i]; for (i = 0; i < 4; i++) // ***** 初 期 設 定 コマンド ***** l_wait(lcd_ini[i].wait); l_outu(lcd_ini[i].cmd); // コマンド 出 力 ( 上 位 4ビットのみ ) for ( ; i < 8; i++) l_wait(lcd_ini[i].wait); l_out(lcd_ini[i].cmd); // コマンド 出 力 ( 8ビット:4ビット 2 回 ) zlpdisp = 0x00; // 表 示 ポインタ 初 期 化 続 く

// LCD 制 御 メイン void l_main() if (zlpdisp >= 0x80) // ***** コマンド 出 力 ***** l_out(zlpdisp); // 8ビット 出 力 zlpdisp &= 0x7f; // MSB=0(CMD 終 了 ) zlpdisp = zlpdisp >> 2; // (80h 時 は ポインタ 00h に 補 正 ) // (c0h 時 は ポインタ 10h に 補 正 ) else // ***** データ 出 力 ***** P_LCDRS = 1; // RS=1(DATA) l_out(zlbdisp[zlpdisp]); // 8ビット 出 力 zlpdisp++; // 表 示 ポインタ +1 if ((zlpdisp & 0x0f) == 0) // 1 行 分 の 出 力 終 了 なら zlpdisp = zlpdisp << 2; // (10h 時 は コマンド c0h に 補 正 ) zlpdisp = 0x80; // (20h 時 は コマンド 80h に 補 正 ) void l_wait(unsigned int cnt) for ( ; cnt > 0; cnt--); // 1ループ= 約 1.1μs( 実 測 ) // コマンド 出 力 void l_outc(unsigned char data) unsigned wk = data >> 2; // ワ-ク l_out6(wk); // 上 位 4ビット 出 力 RS=0(CMD) E=0 l_out6(wk 0x40); E=1 l_out6(wk); E=0 wk = (data << 2) & 0x3c; // 下 位 4ビット 出 力 l_out6(wk 0x40); E=1 l_out6(wk); E=0 // データ 出 力 void l_outd(unsigned char data) unsigned wk = (data >> 2) 0x80; // ワ-ク l_out6(wk); // 上 位 4ビット 出 力 RS=1(DATA) E=0 l_out6(wk 0x40); // RS=1(DATA) E=1 l_out6(wk); // RS=1(DATA) E=0 wk = (data << 2) & 0x3c 0x80; // 下 位 4ビット 出 力 l_out6(wk 0x40); // RS=1(DATA) E=1 l_out6(wk); // RS=1(DATA) E=0 続 く

// 6ビット 出 力 void l_out6(unsigned char data) unsigned char i; unsigned char wk; // ワーク for (i = 0; i < 6; i++) P_LCDD = (data & 0x80) == 0x80? 1: 0;// MSB セット P_LCDC = 1; // CLK=1 P_LCDC = 0; // CLK=0 data = data << 1; // 左 シフト P_LCDS = 0; // -STB=0 P_LCDS = 1; // -STB=1 動 作 確 認 MFを 利 用 して 任 意 の 文 字 列 を 表 示 してみましょう. 表 示 バッファアドレスは,0x040c からの 32byte です. MFのコマンド 入 力 で, 操 作 します. W40C:ABCDEFGHIJKLMNOP + 今 回 クリック 表 示 されたでしょうか. 入 力 コマンド 中 の : は,Ascii 文 字 列 であること を 指 定 しています.

CGRAMの 利 用 LCD1602にはユーザーキャラクタを8 個 まで 登 録 して 表 示 することが 可 能 です. lcd1602_4p_0 に 対 して, 下 記 の 変 更 を 行 います. CGRAM 用 キャラクタデータを 用 意 する l_ini() にて CGRAM 設 定 を 追 加 キャラクタコードは,0x00~0x0f までが 使 用 可 能 で すが,0x00~0x07 と 0x08~0x0f は 同 じ 扱 いになり ます. ワークスペース LCD1602_4ビット 接 続 lcd1602_4p_1 // 変 更 点 抜 粋 // CGRAM 用 キャラクタデータ const unsigned char Q_CG[8][8] = // code 0x04,0x0e,0x1f,0x04,0x04,0x04,0x04,0x00, // 00 : 0x04,0x04,0x04,0x04,0x1f,0x0e,0x04,0x00, // 01 : 0x00,0x04,0x0c,0x1f,0x0c,0x04,0x00,0x00, // 02 : 0x00,0x04,0x06,0x1f,0x06,0x04,0x00,0x00, // 03 : 0x00,0x04,0x0e,0x1f,0x00,0x00,0x00,0x00, // 04 : 0x00,0x1f,0x0e,0x04,0x00,0x00,0x00,0x00, // 05 : 0x1f,0x11,0x11,0x11,0x11,0x11,0x1f,0x00, // 06 : 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f // 07 : _ ; // LCD 初 期 化 void l_ini() unsigned char i; for (i = 0; i < 32; i++) // ***** 初 期 画 面 データ 転 送 *****; zlbdisp[i] = Q_G0[i]; for (i = 0; i < 4; i++) // ***** 初 期 設 定 コマンド ***** l_wait(lcd_ini[i].wait); l_outu(lcd_ini[i].cmd); // コマンド 出 力 ( 上 位 4ビットのみ ) for ( ; i < 8; i++) l_wait(lcd_ini[i].wait); l_out(lcd_ini[i].cmd); // コマンド 出 力 ( 8ビット:4ビット 2 回 ) // ***** CGRAM 設 定 ***** l_cgini(); // CGRAM 設 定 l_out(0x80); // DDRAMアドレス 先 頭 セット P_LCDRS = 1; // RS=1(DATA) zlpdisp = 0x00; // 表 示 ポインタ 初 期 化 続 く

// CGRAM 設 定 void l_cgini() unsigned char i, j; l_out(0x40); // CGRAMアドレス 先 頭 セット P_LCDRS = 1; for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) l_out(q_cg[i][j]); // RS=1(DATA) // CGRAMデータ 出 力 さらに, 複 数 文 字 の 点 滅 機 能 を 追 加 変 更 点 は, l_ini() にブリンクタイマ 初 期 値 セット 追 加 l_main() で 表 示 データ 出 力 時 に,blink 処 理 挿 入 ブリンク 処 理 用 変 数 追 加 ワークスペース LCD1602_4ビット 接 続 lcd1602_4p_2 ブリンク 処 理 データ 出 力 時 に,データを 横 取 りして,ブリンク ならば,ブリンクキャラクタを 表 示 します. ブリンクタイミングと 非 ブリンクタイミングにて 処 理 が 分 かれます. ブリンクコードは1 種 類 しか 指 定 できません. ブリンクのOn/Off 時 間 は 設 定 変 更 可 能 です. 動 作 確 認 ブリンク 位 置 の 指 定 :0x434~( 最 大 8カ 所 ) ブリンク 数 :0x443 ブリンクコード :0x444 MFを 使 って,いろいろ 確 かめて 下 さい. < 例 > 2 行 目 先 頭 から で3 文 字 を 点 滅 してみます. 0x434~ : 0x10,0x11,0x12 ----- 位 置 指 定 0x443 : 0x03----------------3カ 所 0x444 : 0x04 --------------- // LCD 変 数 定 義 unsigned char zlpdisp; // 表 示 ポインタ (0 ~ 31,0x80,0xc0) unsigned char zlbdisp[32]; // 表 示 バッファ unsigned int zlbtma; // Onタイマ 値 unsigned int zlbtmb; // Offタイマ 値 unsigned int zlctma; // Onタイマカウンタ unsigned int zlctmb; // Offタイマカウンタ unsigned char zlcblnk; // ブリンク 数 unsigned char zlbbldt; // ブリンクコード unsigned char zlbblnk[8]; // ブリンク 位 置 (8カ 所 )

// LCD 制 御 メイン void l_main() if (zlpdisp >= 0x80) // ***** コマンド 出 力 ***** l_out(zlpdisp); // 8ビット 出 力 zlpdisp &= 0x7f; // MSB=0(CMD 終 了 ) zlpdisp = zlpdisp >> 2; // (80h 時 は ポインタ 00h に 補 正 ) // (c0h 時 は ポインタ 10h に 補 正 ) else // ***** データ 出 力 ***** P_LCDRS = 1; // RS=1(DATA) l_out(l_blnk(zlbdisp[zlpdisp); // 8ビット 出 力 zlpdisp++; // 表 示 ポインタ +1 if ((zlpdisp & 0x0f) == 0) // 1 行 分 の 出 力 終 了 なら zlpdisp = zlpdisp << 2; // (10h 時 は コマンド c0h に 補 正 ) zlpdisp = 0x80; // (20h 時 は コマンド 80h に 補 正 ) // ブリンク 処 理 unsigned char l_blnk(unsigned char data) unsigned char i; if ((zlctma!= 0000) && (zlctma!= 0xffff)) zlctma--; // On タイムアップでなければ-1 if ((zlctmb!= 0000) && (zlctmb!= 0xffff)) zlctmb--; // Offタイムアップでなければ-1 if (zlcblnk!= 00) // ブリンク 有 り? for (i = 0; i < zlcblnk; i++) // 検 索 if (zlpdisp == zlbblnk[i]) // 現 在 表 示 位 置 =ブリンク 位 置? if (zlctma == 0000) // Onタイムアップなら zlctma = 0xffff; // Onタイマ 停 止 zlctmb = zlbtmb; // Offタイマスタート break; // 本 来 のデータ 表 示 if (zlctma!= 0xffff) return zlbbldt; // カウント 中 ならブリンクコード 表 示 if (zlctmb == 0000) // Offタイムアップなら zlctmb = 0xffff; // Offタイマ 停 止 zlctma = zlbtma; // Onタイマスタート return zlbbldt; // ブリンクコード 表 示 break; return data; // 本 来 のデータ 表 示