#include "ht16c23.h"
#include "myiic.h"
#include "gpio.h"



void init_ht16c23(void){
//    GPIO_Init(GPIOC, GPIO_PIN_5,GPIO_MODE_OUT_PP_HIGH_FAST);

	  IIC_Init();
    





//    I2CWriteSingle(0x80,0x00);
	  I2CWriteSingle(0x82,0x03);
    I2CWriteSingle(0x84,0x03);
    I2CWriteSingle(0x86,0x00);
    I2CWriteSingle(0x88,0x00);
    I2CWriteSingle(0x8a,0x00);
	
//		I2CWriteSingle(0x82,0x11);
//    I2CWriteSingle(0x84,0x03);
//		I2CWriteSingle(0x86,0x00);
//		I2CWriteSingle(0x88,0x00);
//		I2CWriteSingle(0x8a,0x30);
//		I2CWriteSingle(0x80,0x00);	
    ht16c23_clear();
}

void I2CWriteSingle(char I2CData,char I2CData_sub)
{
    IIC_Start();
    IIC_Send_Byte(0x7C);   //器件地址（写）
    IIC_Wait_Ack();
    IIC_Send_Byte(I2CData);  
    IIC_Wait_Ack();
    IIC_Send_Byte(I2CData_sub);
    IIC_Wait_Ack();
    IIC_Stop();	
}
void ht16c23_clear(void){
  int i;
  IIC_Start();
  IIC_Send_Byte(0x7C);//器件地址（写）
  IIC_Wait_Ack();
  IIC_Send_Byte(0x80);//设置显示数据输入/输出命令
  IIC_Wait_Ack();
  IIC_Send_Byte(0x00);//设置开始地址
  IIC_Wait_Ack();
  for(i=0;i<0x33;i++){     //??? i只要比0大就可以了
    IIC_Send_Byte(0x00);  //IIC发送一个字节
    IIC_Wait_Ack();
  }
  IIC_Stop();  
}
//write ram                     位选       段选
void ht16c23_write_one_byte2ram(u8 addr ,u8 data){
  IIC_Start();
  IIC_Send_Byte(0x7C);//器件地址（写）
  IIC_Wait_Ack();
  IIC_Send_Byte(0x80);//写起始地址
  IIC_Wait_Ack();
  IIC_Send_Byte(addr); //位选
  IIC_Wait_Ack();
  IIC_Send_Byte(data);//段选
  IIC_Wait_Ack();
  IIC_Stop();
}

////读操作
//u8 ht16c23_read_one_byte2ram(u8 addr){
//  u8 temp;
//  IIC_Start();
//  IIC_Send_Byte(0x7C);//器件地址（写）
//  IIC_Wait_Ack();
//  IIC_Send_Byte(0x80);//写起始地址
//  IIC_Wait_Ack(); 
//  IIC_Send_Byte(0x00);//设置开始地址
//  IIC_Wait_Ack();
//  IIC_Start();
//  IIC_Send_Byte(0x7D);//器件地址（读）
//  IIC_Wait_Ack();
//  temp = IIC_Read_Byte(addr);//原来是0，我改成addr
//		
//  IIC_Stop();
//  return temp;
//}


////写多个字节
//void ht16c23_write_bytes2ram(u8 addr ,u8 *data, u8 len){
//  int i;
//  IIC_Start();
//  IIC_Send_Byte(0x7C);
//  IIC_Wait_Ack();
//  IIC_Send_Byte(0x80);
//  IIC_Wait_Ack();
//  IIC_Send_Byte(addr);//设置开始地址
//  IIC_Wait_Ack();
//  for(i=0;i<len;i++){
//    IIC_Send_Byte(data[i]);
//    IIC_Wait_Ack();
//  }
//  IIC_Stop(); 
//}


//com
//seg
//void ht16c23_write_val(u8 com,u8 seg, u8 seg_val){
//  u8 read_seg_val;
//  seg_val&=0x01;
//  read_seg_val=ht16c23_read_one_byte2ram(seg>>1);
//  if(seg%2){
//    read_seg_val|=(seg_val<<(com+4))|((~(1<<(com+4)))&read_seg_val);
//  }else{
//    read_seg_val|=(seg_val<<(com))|((~(1<<(com)))&read_seg_val);
//  }

//  ht16c23_write_one_byte2ram(seg>>1, read_seg_val);

//}


















