void BTE_MovePositive(u8 SourceLayer, u8 DestiLayer, u16 x1, u16 y1, u16 x2, u16 y2,u16 x, u16 y) { BTE_Source(SourceLayer, DestiLayer, x1, x, y1, y); BTE_Size((x2-x1+1), (y2-y1+1)); Write_Command(0x51);//写入BTE 操作码与光栅操作码 Write_Data(0xc2); Write_Command(0x50);//写入BTE 操作码与光栅操作码 Write_Data(0x80); Chk_Busy_BTE(); }
//********前景颜色设置2 void Text_Foreground_Color(unsigned char setR,unsigned char setG,unsigned char setB) { Write_Command(0x63);//BGCR0 Write_Data(setR); Write_Command(0x64);//BGCR0 Write_Data(setG); Write_Command(0x65);//BGCR0· Write_Data(setB); }
//********背景颜色设置2 void Text_Background_Color(unsigned char setR, unsigned char setG, unsigned char setB) { Write_Command(0x60);//BGCR0 Write_Data(setR); Write_Command(0x61);//BGCR0 Write_Data(setG); Write_Command(0x62);//BGCR0 Write_Data(setB); }
//********前景颜色设置 void Text_Foreground_Color1(unsigned long b_color) { Write_Command(0x63);//BGCR0 Write_Data((unsigned short)(b_color>>11)); Write_Command(0x64);//BGCR0 Write_Data((unsigned short)(b_color>>5)); Write_Command(0x65);//BGCR0 Write_Data((unsigned short)(b_color)); }
void Text_Background_Color1(unsigned long b_color) { Write_Command(0x60);//BGCR0 Write_Data((unsigned short)(b_color>>11)); Write_Command(0x61);//BGCR0 Write_Data((unsigned short)(b_color>>5)); Write_Command(0x62);//BGCR0 Write_Data((unsigned short)(b_color)); }
/***************************************************************************//** * @brief Goes to the first line and the first column * @param None. * @return None. * @date 16.09.2013 *******************************************************************************/ void Oled_home(void) { //This is for Page addressing mode Write_Command(0X20); Write_Command(0X02); //This is for setting the columns to be used Write_Command(0x00); Write_Command(0x10); //Start page address Write_Command(0xb0); }
//********设置工作窗口区域 void Active_Window(unsigned long XL,unsigned long XR ,unsigned long YT ,unsigned long YB) { unsigned short temp; //setting active window X temp=XL; Write_Command(0x30);//HSAW0 Write_Data(temp); temp=XL>>8; Write_Command(0x31);//HSAW1 Write_Data(temp); temp=XR; Write_Command(0x34);//HEAW0 Write_Data(temp); temp=XR>>8; Write_Command(0x35);//HEAW1 Write_Data(temp); //setting active window Y temp=YT; Write_Command(0x32);//VSAW0 Write_Data(temp); temp=YT>>8; Write_Command(0x33);//VSAW1 Write_Data(temp); temp=YB; Write_Command(0x36);//VEAW0 Write_Data(temp); temp=YB>>8; Write_Command(0x37);//VEAW1 Write_Data(temp); }
//****************卷动窗口大小 void Scroll_Window(unsigned short XL,unsigned short XR ,unsigned short YT ,unsigned short YB) { unsigned char temp; temp=XL; Write_Command(0x38);//HSSW0 Write_Data(temp); temp=XL>>8; Write_Command(0x39);//HSSW1 Write_Data(temp); temp=XR; Write_Command(0x3c);//HESW0 Write_Data(temp); temp=XR>>8; Write_Command(0x3d);//HESW1 Write_Data(temp); temp=YT; Write_Command(0x3a);//VSSW0 Write_Data(temp); temp=YT>>8; Write_Command(0x3b);//VSSW1 Write_Data(temp); temp=YB; Write_Command(0x3e);//VESW0 Write_Data(temp); temp=YB>>8; Write_Command(0x3f);//VESW1 Write_Data(temp); }
void Clear_Screen() { uint8_t page_number,column_number; for(page_number=OLED_MIN;page_number<PAGE_TOTAL;page_number++) //page_number 0~3 { Write_Command(START_PAGE+page_number); //#define START_PAGE 0xB0 Write_Command(START_HIGH_BIT); //#define START_HIGH_BIT 0x12 Write_Command(START_LOW_BIT); //#define START_LOW_BIT 0x00 for(column_number=OLED_MIN;column_number<COLUMN_MAX;column_number++) //#define COLUMN_MAX 64 { Write_Data(STATE_MIN); } } }
//********FLASH读取开始位置设置 void DMA_Start_address_setting(unsigned long set_address) { Write_Command(0xB0); Write_Data(set_address); Write_Command(0xB1); Write_Data(set_address>>8); Write_Command(0xB2); Write_Data(set_address>>16); Write_Command(0xB3); Write_Data(set_address>>24); }
//********椭圆曲线:中心点,长短轴 void Draw_Ellipse(unsigned short X,unsigned short Y,unsigned short R1,unsigned short R2) { unsigned char temp; temp=X; Write_Command(0xA5); Write_Data(temp); temp=X>>8; Write_Command(0xA6); Write_Data(temp); temp=Y; Write_Command(0xA7); Write_Data(temp); temp=Y>>8; Write_Command(0xA8); Write_Data(temp); temp=R1; Write_Command(0xA1); Write_Data(temp); temp=R1>>8; Write_Command(0xA2); Write_Data(temp); temp=R2; Write_Command(0xA3); Write_Data(temp); temp=R2>>8; Write_Command(0xA4); Write_Data(temp); }
void All_Screen() { uint8_t page_number,column_number; for(page_number=OLED_MIN;page_number<PAGE_TOTAL;page_number++) { Write_Command(START_PAGE+page_number); Write_Command(START_HIGH_BIT); Write_Command(START_LOW_BIT); for(column_number=OLED_MIN;column_number<COLUMN_MAX;column_number++) { Write_Data(STATE_MAX); } } }
//********画线、画矩形、三角形:起始坐标 void Draw_Line(unsigned short XS,unsigned short XE ,unsigned short YS,unsigned short YE) { unsigned char temp; temp=XS; Write_Command(0x91); Write_Data(temp); temp=XS>>8; Write_Command(0x92); Write_Data(temp); temp=XE; Write_Command(0x95); Write_Data(temp); temp=XE>>8; Write_Command(0x96); Write_Data(temp); temp=YS; Write_Command(0x93); Write_Data(temp); temp=YS>>8; Write_Command(0x94); Write_Data(temp); temp=YE; Write_Command(0x97); Write_Data(temp); temp=YE>>8; Write_Command(0x98); Write_Data(temp); }
void Layers_Progressive(void) { unsigned char temp; Write_Command(0x52);//LTPR0 temp = Read_Data(); temp&=0xf8; temp|=0x02; Write_Data(temp); Write_Command(0x53);//LTPR1 for(temp=0;temp<9;temp++) { Write_Data(temp); Delay10ms(100); } }
/****************************************************** // #define OLED_MIN 0 // #define PAGE_TOTAL 4 // #define COLUMN_MAX 64 // #define ROW_MAX 32 ******************************************************/ void OLED_Refresh_Gram(void) { uint8_t page_number,column_number; for(page_number=0; page_number<PAGE_TOTAL; ++page_number) { Write_Command(START_PAGE + page_number); Write_Command(START_HIGH_BIT); Write_Command(START_LOW_BIT); for(column_number=OLED_MIN; column_number<COLUMN_MAX; ++column_number) { Write_Data(OLED_GRAM[page_number][column_number]); } } }
void Set_Common_Remap(unsigned char d) { Write_Command(0xC0|d); // Set COM Output Scan Direction // Default => 0xC0 // 0xC0 (0x00) => Scan from COM0 to 63 // 0xC8 (0x08) => Scan from COM63 to 0 }
void oled_display(const uint8_t * pic) { uint8_t page_number,column_number; uint32_t piexl=OLED_MIN; for(page_number=OLED_MIN;page_number<PAGE_TOTAL;page_number++) { Write_Command(START_PAGE+page_number); Write_Command(START_HIGH_BIT); Write_Command(START_LOW_BIT); for(column_number=OLED_MIN;column_number<COLUMN_MAX;column_number++) { Write_Data(pic[piexl]); piexl++; } } }
void Set_Inverse_Display(unsigned char d) { Write_Command(0xA6|d); // Set Inverse Display On/Off // Default => 0xA6 // 0xA6 (0x00) => Normal Display // 0xA7 (0x01) => Inverse Display On }
void Set_Display_On_Off(unsigned char d) { Write_Command(0xAE|d); // Set Display On/Off // Default => 0xAE // 0xAE (0x00) => Display Off // 0xAF (0x01) => Display On }
void Set_Segment_Remap(unsigned char d) { Write_Command(0xA0|d); // Set Segment Re-Map // Default => 0xA0 // 0xA0 (0x00) => Column Address 0 Mapped to SEG0 // 0xA1 (0x01) => Column Address 0 Mapped to SEG127 }
void Set_Entire_Display(unsigned char d) { Write_Command(0xA4|d); // Set Entire Display On / Off // Default => 0xA4 // 0xA4 (0x00) => Normal Display // 0xA5 (0x01) => Entire Display On }
void Layer1_Visible(void) { unsigned char temp; Write_Command(0x52);//LTPR0 temp = Read_Data(); temp&=0xf8; Write_Data(temp); }
//**************读取Y坐标 unsigned char ADC_Y(void) { unsigned char temp; Write_Command(0x73);//TPYH Y_coordinate high byte //Chk_Busy(); temp=Read_Data(); return temp; }
//**************读取XY坐标(高位坐标值) unsigned char ADC_XY(void) { unsigned char temp; Write_Command(0x74);//TPXYL bit[3:2] Y_coordinate low byte bit[1:0] X_coordinate low byte //Chk_Busy(); temp=Read_Data(); return temp; }
//********画三角形第三个点 void Draw_Triangle(unsigned short X3,unsigned short Y3) { unsigned char temp; temp=X3; Write_Command(0xA9); Write_Data(temp); temp=X3>>8; Write_Command(0xAA); Write_Data(temp); temp=Y3; Write_Command(0xAB); Write_Data(temp); temp=Y3>>8; Write_Command(0xAC); Write_Data(temp); }
//***********************BTE区域大小设置 void BTE_Size(unsigned short width,unsigned short height) { unsigned char temp; temp=width; Write_Command(0x5c);//BET读写区域宽度 Write_Data(temp); temp=width>>8; Write_Command(0x5d);//BET读写区域宽度 Write_Data(temp); temp=height; Write_Command(0x5e);//BET读写区域高度 Write_Data(temp); temp=height>>8; Write_Command(0x5f);//BET读写区域高度 Write_Data(temp); }
//********文字写入位置 void FontWrite_Position(unsigned short X,unsigned short Y) { unsigned char temp; temp=X; Write_Command(0x2A); Write_Data(temp); temp=X>>8; Write_Command(0x2B); Write_Data(temp); temp=Y; Write_Command(0x2C); Write_Data(temp); temp=Y>>8; Write_Command(0x2D); Write_Data(temp); }
//****************光标显示位置 void Cursor_Position(unsigned short X,unsigned short Y) { unsigned char temp; temp=X; Write_Command(0x80);//GCHP0 Write_Data(temp); temp=X>>8; Write_Command(0x81);//GCHP1 Write_Data(temp); temp=Y; Write_Command(0x82);//GCVP0 Write_Data(temp); temp=Y>>8; Write_Command(0x83);//GCVP1 Write_Data(temp); }
//********内存写入位置 void MemoryWrite_Position(unsigned short X,unsigned short Y) { unsigned char temp; temp=X; Write_Command(0x46); Write_Data(temp); temp=X>>8; Write_Command(0x47); Write_Data(temp); temp=Y; Write_Command(0x48); Write_Data(temp); temp=Y>>8; Write_Command(0x49); Write_Data(temp); }
//****************窗口卷动偏移量设置 void Scroll(unsigned short X,unsigned short Y) { unsigned char temp; temp=X; Write_Command(0x24);//HOFS0 Write_Data(temp); temp=X>>8; Write_Command(0x25);//HOFS1 Write_Data(temp); temp=Y; Write_Command(0x26);//VOFS0 Write_Data(temp); temp=Y>>8; Write_Command(0x27);//VOFS1 Write_Data(temp); }