//////////////////////////////////////////////////////////////////////////////////	 
//本程序只供学习使用，未经作者许可，不得用于其它任何用途
//中景园电子
//店铺地址：http://shop73023976.taobao.com/?spm=2013.1.0.0.M4PqC2
//
//  文 件 名   : oled.c
//  版 本 号   : v2.0
//  作    者   : HuangKai
//  生成日期   : 2014-0101
//  最近修改   : 
//  功能描述   : 0.96寸OLED 接口演示例程(MSP430F149系列)
//  驱动IC     :SSD1309
//              说明: 
//              ----------------------------------------------------------------
//              GND    电源地
//              VCC  接3.3v电源
//              D0   P54（时钟）
//              D1   P53（数据）
//              RES  接P52
//              DC   接P51
//              CS   接P50               
//              ----------------------------------------------------------------
// 修改历史   :
// 日    期   : 
// 作    者   : HuangKai
// 修改内容   : 创建文件
//版权所有，盗版必究。
//Copyright(C) 中景园电子2014/3/16
//All rights reserved
//******************************************************************************/
#ifndef __OLED_H
#define __OLED_H			  	 
#include	<io430.h>
#include	<in430.h>
#include	<intrinsics.h> 
#define  u8 unsigned char 
#define  u32 unsigned int 
#define OLED_CMD  0	//写命令
#define OLED_DATA 1	//写数据



#define		Set_Bit(val, bitn)		(val |= (/*1 <<*/(bitn)))		//竚琘 1
#define		Clr_Bit(val, bitn)		(val &= ~(/*1<<*/(bitn)))		//竚琘 0
#define		Get_Bit(val, bitn)		(val & (1<<(bitn)) )		//眔琘
//----------------------------------------------------------------------------------
//OLED SSD1306 SPI  时钟D0
//#define		OLED_SSD1306_SCLK_DIR			(P1DIR)
//#define		OLED_SSD1306_SCLK_OUT			(P1OUT)
#define		OLED_SSD1306_SCLK_PIN_NUM		(BIT4)

#define		OLED_SSD1306_SCLK_IO_INIT		(Set_Bit(P5DIR,OLED_SSD1306_SCLK_PIN_NUM))
#define		OLED_SCLK_Set()			        (Set_Bit(P5OUT,OLED_SSD1306_SCLK_PIN_NUM))
#define		OLED_SCLK_Clr()				(Clr_Bit(P5OUT,OLED_SSD1306_SCLK_PIN_NUM))

//----------------------------------------------------------------------------------
//OLED SSD1306 SPI 数据D1
//#define		OLED_SSD1306_SDIN_DIR			(P1DIR)
//#define		OLED_SSD1306_SDIN_OUT			(P1OUT)
#define		OLED_SSD1306_SDIN_PIN_NUM		(BIT3)

#define		OLED_SSD1306_SDIN_IO_INIT		(Set_Bit(P5DIR,OLED_SSD1306_SDIN_PIN_NUM))
#define		OLED_SDIN_Set()				(Set_Bit(P5OUT,OLED_SSD1306_SDIN_PIN_NUM))
#define		OLED_SDIN_Clr()			        (Clr_Bit(P5OUT,OLED_SSD1306_SDIN_PIN_NUM))

//----------------------------------------------------------------------------------
//OLED SSD1306 复位/RES
//#define		OLED_SSD1306_RST_DIR			(P1DIR)
//#define		OLED_SSD1306_RST_OUT			(P1OUT)
#define		OLED_SSD1306_RST_PIN_NUM		(BIT2)

#define		OLED_SSD1306_RST_IO_INIT		(Set_Bit(P5DIR,OLED_SSD1306_RST_PIN_NUM))
#define		OLED_RST_Set()				(Set_Bit(P5OUT,OLED_SSD1306_RST_PIN_NUM))
#define		OLED_RST_Clr()				(Clr_Bit(P5OUT,OLED_SSD1306_RST_PIN_NUM))

//----------------------------------------------------------------------------------
//OLED SSD1306 数据/命令DC
//#define		OLED_SSD1306_DC_DIR				(P1DIR)
//#define		OLED_SSD1306_DC_OUT				(P1OUT)
#define		OLED_SSD1306_RS_PIN_NUM			(BIT1)

#define		OLED_SSD1306_RS_IO_INIT			(Set_Bit(P5DIR,OLED_SSD1306_RS_PIN_NUM))
#define		OLED_RS_Set()				(Set_Bit(P5OUT,OLED_SSD1306_RS_PIN_NUM))
#define		OLED_RS_Clr()				(Clr_Bit(P5OUT,OLED_SSD1306_RS_PIN_NUM))

//----------------------------------------------------------------------------------
//OLED SSD1306 片选CS
//#define		OLED_SSD1306_CE_DIR				(P1DIR)
//#define		OLED_SSD1306_CE_OUT				(P1OUT)
#define		OLED_SSD1306_CE_PIN_NUM			(BIT0)

#define		OLED_SSD1306_CE_IO_INIT			(Set_Bit(P5DIR,OLED_SSD1306_CE_PIN_NUM))
#define		OLED_CS_Set()				(Set_Bit(P5OUT,OLED_SSD1306_CE_PIN_NUM))
#define		OLED_CS_Clr()				(Clr_Bit(P5OUT,OLED_SSD1306_CE_PIN_NUM))
//----------------------------------------------------------------------------------
//开发板LED灯

#define		LED_PIN_NUM			(BIT0)

#define		LED_IO_INIT		        	(Set_Bit(P2DIR,LED_PIN_NUM))
#define		LED_Set()				(Set_Bit(P2OUT,LED_PIN_NUM))
#define		LED_Clr()				(Clr_Bit(P2OUT,LED_PIN_NUM))
//----------------------------------------------------------------------------------

#define SIZE 16
#define XLevelL		0x02
#define XLevelH		0x10
#define Max_Column	128
#define Max_Row		64
#define	Brightness	0xFF 
#define X_WIDTH 	128
#define Y_WIDTH 	64	    						  
//-----------------OLED端口定义----------------  					   

//OLED????ó?oˉêy
void Delay(unsigned int Data);
void Write_Register(unsigned char Data);
void Write_Parameter(unsigned char Data);
void Column_Address(unsigned char a, unsigned char b);
void Row_Address(unsigned char a, unsigned char b);
void ClearLED (unsigned char color);
void Set_Colume_Address(unsigned char Addr1,unsigned char Addr2);
void Set_Row_Address(unsigned char Addr1,unsigned char Addr2);
void OLED_ShowChar(u8 x,u8 y,u8 chr);
void OLED_ShowString(u8 x,u8 y,u8 *chr);
u32 oled_pow(u8 m,u8 n);
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size);
void OLED_ShowCHinese(u8 x,u8 y,u8 no);
//void OLED_DrawBMP(u8 *BMP,u8 Gray_Level,u8 Color);
void Initial_ssd1327(void);
void OLED_DrawBMP(u8 x1,u8 y1,u8 x2,u8 y2,u8 *BMP);
void OPEN_DC_POWER(void);
void OFF_DC_POWER(void);
#endif  
	 

