/* 3262G02 */
/* SSD1312 IIC  */

#include "io51.h"


void SSD1312()
{
    RES=1;
    delay(1000);
    RES=0;
    delay(1000);
    RES=1;
    delay(1000);
    
	write_i(0xFD);				/* Set Command Lock*/
	write_i(0x12);

	write_i(0xAE);				/* Set Display OFF*/

	write_i(0x40);				/* Set Display Start Line*/

	write_i(0x81);				/* Set Contrast Control*/
	write_i(0x2F);

	write_i(0xA1);				/* Set Segment Re-map*/

	write_i(0xA4);				/* Set Entire Display OFF/ON*/

	write_i(0xA6);				/* Set Normal/Reverse Display*/  

	write_i(0xA8);				/* Set Multiplex Ration*/
	write_i(0x1F);

	write_i(0xAD);				/* External or internal IREF Selection*/
	write_i(0x40);                /* Select external IREF  */       

	write_i(0xC8);				/* Set COM Output Scan Direction*/

	write_i(0xD3);				/* Set Display Offset*/
	write_i(0x10);

	write_i(0xD5);				/* Set Frame Frequency*/
	write_i(0x80);				 

	write_i(0xD9);				/* Set Pre-charge Period*/
	write_i(0x22);

	write_i(0xDA);				/* Set SEG Pins Hardware Configuration*/
	write_i(0x10);				

	write_i(0xDB);				/* Set VCOMH Voltage*/
	write_i(0x30);

                write_i(0x20);
                write_i(0x09);

	write_i(0x8D);				/* Charge Pump Setting*/
	write_i(0x12);                /* 10h\12h\52h\72h\92h\ */


	write_i(0xAF);				/* Set Display ON   */       

}

void write_w(unsigned char dat)
{
	unsigned char i=8;
	for(i=0;i<8;i++)
	{
	
		if(dat&0x80)
		SDA=1;
		else
		SDA=0;
		
		SCL=0;
		SCL=1;
		SCL=0;
		dat<<=1;
	}
    SCL=0;
  delay(1);
    SCL=1;
  delay(1);
    SCL=0;
}
      
void write_i(unsigned char ins)
{
   start();
   write_w(0x78);
   write_w(0x00);
   write_w(ins);
   stop();
}

void write_d(unsigned char dat)
{
   start();
   write_w(0x78);
   write_w(0x40);
   write_w(dat);
   stop();
}          

 void  start()
{
  SDA=1;
  SCL=1;
  delay(1);
  SDA=0;
  delay(1);
}

void  stop()
{
  SDA=0;
  SCL=1;
  delay(1);
  SDA=1;
}

void delay(unsigned int t)
{
     while(t>0)
       {
       	  t--;
       }
}

