找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5421|回复: 3
打印 上一主题 下一主题
收起左侧

I2C SSD1306 OLED的说明资料及51单片机example代码

[复制链接]
跳转到指定楼层
楼主
关于SSD1306基础example 以及调色设置。
望采纳~



所有资料51hei提供下载:
0.96-IIC参考.rar (2.33 MB, 下载次数: 97)

单片机源程序如下:
  1. //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  2. #include <at89x51.h>
  3. //#include <reg52.h>
  4. #include <intrins.h>



  5. #define Uchar unsigned char
  6. #define Uint  unsigned int
  7. #define Ulong unsigned long
  8. #define uchar unsigned char
  9. #define uint  unsigned int


  10. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  11. //  Pin Definition
  12. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


  13. //0.66bule
  14. #define RES3        P3_0                                // Reset   
  15. #define SCL3        P3_1                                // Serial Clock Input
  16. #define SDA3        P3_2                                // Serial Data Input


  17. code color13[]={
  18. /*------------------------------------------------------------------------------
  19. ;  源文件 / 文字 : C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\logo.bmp字模
  20. ;  宽×高(像素): 128×64
  21. ------------------------------------------------------------------------------*/
  22. //0x80,0x40,0x10,//宽的像素数,高的像素数,宽的字节数,参数设置可选
  23. 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,

  24. …………限于本文篇幅 余下代码请从51黑下载附件…………

  25. 0x00,0x3F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x11,
  26. 0x08,0x00,0x00,0x20,0x38,0x27,0x02,0x02,0x02,0x27,0x38,0x20,0x00,0x00,0x20,0x3F,
  27. 0x20,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x07,0x18,0x20,0x20,0x20,0x20,0x10,0x0C,
  28. };

  29. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  30. void         delay_ms(Uint t)
  31. {
  32.         Uchar i,j;
  33.         while(--t)
  34.         {
  35.         i=50;        
  36.         j=100;

  37.                 while(--j)
  38.                         while(--i);
  39.         }
  40. }
  41. void uDelay(Uchar l)
  42. {
  43.         while(l--);
  44. }


  45. void Delay(Uchar n)
  46. {
  47. Uchar i,j,k;

  48.         for(k=0;k<n;k++)
  49.         {
  50.                 for(i=0;i<131;i++)
  51.                 {
  52.                         for(j=0;j<15;j++)
  53.                         {
  54.                                 uDelay(203);        
  55.                         }
  56.                 }
  57.         }
  58. }


  59. //****************************************************************************
  60. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  61. //  Read/Write Sequence
  62. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  63. void I2C_3(Uchar mcmd)
  64. {
  65. Uchar length = 8;                        // Send Command

  66.         while(length--)
  67.         {
  68.                 if(mcmd & 0x80)
  69.                 {
  70.                         SDA3=1;
  71.                 }
  72.                 else
  73.                 {
  74.                         SDA3=0;
  75.                 }
  76. //                uDelay(3);
  77.                 SCL3=1;
  78. //                uDelay(3);
  79.                 SCL3=0;
  80. //                uDelay(3);
  81.                 mcmd = mcmd << 1;
  82.         }
  83. }


  84. void I2C_Ack3()
  85. {
  86.         SDA3=1;
  87. //        uDelay(3);
  88.         SCL3=1;
  89. //        uDelay(3);
  90.         SCL3=0;
  91. //        uDelay(3);
  92. }


  93. void I2C_NAck3()
  94. {
  95.         SDA3=0;
  96. //        uDelay(3);
  97.         SCL3=1;
  98. //        uDelay(3);
  99.         SCL3=0;
  100. //        uDelay(3);
  101. }


  102. void I2C_Start3()
  103. {
  104.         SDA3=0;
  105. //        uDelay(3);
  106.         SCL3=1;
  107. //        uDelay(3);
  108.         SCL3=0;
  109. //        uDelay(3);
  110.         I2C_3(0x78);
  111.         I2C_Ack3();
  112. }


  113. void I2C_Stop3()
  114. {
  115.         SCL3=1;
  116. //        uDelay(5);
  117.         SDA3=0;
  118. //        uDelay(5);
  119.         SDA3=1;
  120. //        uDelay(5);
  121. }


  122. void Write_Command3(Uchar Data)
  123. {
  124.         I2C_Start3();
  125.         I2C_3(0x00);
  126.         I2C_Ack3();
  127.         I2C_3(Data);
  128.         I2C_Ack3();
  129.         I2C_Stop3();
  130. }


  131. void Write_Data3(Uchar Data)
  132. {
  133.         I2C_Start3();
  134.         I2C_3(0x40);
  135.         I2C_Ack3();
  136.         I2C_3(Data);
  137.         I2C_Ack3();
  138.         I2C_Stop3();
  139. }
  140. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  141. void        LCD_Init3(void)
  142. {
  143. RES3=0;
  144. //uDelay(2);
  145. RES3=1;
  146. //internal setting


  147. Write_Command3(0xae);        //--turn off oled panel

  148. Write_Command3(0x00);        //--set low column address
  149. Write_Command3(0x10);        //--set high column address

  150. Write_Command3(0x40);        //--set start line address

  151. Write_Command3(0xb0);        //--set page address

  152. Write_Command3(0x81);        //--set contrast control register
  153. Write_Command3(0xff);

  154. Write_Command3(0xa1);        //--set segment re-map 127 to 0   a0:0 to seg127
  155. Write_Command3(0xa6);        //--set normal display

  156. Write_Command3(0xc9);        //--set com(N-1)to com0  c0:com0 to com(N-1)

  157. Write_Command3(0xa8);        //--set multiples ratio(1to64)
  158. Write_Command3(0x3f);        //--1/64 duty

  159. Write_Command3(0xd3);        //--set display offset
  160. Write_Command3(0x00);        //--not offset

  161. Write_Command3(0xd5);        //--set display clock divide ratio/oscillator frequency
  162. Write_Command3(0x80);        //--set divide ratio

  163. Write_Command3(0xd9);        //--set pre-charge period
  164. Write_Command3(0xf1);

  165. Write_Command3(0xda);        //--set com pins hardware configuration
  166. Write_Command3(0x12);

  167. Write_Command3(0xdb);        //--set vcomh
  168. Write_Command3(0x40);

  169. Write_Command3(0x8d);        //--set chare pump enable/disable
  170. Write_Command3(0x14);        //--set(0x10) disable
  171. //Write_Command3(0x10);        //--set(0x10) disable
  172. Write_Command3(0xaf);        //--turn on oled panel
  173. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=void         LCD_Init(void)
  174. }


  175. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  176. void pic13(void)
  177. {
  178.         Uchar i,j;
  179.         Uint k;
  180.         k=0;
  181.         for(j=0;j<8;j++)
  182.         {
  183.                 Write_Command3(0x22);//--set page1
  184.                 Write_Command3(j);//--set start page
  185.                 Write_Command3(0x07);//--set end page

  186.                  for(i=0;i<128;i++)                                                  //显示单色数据到LCD
  187.                 {
  188.                         Write_Data3(color13[k]);
  189.                         k=k+1;
  190.                
  191.                 }
  192.         }
  193. }


  194. void pic14(void)
  195. {
  196.         Uchar i,j;
  197.         Uint k;
  198.         k=0;
  199.         for(j=0;j<8;j++)
  200.         {
  201.                 Write_Command3(0x22);//--set page1
  202.                 Write_Command3(j);//--set start page
  203.                 Write_Command3(0x07);//--set end page

  204.                  for(i=0;i<128;i++)                                                  //显示单色数据到LCD
  205.                 {
  206.                         Write_Data3(color14[k]);
  207.                         k=k+1;
  208.                
  209.                 }
  210.         }
  211. }
  212.                         
  213. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

  214. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  215. void main()
  216. {

  217.         LCD_Init3();

  218.         while(1)

  219.         {   
  220.                 pic13();
  221.                 delay_ms(10);
  222.                 pic14();
  223.                 delay_ms(10);

  224.         }
  225. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:343810 发表于 2018-6-3 05:15 | 只看该作者
感谢,正需要
回复

使用道具 举报

板凳
ID:476495 发表于 2019-2-14 14:59 | 只看该作者
正需要
回复

使用道具 举报

地板
ID:518223 发表于 2020-3-1 17:44 | 只看该作者
头文件,附件里面没有,能发一下完整的代码吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表