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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+oled顯示程序問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:608920 發(fā)表于 2020-1-28 16:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
樓主用的i2c oled,也就是四腳oled,原來一直用的128x64圖片顯示來做東西玩,最近想做的東西用到的圖片是85x64格式,結(jié)果發(fā)現(xiàn)oled顯示出現(xiàn)問題,自己改了很多地方都沒法解決
右邊出現(xiàn)了亂碼,程序如下,是商家給的例程,請問哪個地方的問題,列地址這方面嗎?


  1. #include "oled.h"
  2. #include "picture.h"


  3. /**********************************************
  4. //IIC Start
  5. **********************************************/
  6. void IIC_Start()
  7. {
  8.    SCL = high;               
  9.    SDA = high;
  10.    SDA = low;
  11.    SCL = low;
  12. }

  13. /**********************************************
  14. //IIC Stop
  15. **********************************************/
  16. void IIC_Stop()
  17. {
  18.    SCL = low;
  19.    SDA = low;
  20.    SCL = high;
  21.    SDA = high;
  22. }
  23. /**********************************************
  24. // IIC Write byte
  25. **********************************************/
  26. void Write_IIC_Byte(unsigned char IIC_Byte)
  27. {
  28.         unsigned char i;
  29.         for(i=0;i<8;i++)               
  30.         {
  31.                 if(IIC_Byte & 0x80)
  32.                 SDA=high;
  33.                 else
  34.                 SDA=low;
  35.                 SCL=high;
  36.                 SCL=low;
  37.                 IIC_Byte<<=1;
  38.         }
  39.         SDA=1;
  40.         SCL=1;
  41.         SCL=0;
  42. }
  43. /**********************************************
  44. // IIC Write Command
  45. **********************************************/
  46. void Write_IIC_Command(unsigned char IIC_Command)
  47. {
  48.    IIC_Start();
  49.    Write_IIC_Byte(0x78);            //Slave address,SA0=0
  50.    Write_IIC_Byte(0x00);                        //write command
  51.    Write_IIC_Byte(IIC_Command);
  52.    IIC_Stop();
  53. }
  54. /**********************************************
  55. // IIC Write Data
  56. **********************************************/
  57. void Write_IIC_Data(unsigned char IIC_Data)
  58. {
  59.    IIC_Start();
  60.    Write_IIC_Byte(0x78);                        //D/C#=0; R/W#=0
  61.    Write_IIC_Byte(0x40);                        //write data
  62.    Write_IIC_Byte(IIC_Data);
  63.    IIC_Stop();
  64. }
  65. /********************************************
  66. // fill_Picture
  67. ********************************************/
  68. void fill_picture(unsigned char fill_Data)
  69. {
  70.         unsigned char m,n;
  71.         for(m=0;m<8;m++)
  72.         {
  73.                 Write_IIC_Command(0xb0+m);                //page0-page1
  74.                 Write_IIC_Command(0x00);                //low column start address
  75.                 Write_IIC_Command(0x10);                //high column start address
  76.                 for(n=0;n<132;n++)
  77.                         {
  78.                                 Write_IIC_Data(fill_Data);
  79.                         }
  80.         }
  81. }
  82. /******************************************
  83. // picture用來顯示一個圖片
  84. ******************************************/
  85. void Picture()
  86. {
  87.   unsigned char x,y;
  88.   unsigned int i=0;
  89.   for(y=0;y<8;y++)
  90.     {
  91.       Write_IIC_Command(0xb0+y);
  92.       Write_IIC_Command(0x0);
  93.       Write_IIC_Command(0x10);
  94.       for(x=0;x<128;x++)
  95.         {
  96.           Write_IIC_Data(show[i++]);
  97.         }
  98.     }
  99. }

  100. /***********************Delay****************************************/
  101. void Delay_50ms(unsigned int Del_50ms)
  102. {
  103.         unsigned int m;
  104.         for(;Del_50ms>0;Del_50ms--)
  105.                 for(m=6245;m>0;m--);
  106. }

  107. void Delay_1ms(unsigned int Del_1ms)
  108. {
  109.         unsigned char j;
  110.         while(Del_1ms--)
  111.         {        
  112.                 for(j=0;j<123;j++);
  113.         }
  114. }



  115. void Initial_M096128x64_ssd1306()
  116. {
  117.         Write_IIC_Command(0xAE);   //display off
  118.         Write_IIC_Command(0x20);        //Set Memory Addressing Mode        
  119.         Write_IIC_Command(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
  120.         Write_IIC_Command(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7
  121.         Write_IIC_Command(0xc8);        //Set COM Output Scan Direction
  122.         Write_IIC_Command(0x00);//---set low column address
  123.         Write_IIC_Command(0x10);//---set high column address
  124.         Write_IIC_Command(0x40);//--set start line address
  125.         Write_IIC_Command(0x81);//--set contrast control register
  126.         Write_IIC_Command(0xdf);
  127.         Write_IIC_Command(0xa1);//--set segment re-map 0 to 127
  128.         Write_IIC_Command(0xa6);//--set normal display
  129.         Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)
  130.         Write_IIC_Command(0x3F);//
  131.         Write_IIC_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
  132.         Write_IIC_Command(0xd3);//-set display offset
  133.         Write_IIC_Command(0x00);//-not offset
  134.         Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
  135.         Write_IIC_Command(0xf0);//--set divide ratio
  136.         Write_IIC_Command(0xd9);//--set pre-charge period
  137.         Write_IIC_Command(0x22); //
  138.         Write_IIC_Command(0xda);//--set com pins hardware configuration
  139.         Write_IIC_Command(0x12);
  140.         Write_IIC_Command(0xdb);//--set vcomh
  141.         Write_IIC_Command(0x20);//0x20,0.77xVcc
  142.         Write_IIC_Command(0x8d);//--set DC-DC enable
  143.         Write_IIC_Command(0x14);//
  144.         Write_IIC_Command(0xaf);//--turn on oled panel
  145. }
復(fù)制代碼




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

使用道具 舉報

沙發(fā)
ID:362076 發(fā)表于 2020-1-29 15:37 | 只看該作者
你的圖片繪制函數(shù)在做行填充的時候超界了。
回復(fù)

使用道具 舉報

板凳
ID:608920 發(fā)表于 2020-1-29 20:08 | 只看該作者
凌凈清河 發(fā)表于 2020-1-29 15:37
你的圖片繪制函數(shù)在做行填充的時候超界了。

所以是我用頁尋址方式不恰當(dāng),導(dǎo)致列上面128個點超出圖片的取模范圍了?
回復(fù)

使用道具 舉報

地板
ID:362076 發(fā)表于 2020-1-30 08:56 | 只看該作者
callmesbplease 發(fā)表于 2020-1-29 20:08
所以是我用頁尋址方式不恰當(dāng),導(dǎo)致列上面128個點超出圖片的取模范圍了?

你琢磨琢磨,你圖片是85*64的,OLED是128*64的,在繪制的時候應(yīng)該怎么選擇范圍?
OLED12864一共8個行寄存器(0~7),每個行寄存器有128列(0~127),按照你圖中表現(xiàn)的那樣進行填充,那么應(yīng)該是行寄存器0~7循環(huán),列寄存器0~84循環(huán)填充。
回復(fù)

使用道具 舉報

5#
ID:608920 發(fā)表于 2020-1-30 18:27 | 只看該作者
凌凈清河 發(fā)表于 2020-1-30 08:56
你琢磨琢磨,你圖片是85*64的,OLED是128*64的,在繪制的時候應(yīng)該怎么選擇范圍?
OLED12864一共8個行寄 ...

我試了一下改代碼,也是圖像能正常顯示,但是列地址沒有填充的空間發(fā)生了亂碼,請問是缺少什么其他該有的東西嗎?
  1. void Picture()
  2. {
  3.   unsigned char x,y;
  4.   unsigned int i=0;
  5.   for(y=0;y<8;y++)
  6.     {
  7.       Write_IIC_Command(0xb0+y);
  8.       Write_IIC_Command(0x0);
  9.       Write_IIC_Command(0x10);
  10.       for(x=0;x<84;x++)
  11.         {
  12.           Write_IIC_Data(show[i++]);
  13.         }
  14.     }
  15. }
復(fù)制代碼
回復(fù)

使用道具 舉報

6#
ID:362076 發(fā)表于 2020-1-31 12:25 | 只看該作者
callmesbplease 發(fā)表于 2020-1-30 18:27
我試了一下改代碼,也是圖像能正常顯示,但是列地址沒有填充的空間發(fā)生了亂碼,請問是缺少什么其他該有的 ...

首先確定你的圖片取模方式和存放方式,確保它是完全適配圖片繪制函數(shù)的,其次,1306寫入數(shù)據(jù)的時候只修改被寫入的部分,所以在全部開始之前要進行至少一次清屏,以保證每個像素的值是確定的狀態(tài)。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费视频一区二区 | 在线中文字幕日韩 | a级大毛片| 中文字幕一区二区三区乱码图片 | 波霸ol一区二区 | h网站在线观看 | 国产欧美精品区一区二区三区 | 97国产爽爽爽久久久 | 国产精品一区二区三区久久 | 野狼在线社区2017入口 | 狠狠色综合网站久久久久久久 | 午夜激情小视频 | 视频一区 亚洲 | 91小视频在线 | 色久伊人 | 最新国产精品 | 午夜精品久久久久久久久久久久 | 成人精品视频免费 | 久久久久国产精品 | 狠狠狠色丁香婷婷综合久久五月 | 六月色婷 | 日本欧美在线 | 香蕉久久久 | 99精品视频在线观看 | 欧美激情国产日韩精品一区18 | 欧美性大战久久久久久久蜜臀 | 久久久精品久久 | 在线免费观看日本视频 | 国产黄色精品在线观看 | 中文字幕成人 | 中文字幕在线剧情 | 一区二区三区不卡视频 | 免费一级做a爰片久久毛片潮喷 | 国产成人在线视频免费观看 | 一级片av| 一级黄色毛片 | 国产精品久久久久久久久污网站 | 国产精品视频一二三区 | a级毛片基地 | 精品国产亚洲一区二区三区大结局 | 九九热精品在线 |