18.04.2014 Views

LCD表示用関数

LCD表示用関数

LCD表示用関数

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

***********************************************<br />

LCD 表 示 関 数 :I2Cインターフェースを 呼 出 し 使 用<br />

By nobcha (c)2011<br />

revised for MSSP MASTER mode 09/29/2011 lcd_i2c_mssp<br />

STRAWBERRY LINUX 社 LCD アドレス 0x7c<br />

AN001とかST7032iのデータシート 参 照<br />

パラレル4ビット 接 続 のときの 関 数 に 合 わせる<br />

lcd_init(void) 初 期 化<br />

lcd_cmd(command)----- コマンド 出 力<br />

lcd_data(byte) 1 文 字 * lcd_str(string)----- 文 字 列 表 示<br />

lcd_clear(void)----- LCD 画 面 全 消 去 **********************************************/ #define_LEGACY_HEADERS<br />

#include"mssp_i2c.h"<br />

コントラスト 調 整 用 定 数 電 圧 依 存 *************************************/<br />

0x20 5.0V // 0x2F 3.3V #define CONTRAST 0x3F // for 2.6V /************************************<br />

* 記 号 アイコン 表 示 定 義 /*********************************<br />

unsigned char ICON[14][2]={ {0x00, アンテナ {0x02, 話 {0x04, 無 線 {0x06, ジャック *********************************/<br />

△<br />

0x08}, ▽ {0x07, 0x18}, △▽ {0x09, 鍵 {0x0B, 0x10}, ピン<br />

0x02}, 電 池 無 し<br />

0x12}, 少<br />

0x1A}, 中 {0x0D, 0x1E}, // 容 量 多<br />

0x10} // 丸 }; /******************************** LCDへ 表 示 データ1 文 字 出 力 *******************************/ {0x0F,<br />

lcd_data(unsigned char data){ i2c_writeto(LCD_AD); i2c_putbyte(0x40); i2c_putbyte(data); void<br />

i2c_stop();<br />

LCDアドレスをOPEN<br />

CO:0(STOP),RS:1 データなので<br />

表 示 バイトを 送 る<br />

stop コンディション //<br />

LCDアドレスをOPEN //<br />

/******************************** 液 晶 へ1コマンド 出 力 *******************************/ void lcd_cmd(unsigned char cmd){ }<br />

i2c_putbyte(0x00);<br />

CO:0(STOP),RS:0 コマンドです i2c_putbyte(cmd);<br />

コマンドバイトを 送 る i2c_writeto(LCD_AD);<br />

stop if((cmd == 0x01)||(cmd == 0x02)) // ClearかHomeかで 待 ち 時 間 調 整 i2c_stop();<br />

// Clearなら 応 答 時 間 は2msec 待 ち ページ(1) __delay_ms(2);


else __delay_us(40); // それ 以 外 コマンドなら50μsec 待 ち<br />

/******************************* lcd_i2c_mssp<br />

液 晶 画 面 出 力 カーソル 位 置 指 定 *******************************/ void lcd_goto(unsigned char cursor){ カーソルアドレスは00~0F,40~4F lcd_cmd(0x80 | cursor ); // DRAMアドレス 設 定 #7:1にして7ビット }<br />

* LCD 初 期 化 処 理 *******************************/ /*******************************<br />

lcd_init(void) {<br />

ST7032iマニュアル 掲 載 お 約 束 __delay_ms(100);<br />

100mS delay 電 源 安 定 まで 待 つ lcd_cmd(0x38);<br />

Normal mode lcd_cmd(0x39);<br />

8bit 2line IS mode lcd_cmd(0x14); OSC 183Hz BIAS 1/5 lcd_cmd(0x70 & 0x0F)); コントラスト 設 定 void<br />

+ (CONTRAST >> 4)); lcd_cmd(0x6A);<br />

Follower 5.0Vの // lcd_cmd(0x6B); Ffollwer for 3.3Vの 場 合<br />

400mS 待 ち<br />

lcd_cmd(0x5C<br />

lcd_cmd(0x38);<br />

Set back to Normal mode lcd_cmd(0x0C); // Display On __delay_ms(100);<br />

/******************************<br />

LCD 画 面 全 消 去 ******************************/ lcd_cmd(0x01);<br />

lcd_clear(void) { lcd_cmd(0x01); } /******************************* 文 字 列 出 力 void<br />

void lcd_str(char* ptr) { while(*ptr != 0){ ******************************/<br />

Clear Display //<br />

初 期 化 コマンド0x01 出 力 //<br />

0x00があるまで 文 字 取 り 出 し //<br />

} // 文 字 表 示 して、 次 の 文 字 へ } /******************************* オプションアイコン 表 示 ******************************/ lcd_data(*ptr++);<br />

lcd_icon(unsigned char num, unsigned char onoff){ char cmd; lcd_cmd(0x39);<br />

Extend modeにします cmd=0x40 | (ICON[num][0]); 表 示 のお 約 束 lcd_cmd(cmd);<br />

アイコンアドレス 指 定 if(onoff){ void<br />

(ICON[num][1]); lcd_data(cmd); // アイコンオンデータ } cmd=<br />

}<br />

消 す 時 は0x00かく lcd_data(0x00); アイコンオフデータ lcd_cmd(0x38); // Normal Mode else<br />

ページ(2)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!