这里将我写的STC12C5A60S2单片机控制OLED12864显示屏的程序共享一下,如有不足,敬请指出!
测试视频:见文章尾
代码结构图:
程序下载链接:https://download.csdn.net/download/yagnruinihao/16746777
测试程序:OLED12864测试.c
- #include "OLED12864.h"
- #include "OLED12864WordCode.h"
- #include "common.h"
-
- void DisplayLogoTest(void);
- void DisplayAsciiTest(void) ;
- void DisplayScrollTest(void);
- void DisplayGrid(void);
- void DisplayBmp(void);
-
- void main(void)
- {
- unsigned char i=0;
- unsigned char j=0 ;
-
- OLED12864_Init(); //OLED初始化
- while(1)
- {
- DisplayAsciiTest();//ASCII显示实验
- OLED12864_CleanAll();
-
- DisplayScrollTest();//滚动屏显示实验
- OLED12864_CleanAll();
-
- DisplayGrid();//画棋盘实验
- OLED12864_CleanAll();
-
- DisplayBmp();//图片显示实验
- }
-
- }
-
- void DisplayLogoTest(void)
- {
- unsigned char i ;
-
- //"微创电子"
- OLED12864_WriteFont16x16(0,8,0);
- OLED12864_WriteFont16x16(0,24,1);
- OLED12864_WriteFont16x16(0,40,2);
- OLED12864_WriteFont16x16(0,56,3);
- OLED12864_WriteFont16x16(0,72,29);
- OLED12864_WriteFont16x16(0,88,30);
- OLED12864_WriteFont16x16(0,104,31);
-
- //横线
- for(i=0 ; i<16 ; i++)
- OLED12864_WriteFont16x08(2,i*8,13);
- }
- void DisplayAsciiTest(void)
- {
- unsigned char i ;
- unsigned char bai,shi,ge ;
-
- //"微创电子工作室"+横线
- DisplayLogoTest();
-
- //"ASCII"
- OLED12864_WriteFont16x08(4,0,33) ;
- OLED12864_WriteFont16x08(4,8,51) ;
- OLED12864_WriteFont16x08(4,16,35) ;
- OLED12864_WriteFont16x08(4,24,41) ;
- OLED12864_WriteFont16x08(4,32,41) ;
-
- //"值演示实验"
- OLED12864_WriteFont16x16(4,48,4);
- OLED12864_WriteFont16x16(4,64,5);
- OLED12864_WriteFont16x16(4,80,6);
- OLED12864_WriteFont16x16(4,96,7);
- OLED12864_WriteFont16x16(4,112,8);
-
- //"For:""Value="
- OLED12864_WriteFont16x08(6,0,38);//F
- OLED12864_WriteFont16x08(6,8,79);//o
- OLED12864_WriteFont16x08(6,16,82);//r
- OLED12864_WriteFont16x08(6,24,26);//:
- OLED12864_WriteFont16x08(6,56,54);//V
- OLED12864_WriteFont16x08(6,64,65);//a
- OLED12864_WriteFont16x08(6,72,76);//l
- OLED12864_WriteFont16x08(6,80,85);//u
- OLED12864_WriteFont16x08(6,88,69);//e
- OLED12864_WriteFont16x08(6,96,29);//=
-
- //ASCII字符及其数值
- for(i=0 ; i<95 ; i++)
- {
- OLED12864_WriteFont16x08(6,32,i);
- bai = (i+32)%1000/100 ;
- shi = (i+32)%100/10 ;
- ge = (i+32)%10 ;
- if(bai)
- OLED12864_WriteFont16x08(6,104,bai+16);
- else
- OLED12864_WriteFont16x08(6,104,0);
-
- OLED12864_WriteFont16x08(6,112,shi+16);
- OLED12864_WriteFont16x08(6,120,ge+16);
- Delay_SomeNop(10000);
- }
- }
-
- void DisplayScrollTest(void)
- {
- unsigned char i ;
-
- DisplayLogoTest();
-
- //"滚屏显示实验"
- OLED12864_WriteFont16x16(4,16,9);
- OLED12864_WriteFont16x16(4,32,10);
- OLED12864_WriteFont16x16(4,48,11);
- OLED12864_WriteFont16x16(4,64,12);
- OLED12864_WriteFont16x16(4,80,13);
- OLED12864_WriteFont16x16(4,96,14);
-
- //"倒计时:"
- OLED12864_WriteFont16x16(6,32,23);
- OLED12864_WriteFont16x16(6,48,24);
- OLED12864_WriteFont16x16(6,64,25);
- OLED12864_WriteFont16x08(6,80,26);
- for(i=0 ; i<=3 ; i++)
- {
- OLED12864_WriteFont16x08(6,88,3-i+16);
- Delay_SomeNop(40000);
- }
-
- //清除最后一行汉字
- for(i=0 ; i <16 ; i++)
- {
- OLED12864_WriteFont16x08(6,i*8,0);
- }
-
- //开始横向滚屏
- OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_LEFT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
- Delay_SomeNop(120000);
- OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_RIGHT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
- Delay_SomeNop(120000);
- OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_RIGHT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
- Delay_SomeNop(120000);
- OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_LEFT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
- Delay_SomeNop(120000);
-
-
- OLED12864_StopScroll();
- Delay_SomeNop(120000);
-
- //开始纵向滚屏
- OLED12864_VerticalScrollArea(32,32);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE7,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE7,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_StopScroll();
- Delay_SomeNop(120000);
-
- //开始斜向滚屏
- OLED12864_VerticalScrollArea(0,64);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_StopScroll();
- Delay_SomeNop(120000);
-
-
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE4,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
- Delay_SomeNop(200000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE4,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
- Delay_SomeNop(200000);
- OLED12864_StopScroll();
- Delay_SomeNop(200000);
- }
-
- void DisplayGrid(void)
- {
- unsigned char i,j,k;
-
- OLED12864_Fill(0x0f);
- OLED12864_Fill(0xf0);
-
- for(k=0;k<8;k++)
- {
- for(i=0 ; i<8;i++)
- {
- for(j=0;j<8;j++)
- {
- OLED12864_SetPosition(i , j+k*16);
- OLED12864_WriteData(0xff);
- }
- }
- }
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
- }
- void DisplayBmp(void)
- {
- OLED12864_DrawBmp(0, 0,7,127 ,BMP1);
-
- OLED12864_VerticalScrollArea(0,64);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_StopScroll();
- OLED12864_CleanAll();
-
- OLED12864_DrawBmp(0, 0,7,127 ,BMP2);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
- Delay_SomeNop(120000);
- OLED12864_CleanAll();
-
- OLED12864_DrawBmp(0, 0,7,127 ,BMP4);
- Delay_SomeNop(120000);
-
- OLED12864_VerticalScrollArea(0,64);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
- Delay_SomeNop(120000);
- OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
- Delay_SomeNop(120000);
- OLED12864_StopScroll();
- OLED12864_CleanAll();
-
- OLED12864_DrawBmp(0, 0,7,127 ,BMP3);
- Delay_SomeNop(120000);
- OLED12864_CleanAll() ;
- }
复制代码
/*################OLED12864.c部分代码分析################*/
这里重点分析书写1
- /*行列式(为了便于理解,未优化,已实验成功),注意这里需要配合取模软件和OLED12864WordCode中数组*/
- unsigned char temp ;
- OLED12864_SetPosition(Page,Column);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- OLED12864_SetPosition(Page+1,Column);
- addr +=8 ;
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- addr +=8 ;
- OLED12864_SetPosition(Page,Column+8);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- addr +=8 ;
- OLED12864_SetPosition(Page+1,Column+8);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
复制代码
6x16中文汉字的四种算法(逐行式、逐列式、列行式、行列式)
算法一:逐行式
- /*逐列式,已实验成功,注意这里需要配合取模软件和OLED12864WordCode中数组*/
- for(j=0;j<16; j++)
- {
- OLED12864_SetPosition(Page,Column+j);
- OLED12864_WriteData(Font16x16[addr++]);
- OLED12864_SetPosition(Page + 1 , Column+j);
- OLED12864_WriteData(Font16x16[addr++]);
- }
复制代码 算法二:逐列式
- /*逐行式(为了便于理解,未优化),已实验成功,注意这里需要配合取模软件和OLED12864WordCode中数组*/
- unsigned char temp ;
- OLED12864_SetPosition(Page,Column);
- for(j=0;j<8 ;j++)
- {
- temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
- OLED12864_WriteData(temp);
- }
- ++addr;
- for(j=0;j<8 ;j++)
- {
- temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
- OLED12864_WriteData(temp);
- }
- addr += 15;
- OLED12864_SetPosition(Page+1,Column);
- for(j=0;j<8 ;j++)
- {
- temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
- OLED12864_WriteData(temp);
- }
- ++addr;
- for(j=0;j<8 ;j++)
- {
- temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
- OLED12864_WriteData(temp);
- }
复制代码
算法三:列行式(作者最后采用的方式)
- /*列行式,已实验成功,注意这里需要配合取模软件和OLED12864WordCode中数组*/
- OLED12864_SetPosition(Page,Column);
- for(j=0;j<16; j++)
- OLED12864_WriteData(Font16x16[addr++]);//写字上半部分
- OLED12864_SetPosition(Page+1,Column);
- for(j=0;j<16; j++)
- OLED12864_WriteData(Font16x16[addr++]);//写字下半部分
复制代码 算法四:行列式
- /*行列式(为了便于理解,未优化,已实验成功),注意这里需要配合取模软件和OLED12864WordCode中数组*/
- unsigned char temp ;
- OLED12864_SetPosition(Page,Column);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- OLED12864_SetPosition(Page+1,Column);
- addr +=8 ;
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- addr +=8 ;
- OLED12864_SetPosition(Page,Column+8);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
- addr +=8 ;
- OLED12864_SetPosition(Page+1,Column+8);
- for(j=0;j<8; j++)
- {
- temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
- (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
- (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
- OLED12864_WriteData(temp) ;
- }
复制代码
【注意】这里采用那种算法,需要和取模软件相配套。
测试视频(自行替换):
v.qq点com/x/page/g3240xbfvbj.html?start=18
|