久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3614|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)控制OLED12864顯示屏之模塊化編程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:47177 發(fā)表于 2021-4-20 09:46 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這里將我寫(xiě)的STC12C5A60S2單片機(jī)控制OLED12864顯示屏的程序共享一下,如有不足,敬請(qǐng)指出!
測(cè)試視頻:見(jiàn)文章尾

代碼結(jié)構(gòu)圖:

程序下載鏈接:https://download.csdn.net/download/yagnruinihao/16746777

測(cè)試程序:OLED12864測(cè)試.c
  1. #include "OLED12864.h"
  2. #include "OLED12864WordCode.h"
  3. #include "common.h"

  4. void DisplayLogoTest(void);
  5. void DisplayAsciiTest(void) ;
  6. void DisplayScrollTest(void);
  7. void DisplayGrid(void);
  8. void DisplayBmp(void);

  9. void main(void)
  10. {
  11.         unsigned char i=0;
  12.         unsigned char j=0 ;
  13.    
  14.          OLED12864_Init(); //OLED初始化
  15.         while(1)
  16.         {
  17.                 DisplayAsciiTest();//ASCII顯示實(shí)驗(yàn)
  18.                 OLED12864_CleanAll();
  19.                
  20.                 DisplayScrollTest();//滾動(dòng)屏顯示實(shí)驗(yàn)
  21.                 OLED12864_CleanAll();
  22.                
  23.                 DisplayGrid();//畫(huà)棋盤(pán)實(shí)驗(yàn)
  24.                 OLED12864_CleanAll();
  25.                
  26.                 DisplayBmp();//圖片顯示實(shí)驗(yàn)        
  27.     }

  28. }

  29. void DisplayLogoTest(void)
  30. {
  31.     unsigned char i ;
  32.    
  33.         //"微創(chuàng)電子"
  34.         OLED12864_WriteFont16x16(0,8,0);
  35.         OLED12864_WriteFont16x16(0,24,1);
  36.         OLED12864_WriteFont16x16(0,40,2);
  37.         OLED12864_WriteFont16x16(0,56,3);
  38.         OLED12864_WriteFont16x16(0,72,29);
  39.         OLED12864_WriteFont16x16(0,88,30);
  40.         OLED12864_WriteFont16x16(0,104,31);

  41.         //橫線
  42.         for(i=0 ; i<16 ; i++)
  43.                 OLED12864_WriteFont16x08(2,i*8,13);
  44. }
  45. void DisplayAsciiTest(void)
  46. {
  47.         unsigned char i ;
  48.         unsigned char bai,shi,ge ;
  49.         
  50.         //"微創(chuàng)電子工作室"+橫線
  51.         DisplayLogoTest();
  52.         
  53.         //"ASCII"
  54.         OLED12864_WriteFont16x08(4,0,33) ;
  55.         OLED12864_WriteFont16x08(4,8,51) ;
  56.         OLED12864_WriteFont16x08(4,16,35) ;
  57.         OLED12864_WriteFont16x08(4,24,41) ;
  58.         OLED12864_WriteFont16x08(4,32,41) ;

  59.         //"值演示實(shí)驗(yàn)"
  60.         OLED12864_WriteFont16x16(4,48,4);
  61.         OLED12864_WriteFont16x16(4,64,5);
  62.         OLED12864_WriteFont16x16(4,80,6);
  63.         OLED12864_WriteFont16x16(4,96,7);
  64.         OLED12864_WriteFont16x16(4,112,8);

  65.         //"For:""Value="
  66.         OLED12864_WriteFont16x08(6,0,38);//F
  67.         OLED12864_WriteFont16x08(6,8,79);//o
  68.         OLED12864_WriteFont16x08(6,16,82);//r
  69.         OLED12864_WriteFont16x08(6,24,26);//:
  70.         OLED12864_WriteFont16x08(6,56,54);//V
  71.         OLED12864_WriteFont16x08(6,64,65);//a
  72.         OLED12864_WriteFont16x08(6,72,76);//l
  73.         OLED12864_WriteFont16x08(6,80,85);//u
  74.         OLED12864_WriteFont16x08(6,88,69);//e
  75.         OLED12864_WriteFont16x08(6,96,29);//=

  76.         //ASCII字符及其數(shù)值
  77.         for(i=0 ; i<95 ; i++)
  78.         {
  79.                 OLED12864_WriteFont16x08(6,32,i);
  80.                 bai = (i+32)%1000/100 ;
  81.                 shi = (i+32)%100/10 ;
  82.                 ge  = (i+32)%10 ;
  83.                 if(bai)
  84.                         OLED12864_WriteFont16x08(6,104,bai+16);
  85.                 else
  86.                         OLED12864_WriteFont16x08(6,104,0);

  87.                 OLED12864_WriteFont16x08(6,112,shi+16);
  88.                 OLED12864_WriteFont16x08(6,120,ge+16);
  89.                 Delay_SomeNop(10000);   
  90.         }
  91. }

  92. void DisplayScrollTest(void)
  93. {
  94.         unsigned char i ;
  95.         
  96.         DisplayLogoTest();

  97.         //"滾屏顯示實(shí)驗(yàn)"
  98.         OLED12864_WriteFont16x16(4,16,9);
  99.         OLED12864_WriteFont16x16(4,32,10);
  100.         OLED12864_WriteFont16x16(4,48,11);
  101.         OLED12864_WriteFont16x16(4,64,12);
  102.         OLED12864_WriteFont16x16(4,80,13);
  103.         OLED12864_WriteFont16x16(4,96,14);

  104.         //"倒計(jì)時(shí):"
  105.         OLED12864_WriteFont16x16(6,32,23);
  106.         OLED12864_WriteFont16x16(6,48,24);
  107.         OLED12864_WriteFont16x16(6,64,25);
  108.         OLED12864_WriteFont16x08(6,80,26);
  109.         for(i=0 ; i<=3 ; i++)
  110.         {
  111.                 OLED12864_WriteFont16x08(6,88,3-i+16);
  112.                 Delay_SomeNop(40000);
  113.         }

  114.         //清除最后一行漢字
  115.          for(i=0 ; i <16 ; i++)
  116.   {
  117.                  OLED12864_WriteFont16x08(6,i*8,0);
  118.   }

  119.         //開(kāi)始橫向滾屏
  120.         OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_LEFT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
  121.         Delay_SomeNop(120000);
  122.         OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_RIGHT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
  123.         Delay_SomeNop(120000);
  124.         OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_RIGHT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
  125.         Delay_SomeNop(120000);
  126.         OLED12864_HorizontalScrollDisplay(OLED12864_HORIZONTAL_SCROLL_LEFT,OLED12864_PAGE2, OLED12864_PAGE5, OLED12864_INTERVAL_2_FRAMES);
  127.         Delay_SomeNop(120000);
  128.         
  129.         
  130.         OLED12864_StopScroll();
  131.   Delay_SomeNop(120000);

  132.         //開(kāi)始縱向滾屏
  133.         OLED12864_VerticalScrollArea(32,32);
  134.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE7,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
  135.         Delay_SomeNop(120000);
  136.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE7,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x3f);
  137.         Delay_SomeNop(120000);
  138.          OLED12864_StopScroll();
  139.          Delay_SomeNop(120000);

  140.     //開(kāi)始斜向滾屏
  141.         OLED12864_VerticalScrollArea(0,64);
  142.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  143.         Delay_SomeNop(120000);
  144.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  145.         Delay_SomeNop(120000);
  146.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  147.         Delay_SomeNop(120000);
  148.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  149.         Delay_SomeNop(120000);
  150.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  151.         Delay_SomeNop(120000);
  152.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  153.         Delay_SomeNop(120000);
  154.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  155.         Delay_SomeNop(120000);
  156.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  157.         Delay_SomeNop(120000);
  158.         OLED12864_StopScroll();
  159.         Delay_SomeNop(120000);
  160.         
  161.         
  162.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE4,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
  163.         Delay_SomeNop(200000);
  164.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE4,OLED12864_PAGE7, OLED12864_INTERVAL_2_FRAMES, 0x01);
  165.         Delay_SomeNop(200000);
  166.         OLED12864_StopScroll();
  167.         Delay_SomeNop(200000);
  168. }

  169. void DisplayGrid(void)
  170. {
  171.   unsigned char i,j,k;
  172.    
  173.         OLED12864_Fill(0x0f);
  174.         OLED12864_Fill(0xf0);
  175.    
  176.   for(k=0;k<8;k++)
  177.         {
  178.                 for(i=0 ; i<8;i++)
  179.                 {
  180.                         for(j=0;j<8;j++)
  181.                         {
  182.                                 OLED12864_SetPosition(i , j+k*16);
  183.                                 OLED12864_WriteData(0xff);
  184.                         }
  185.                 }
  186.         }
  187.         Delay_SomeNop(120000);
  188.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
  189.         Delay_SomeNop(120000);
  190.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
  191.         Delay_SomeNop(120000);
  192.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
  193.         Delay_SomeNop(120000);
  194.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
  195.         Delay_SomeNop(120000);
  196.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
  197.         Delay_SomeNop(120000);
  198.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
  199. }
  200. void DisplayBmp(void)
  201. {
  202.         OLED12864_DrawBmp(0, 0,7,127 ,BMP1);

  203.         OLED12864_VerticalScrollArea(0,64);
  204.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  205.         Delay_SomeNop(120000);
  206.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  207.         Delay_SomeNop(120000);
  208.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  209.         Delay_SomeNop(120000);
  210.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  211.         Delay_SomeNop(120000);
  212.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  213.         Delay_SomeNop(120000);
  214.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  215.         Delay_SomeNop(120000);
  216.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  217.         Delay_SomeNop(120000);
  218.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  219.         Delay_SomeNop(120000);
  220.         OLED12864_StopScroll();
  221.         OLED12864_CleanAll();
  222.         
  223.     OLED12864_DrawBmp(0, 0,7,127 ,BMP2);
  224.         Delay_SomeNop(120000);
  225.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
  226.         Delay_SomeNop(120000);
  227.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
  228.         Delay_SomeNop(120000);
  229.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_INVERSE_DISPLAY);
  230.         Delay_SomeNop(120000);
  231.         OLED12864_DisplayNormalOrInverse(OLED12864_SET_NORMAL_DISPLAY);
  232.         Delay_SomeNop(120000);
  233.         OLED12864_CleanAll();
  234.                
  235.         OLED12864_DrawBmp(0, 0,7,127 ,BMP4);
  236.         Delay_SomeNop(120000);

  237.         OLED12864_VerticalScrollArea(0,64);
  238.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  239.         Delay_SomeNop(120000);
  240.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  241.         Delay_SomeNop(120000);
  242.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  243.         Delay_SomeNop(120000);
  244.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  245.         Delay_SomeNop(120000);
  246.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  247.         Delay_SomeNop(120000);
  248.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  249.         Delay_SomeNop(120000);
  250.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_RIGHT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x3f);
  251.         Delay_SomeNop(120000);
  252.         OLED12864_VHScrollDisplay(OLED12864_V_H_SCROLL_LEFT,OLED12864_PAGE0,OLED12864_PAGE7, OLED12864_INTERVAL_3_FRAMES, 0x01);
  253.         Delay_SomeNop(120000);
  254.         OLED12864_StopScroll();
  255.         OLED12864_CleanAll();

  256.         OLED12864_DrawBmp(0, 0,7,127 ,BMP3);
  257.         Delay_SomeNop(120000);
  258.         OLED12864_CleanAll() ;
  259. }
復(fù)制代碼

/*################OLED12864.c部分代碼分析################*/
這里重點(diǎn)分析書(shū)寫(xiě)1
  1. /*行列式(為了便于理解,未優(yōu)化,已實(shí)驗(yàn)成功),注意這里需要配合取模軟件和OLED12864WordCode中數(shù)組*/
  2.          unsigned char temp ;
  3.          OLED12864_SetPosition(Page,Column);
  4.          for(j=0;j<8; j++)
  5.          {
  6.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  7.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  8.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  9.                   OLED12864_WriteData(temp) ;
  10.          }
  11.          OLED12864_SetPosition(Page+1,Column);
  12.          addr +=8 ;
  13.          for(j=0;j<8; j++)
  14.          {
  15.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  16.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  17.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  18.                   OLED12864_WriteData(temp) ;
  19.          }
  20.          addr +=8 ;
  21.          OLED12864_SetPosition(Page,Column+8);
  22.          for(j=0;j<8; j++)
  23.          {
  24.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  25.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  26.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  27.                   OLED12864_WriteData(temp) ;
  28.          }
  29.          addr +=8 ;
  30.          OLED12864_SetPosition(Page+1,Column+8);
  31.          for(j=0;j<8; j++)
  32.          {
  33.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  34.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  35.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  36.                   OLED12864_WriteData(temp) ;
  37.          }
復(fù)制代碼

6x16中文漢字的四種算法(逐行式、逐列式、列行式、行列式)

算法一:逐行式


  1. /*逐列式,已實(shí)驗(yàn)成功,注意這里需要配合取模軟件和OLED12864WordCode中數(shù)組*/
  2.         for(j=0;j<16; j++)
  3.         {
  4.                 OLED12864_SetPosition(Page,Column+j);
  5.                 OLED12864_WriteData(Font16x16[addr++]);
  6.                 OLED12864_SetPosition(Page + 1 , Column+j);
  7.                 OLED12864_WriteData(Font16x16[addr++]);
  8.         }
復(fù)制代碼
算法二:逐列式

  1. /*逐行式(為了便于理解,未優(yōu)化),已實(shí)驗(yàn)成功,注意這里需要配合取模軟件和OLED12864WordCode中數(shù)組*/
  2.          unsigned char temp ;
  3.          OLED12864_SetPosition(Page,Column);
  4.          for(j=0;j<8  ;j++)
  5.          {
  6.                  temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
  7.                        (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
  8.                        (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
  9.              OLED12864_WriteData(temp);
  10.          }
  11.          ++addr;
  12.          for(j=0;j<8  ;j++)
  13.          {
  14.                  temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
  15.                        (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
  16.                        (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
  17.              OLED12864_WriteData(temp);
  18.          }
  19.           addr += 15;
  20.      OLED12864_SetPosition(Page+1,Column);
  21.      for(j=0;j<8  ;j++)
  22.          {
  23.                  temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
  24.                        (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
  25.                        (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
  26.              OLED12864_WriteData(temp);
  27.          }
  28.          ++addr;
  29.          for(j=0;j<8  ;j++)
  30.          {
  31.                  temp =(((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+2]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+4]&(0x01<<j))>>j)<<2) | \
  32.                        (((Font16x16[addr+6]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+8]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+10]&(0x01<<j))>>j)<<5) | \
  33.                        (((Font16x16[addr+12]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+14]&(0x01<<j))>>j)<<7) ;
  34.              OLED12864_WriteData(temp);
  35.          }
復(fù)制代碼

算法三:列行式(作者最后采用的方式)
  1. /*列行式,已實(shí)驗(yàn)成功,注意這里需要配合取模軟件和OLED12864WordCode中數(shù)組*/        
  2.          OLED12864_SetPosition(Page,Column);
  3.          for(j=0;j<16; j++)
  4.                  OLED12864_WriteData(Font16x16[addr++]);//寫(xiě)字上半部分
  5.          OLED12864_SetPosition(Page+1,Column);
  6.          for(j=0;j<16; j++)
  7.                  OLED12864_WriteData(Font16x16[addr++]);//寫(xiě)字下半部分
復(fù)制代碼
算法四:行列式

  1. /*行列式(為了便于理解,未優(yōu)化,已實(shí)驗(yàn)成功),注意這里需要配合取模軟件和OLED12864WordCode中數(shù)組*/
  2.          unsigned char temp ;
  3.          OLED12864_SetPosition(Page,Column);
  4.          for(j=0;j<8; j++)
  5.          {
  6.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  7.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  8.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  9.                   OLED12864_WriteData(temp) ;
  10.          }
  11.          OLED12864_SetPosition(Page+1,Column);
  12.          addr +=8 ;
  13.          for(j=0;j<8; j++)
  14.          {
  15.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  16.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  17.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  18.                   OLED12864_WriteData(temp) ;
  19.          }
  20.          addr +=8 ;
  21.          OLED12864_SetPosition(Page,Column+8);
  22.          for(j=0;j<8; j++)
  23.          {
  24.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  25.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  26.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  27.                   OLED12864_WriteData(temp) ;
  28.          }
  29.          addr +=8 ;
  30.          OLED12864_SetPosition(Page+1,Column+8);
  31.          for(j=0;j<8; j++)
  32.          {
  33.                  temp = (((Font16x16[addr+0]&(0x01<<j))>>j)<<0) | (((Font16x16[addr+1]&(0x01<<j))>>j)<<1) |(((Font16x16[addr+2]&(0x01<<j))>>j)<<2) | \
  34.                                   (((Font16x16[addr+3]&(0x01<<j))>>j)<<3) | (((Font16x16[addr+4]&(0x01<<j))>>j)<<4) |(((Font16x16[addr+5]&(0x01<<j))>>j)<<5) | \
  35.                                   (((Font16x16[addr+6]&(0x01<<j))>>j)<<6) | (((Font16x16[addr+7]&(0x01<<j))>>j)<<7);
  36.                   OLED12864_WriteData(temp) ;
  37.          }
復(fù)制代碼

【注意】這里采用那種算法,需要和取模軟件相配套。


測(cè)試視頻(自行替換):
v.qq點(diǎn)com/x/page/g3240xbfvbj.html?start=18

評(píng)分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:47177 發(fā)表于 2021-4-20 19:49 | 只看該作者
文章最后的測(cè)試視頻自行替換掉點(diǎn)即可觀看
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久一区二区 | 色必久久 | 精品日韩一区二区 | 欧美精品在线播放 | 影音av| 成人精品一区二区三区 | 国产精品一区二区三区四区 | 欧美日本在线 | 能免费看的av | 久久偷人| 在线观看免费av网 | 日韩电影一区二区三区 | 国产成人综合在线 | 欧美日韩电影在线 | 欧美国产日韩在线观看 | 成年男女免费视频网站 | av免费看片| 成人超碰在线 | 久久九九99 | 国产亚洲欧美另类一区二区三区 | 久久久久久久一区 | 国产精品视频网址 | 91国产视频在线观看 | 国产精品视频一区二区三区, | 在线91 | 国产日韩精品一区二区三区 | 亚洲国产一区视频 | 国产精品免费观看视频 | 狠狠色综合网站久久久久久久 | 中文一区 | 精品在线视频播放 | 黄色欧美大片 | 久久婷婷国产麻豆91 | 亚洲人人舔人人 | 人人干在线| 欧美日本久久 | 亚洲精品大片 | 色爱综合网 | 玩丰满女领导对白露脸hd | 欧美国产精品久久久 | 偷派自拍 |