******************************************** main ここから*********************************************

#include <pic.h>
#include <htc.h>
#include <stdio.h>
#include <string.h>

__CONFIG(PWRTEN & WDTDIS  & MCLREN & INTIO);/*内部発振*/
//__CONFIG(PWRTEN & WDTDIS  & MCLREN & HS);/*水晶発振*/

//#define _XTAL_FREQ 20000000
#define _XTAL_FREQ 31000	/* 31kHz */
#define JIKAN 500		    /* 500ミリ秒 */
#define PORT PORTC
#define ENABLE RA0
#define RS RA1
#define JIKAN1 1100
#define JIKAN2 500

lcd_position(unsigned char);
void putch(unsigned char moji);
lcd_init();
ioport();

int pos=0;

main()
{

OSCCON=0;//INTCONにするときに必要で0は31Khz
ioport();
lcd_init();			/* LCDを初期化する */

	while(1){


				//表示位置
				pos=0;
				lcd_position(pos);
				//通常表示
				printf("CQ CQ DE JA3RUA ");
				//表示位置
				pos=40;
				lcd_position(pos);
				printf("PSE K ");
				__delay_ms(JIKAN1);
				lcd_clear();
				__delay_ms(JIKAN1);

	}

}




ioport()
{

ANSEL=0; 
ANSELH=0;
TRISA=0x30;	/*RA0-3ピンを出力に、RA4,RA5ピンを入力設定*/
TRISB=0;	/*PORTB全ピンを出力に設定*/
TRISC=0;	/*PORTC全ピンを出力に設定*/
PORTA=0x00;	/*PORTA全ピンをLに設定 16進*/
//PORTB=0xFF; /*PORTB全ピンをHに設定 16進*/
PORTC=0x00; /*PORTC全ピンをLに設定 16進*/
//PORTA=0b01010101; /*PORTAピンをLHLHLHLHに設定 2進*/
//PORTB=0b10101010; /*PORTBピンをHLHLHLHLに設定 2進*/
//PORTC=0b01010101; /*PORTCピンをLHLHLHLHに設定 2進*/

}

void putch(unsigned char nandemo) 	/* PUTCH */

{
	RS=1;
	ENABLE=0;
	__delay_us(80);
	PORT=(nandemo>>4)&0x0F;
	// 書込みはEが1→0
	ENABLE=1;	
	ENABLE=0;
	PORT=nandemo&0x0F;
	// 書込みはEが1→0
	ENABLE=1;
	ENABLE=0;
}

******************************************** main ここまで*********************************************

******************************************** init ここから*********************************************

/////////////////////////////////////////////////////////////////////////////////////////////////////////
//     イニシャライズ手順 インターフェースデータ長4bit(データシートから)
//
//		電源ONして15ms以上待つ 
//		RS R/W DB7 DB6 DB5 DB4
//(1)	0  0   0   0   1   1 
//			4.1ms以上待つ
//(2)	0  0   0   0   1   1 
//			100μs以上待つ
//(3)	0  0   0   0   1   1 
//(4)	0  0   0   0   1   0
//(5)	0  0   0   0   1   0 ファンクションセット		0 0 1 DL	DL=0で4bit
//(6)	0  0   1   0   0   0					N F * *     N=1で2行    F=0で5×8dot
//(7)	0  0   0   0   0   0 表示オン/オフ
//(8)   0  0   1   1   0   0					1 D C B     D=1で表示オン C=0でカーソル表示しない B=0でブリンクしない
//(9)   0  0   0   0   0   0 表示クリア
//(10)  0  0   0   0   0   1		
//(11)  0  0   0   0   0   0 エントリーモード 
//(12)  0  0   0   1   1   0					0 1 I/D S	I/D=1でアドレスを+1カーソルが右に動く 
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////



#include <htc.h>

//#define _XTAL_FREQ 20000000
#define _XTAL_FREQ 31000

lcd_init();
lcd_position(unsigned char);
lcd_clear();
void putch(unsigned char);
//lcd_cgram();

//他のI/Oピン使用する時に変更
#define PORT PORTC
#define ENABLE RA0
#define RS RA1


//int cgdata=0x04;

lcd_init()		/* LCDモジュール初期化  PIC:PIC16F688 確認LCD:SD1602 HUOB-XA */
{                       /* RC5:RS RC4:ENABLE

	RS=0;				/*RS=0 instruction input RS=1 data input 
	ENABLE=0;
	__delay_ms(30);
	PORT=0x03;                /* 4bitモード */
	ENABLE=1;			/*(1)__delay_ms(30)*/
	ENABLE=0;
	__delay_ms(10);
	ENABLE=1;			/*(2)__delay_ms(10)*/
	ENABLE=0;
	__delay_us(400);
	ENABLE=1;			/*(3)__delay_us(400)*/
	ENABLE=0;
				

	__delay_us(400);
	PORT=0x02;                
	ENABLE=1;			/*(4)__delay_us(400)*/
	ENABLE=0;

    /* function set */
	__delay_us(80);
	PORT=0x02;
	ENABLE=1;			/*(5)__delay_us(80);*/
	ENABLE=0;
	PORT=0x08;				  /* 0x08:2行 0x00:1行 */
	ENABLE=1;			/*(6)*/
	ENABLE=0;

    /* disp control*/
	__delay_us(80);
	PORT=0x00;
	ENABLE=1;			/*(7)__delay_us(80);*/
	ENABLE=0;
	PORT=0x0C;		          /* 1,D:1,C:0,B:0 D(disp:on) C(cursor:off) B(blink:off)*/
	ENABLE=1;			/*(8)*/
	ENABLE=0;


    /*clear disp*/
	__delay_us(80);
	PORT=0x00;
	ENABLE=1;			/*(9)__delay_us(80);*/
	ENABLE=0;
	PORT=0x01;
	ENABLE=1;			/*(10)*/
	ENABLE=0;

    /*entry mode*/
	__delay_us(80);
	PORT=0x00;
	ENABLE=1;			/*(11)__delay_us(80);*/
	ENABLE=0;
	PORT=0x06;              /* 0,1,I/D:1,S:0 I/D(increment:+1) S(shift:NO increment*/
	ENABLE=1;			/*(12)*/
	ENABLE=0;

}
//***************************************************************

//***************************************************************
lcd_position(unsigned char pos)		/* 文字の位置を指定 */
{									/* dd ram address set */
	RS=0;
//	lcd_write_RS0(0x80+pos);


	__delay_us(80);
	PORT=(((0x80+pos)>>4)&0x0F);

	ENABLE=1;
	ENABLE=0;
	PORT=((0x80+pos)&0x0F);

	ENABLE=1;
	ENABLE=0;
}
//***************************************************************

//***************************************************************
lcd_clear()			           /* 画面をクリア */
{							   /* clear display */
	RS=0;
	__delay_us(80);
	PORT=0x00;
	ENABLE=1;
	ENABLE=0;
	PORT=0x01;
	ENABLE=1;
	ENABLE=0;
	__delay_ms(4);
}
//***************************************************************

******************************************** init ここまで*********************************************