Transistor Gijutsu, October 2014, Special Features Chapter 7,Software of the LCRmeter トランジスタ技術2014年10月号 特集第7章のソフトウェア,サバイバルLCRメータ
Dependencies: mbed
Diff: lcd_P4bit.cpp
- Revision:
- 0:b3e41ec91adf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lcd_P4bit.cpp Thu Aug 28 07:09:42 2014 +0000 @@ -0,0 +1,76 @@ +// +// HD44780 type 4bit parallel LCD control +// +#include "mbed.h" + +DigitalOut LCDRS(P0_3); // LCD module Register Select +DigitalOut LCDE(P0_1); // LCD module Enable +DigitalOut LCDD4(P1_19); // LCD data lines(4bit) +DigitalOut LCDD5(P0_5); +DigitalOut LCDD6(P0_4); +DigitalOut LCDD7(P1_15); + +void enable( void ) +{ + wait_us( 1 ); + LCDE = 1; + wait_us( 1 ); + LCDE = 0; + wait_us( 1 ); +} + +void lcd_set4bit( unsigned char d ) +{ + LCDD4 = d & 0x01; + LCDD5 = d & 0x02; + LCDD6 = d & 0x04; + LCDD7 = d & 0x08; +} + +void lcd_write4bit( unsigned char d ) +{ + lcd_set4bit( d ); + enable(); +} + +void LCD_cmd( char c ) +{ + LCDRS = 0; + lcd_write4bit( c / 16 ); + lcd_write4bit( c & 0x0f ); + wait_us( 30 ); +} + +void LCD_data( char d ) +{ + LCDRS = 1; + lcd_write4bit( d / 16 ); + lcd_write4bit( d & 0x0f ); + wait_us( 30 ); +} + +void LCD_puts( char *s ) +{ + while( *s ) LCD_data( *s++ ); +} + +void LCD_iniz( void ) +{ + LCDE = 0; + LCDRS = 0; + wait_ms( 40 ); // wait 40mS + lcd_write4bit( 0x03 ); + wait_ms( 5 ); + lcd_write4bit( 0x03 ); + wait_ms( 2 ); + lcd_write4bit( 0x03 ); + wait_ms( 2 ); + lcd_write4bit( 0x02 ); // 4bit interface select + LCD_cmd( 0x28 ); // 2 lines 5x8 chr. + LCD_cmd( 0x08 ); // display off + LCD_cmd( 0x01 ); // display clear + wait_ms( 2 ); + LCD_cmd( 0x06 ); // entry mode + LCD_cmd( 0x0C ); // display on +} +