//********************************************************************** /*   <3線式LCD制御ライブラリ(mikroCコンパチブル)>  ※拡張ポート用のICには、NJU3711を使用します。 */ //********************************************************************** //■■■インクルード■■■ #include "lcd_lib_4bit_nju3711.h" #include "ex_port_lib_nju3711.h" //********************************************************************** //■■■LCD文字出力(カレントカーソル位置)関数■■■ void Lcd3_Chr_Cp(char out_char) { ex_port_out_bit(LCD_D7, out_char.B7); ex_port_out_bit(LCD_D6, out_char.B6); ex_port_out_bit(LCD_D5, out_char.B5); ex_port_out_bit(LCD_D4, out_char.B4); ex_port_out_bit(LCD_RS, 1); ex_port_out_bit(LCD_EN, 1); asm nop; ex_port_out_bit(LCD_EN, 0); // ex_port_out_bit(LCD_D7, out_char.B3); ex_port_out_bit(LCD_D6, out_char.B2); ex_port_out_bit(LCD_D5, out_char.B1); ex_port_out_bit(LCD_D4, out_char.B0); ex_port_out_bit(LCD_RS, 1); ex_port_out_bit(LCD_EN, 1); asm nop; ex_port_out_bit(LCD_EN, 0); // Delay_us(100); } //********************************************************************** //■■■LCD文字出力(行列指定)関数■■■ void Lcd3_Chr(char row, char column, char out_char) { Lcd3_Cmd_8bit(0x80 + (column - 1) + ((row - 1) * 0x40)); Lcd3_Chr_Cp(out_char); } //********************************************************************** //■■■LCD文字列出力(カレントカーソル位置)関数■■■ void Lcd3_Out_Cp(char *text) { while (*text != 0x00) { Lcd3_Chr_Cp(*text); text++; } } //********************************************************************** //■■■LCD文字列出力(行列指定)関数■■■ void Lcd3_Out(char row, char column, char *text) { Lcd3_Cmd_8bit(0x80 + (column - 1) + ((row - 1) * 0x40)); Lcd3_Out_Cp(text); } //********************************************************************** //■■■LCDコマンド出力関数■■■ void Lcd3_Cmd(char cmd) { Lcd3_Cmd_8bit(cmd); Delay_ms(10); } //********************************************************************** //■■■LCD初期化関数■■■ void Lcd3_Init() { ex_port_init(); ex_port_out_bit(LCD_RS, 0); ex_port_out_bit(LCD_EN, 0); Delay_ms(20); Lcd3_Cmd_4bit(0b00110000); //ファンクションセット(8bitモード) Delay_ms(10); Lcd3_Cmd_4bit(0b00110000); //ファンクションセット(8bitモード) Delay_ms(10); Lcd3_Cmd_4bit(0b00110000); //ファンクションセット(8bitモード) Delay_ms(10); Lcd3_Cmd_4bit(0b00100000); //ファンクションセット(4bitモード) Delay_ms(10); Lcd3_Cmd_8bit(0b00101000); //ファンクションセット(4bitモード,1/16デューティ,5×7ドット) Delay_ms(10); Lcd3_Cmd_8bit(0b00001000); //表示オフ Delay_ms(10); Lcd3_Cmd_8bit(0b00000001); //表示クリア Delay_ms(10); Lcd3_Cmd_8bit(0b00000110); //エントリーモードセット Delay_ms(10); } //********************************************************************** //■■■LCD初期化用コマンド出力(4bit)関数■■■ void Lcd3_Cmd_4bit(char cmd) { ex_port_out_bit(LCD_D7, cmd.B7); ex_port_out_bit(LCD_D6, cmd.B6); ex_port_out_bit(LCD_D5, cmd.B5); ex_port_out_bit(LCD_D4, cmd.B4); ex_port_out_bit(LCD_RS, 0); ex_port_out_bit(LCD_EN, 1); asm nop; ex_port_out_bit(LCD_EN, 0); // Delay_us(100); } //********************************************************************** //■■■LCD初期化用コマンド出力(8bit)関数■■■ void Lcd3_Cmd_8bit(char cmd) { ex_port_out_bit(LCD_D7, cmd.B7); ex_port_out_bit(LCD_D6, cmd.B6); ex_port_out_bit(LCD_D5, cmd.B5); ex_port_out_bit(LCD_D4, cmd.B4); ex_port_out_bit(LCD_RS, 0); ex_port_out_bit(LCD_EN, 1); asm nop; ex_port_out_bit(LCD_EN, 0); // ex_port_out_bit(LCD_D7, cmd.B3); ex_port_out_bit(LCD_D6, cmd.B2); ex_port_out_bit(LCD_D5, cmd.B1); ex_port_out_bit(LCD_D4, cmd.B0); ex_port_out_bit(LCD_RS, 0); ex_port_out_bit(LCD_EN, 1); asm nop; ex_port_out_bit(LCD_EN, 0); // Delay_us(100); } //**********************************************************************