LCD表示用関数
LCD表示用関数
LCD表示用関数
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)