找回密码
 立即注册

QQ登录

只需一步,快速开始

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

0.96 OLED的51单片机IIC驱动程序,亲测可用

[复制链接]
跳转到指定楼层
楼主
0.96OLED的51IIC驱动程序,亲测可用
接线说明:

   GND          地
   VCC          3.3V或者5V
   D0(SCL)      P1^0
   D1(SDA)      P1^1

   RST(RES)     接高
   DC(DC)          接地
   CS           接地。

单片机源程序如下:
  1. //////////////////////////////////////////////////////////////////////////////////         
  2. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  3. //中景园电子
  4. //  文 件 名   : main.c
  5. //  版 本 号   : v2.0
  6. //  作    者   : HuangKai
  7. //  生成日期   : 2014-0101
  8. //  最近修改   :
  9. //  功能描述   : OLED IIC接口演示例程(51系列)
  10. // 修改历史   :
  11. // 日    期   :
  12. // 作    者   : HuangKai
  13. // 修改内容   : 创建文件
  14. //版权所有,盗版必究。
  15. //Copyright(C) 中景园电子2014/3/16
  16. //All rights reserved
  17. //******************************************************************************/
  18. #include "reg52.h"
  19. #define high 1
  20. #define low 0
  21. /*************Pin Define***************/
  22. sbit SCL=P1^0;
  23. sbit SDA=P1^1;
  24. /****************************************************/
  25. void Initial_LY096BG30();
  26. void Delay_50ms(unsigned int Del_50ms);
  27. void Delay_1ms(unsigned int Del_1ms);
  28. void fill_picture(unsigned char fill_Data);
  29. void Picture_1();
  30. void IIC_Start();
  31. void IIC_Stop();
  32. void Write_IIC_Command(unsigned char IIC_Command);
  33. void Write_IIC_Data(unsigned char IIC_Data);
  34. void Write_IIC_Byte(unsigned char IIC_Byte);
  35. /***********************Initial code*********************/
  36. void Initial_LY096BG30()
  37. {
  38.         Write_IIC_Command(0xAE);   //display off
  39.         Write_IIC_Command(0x20);        //Set Memory Addressing Mode       
  40.         Write_IIC_Command(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
  41.         Write_IIC_Command(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7
  42.         Write_IIC_Command(0xc8);        //Set COM Output Scan Direction
  43.         Write_IIC_Command(0x00);//---set low column address
  44.         Write_IIC_Command(0x10);//---set high column address
  45.         Write_IIC_Command(0x40);//--set start line address
  46.         Write_IIC_Command(0x81);//--set contrast control register
  47.         Write_IIC_Command(0x7f);
  48.         Write_IIC_Command(0xa1);//--set segment re-map 0 to 127
  49.         Write_IIC_Command(0xa6);//--set normal display
  50.         Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)
  51.         Write_IIC_Command(0x3F);//
  52.         Write_IIC_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
  53.         Write_IIC_Command(0xd3);//-set display offset
  54.         Write_IIC_Command(0x00);//-not offset
  55.         Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency
  56.         Write_IIC_Command(0xf0);//--set divide ratio
  57.         Write_IIC_Command(0xd9);//--set pre-charge period
  58.         Write_IIC_Command(0x22); //
  59.         Write_IIC_Command(0xda);//--set com pins hardware configuration
  60.         Write_IIC_Command(0x12);
  61.         Write_IIC_Command(0xdb);//--set vcomh
  62.         Write_IIC_Command(0x20);//0x20,0.77xVcc
  63.         Write_IIC_Command(0x8d);//--set DC-DC enable
  64.         Write_IIC_Command(0x14);//
  65.         Write_IIC_Command(0xaf);//--turn on oled panel
  66. }
  67. /***********************Picture Code**************************/
  68. unsigned char code show1[]=
  69. {
  70. 0x00,0x06,0x0A,0xFE,0x0A,0xC6,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x00,0x00,0x00,
  71. 0x00,0x00,0xFE,0x7D,0xBB,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xBB,0x7D,
  72. 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  73. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  74. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
  76. 0x0C,0xFE,0xFE,0x0C,0x08,0x20,0x60,0xFE,0xFE,0x60,0x20,0x00,0x00,0x00,0x78,0x48,
  77. 0xFE,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xFE,0x00,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  79. 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  80. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  81. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  82. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  83. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  84. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  85. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  86. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  87. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,
  88. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0xFE,0xFF,0x03,
  89. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0xC0,0xC0,
  90. 0xC0,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  91. 0xFF,0xFE,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,
  92. 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  93. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  94. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  95. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  96. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,
  97. 0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE1,0xE1,
  98. 0xE1,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  99. 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,
  100. 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  101. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  102. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  103. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,
  104. 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,
  105. 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
  106. 0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
  107. 0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,
  108. 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  109. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  110. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  111. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  112. 0x00,0x00,0x00,0x00,0x00,0xE2,0x92,0x8A,0x86,0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,
  113. 0x00,0xFE,0x00,0x82,0x92,0xAA,0xC6,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
  114. 0x7C,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
  115. 0x7C,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  116. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  117. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  118. 0x00,0x24,0xA4,0x2E,0x24,0xE4,0x24,0x2E,0xA4,0x24,0x00,0x00,0x00,0xF8,0x4A,0x4C,
  119. 0x48,0xF8,0x48,0x4C,0x4A,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  120. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  121. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  122. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  123. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  124. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,
  125. 0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0xC0,0x00,0x00,
  126. 0x00,0x12,0x0A,0x07,0x02,0x7F,0x02,0x07,0x0A,0x12,0x00,0x00,0x00,0x0B,0x0A,0x0A,
  127. 0x0A,0x7F,0x0A,0x0A,0x0A,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  128. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  129. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  130. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  131. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  132. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40,
  133. 0x40,0x50,0x20,0x5F,0x80,0x00,0x1F,0x20,0x40,0x40,0x40,0x50,0x20,0x5F,0x80,0x00,
  134. };
  135. /**********************************************
  136. //IIC Start
  137. **********************************************/
  138. void IIC_Start()
  139. {
  140.    SCL = high;
  141.    //Delay_us(1);               
  142.    SDA = high;
  143.    //Delay_us(1);
  144.    SDA = low;
  145.   // Delay_us(1);
  146.    SCL = low;
  147.   // Delay_us(1);
  148. }

  149. /**********************************************
  150. //IIC Stop
  151. **********************************************/
  152. void IIC_Stop()
  153. {
  154.    SCL = low;
  155.    //Delay_us(1);
  156.    SDA = low;
  157.    //Delay_us(1);
  158.    SCL = high;
  159.    //Delay_us(1);
  160.    SDA = high;
  161.    //Delay_us(1);
  162. }
  163. /**********************************************
  164. // IIC Write byte
  165. **********************************************/
  166. void Write_IIC_Byte(unsigned char IIC_Byte)
  167. {
  168.         unsigned char i;
  169.         for(i=0;i<8;i++)               
  170.         {
  171.                 if(IIC_Byte & 0x80)                //1?0?
  172.                 SDA=high;
  173.                 else
  174.                 SDA=low;
  175.                 //Delay_us(1);
  176.                 SCL=high;
  177.                 //Delay_us(1);
  178.                 SCL=low;
  179.                 //Delay_us(1);
  180.                 IIC_Byte<<=1;                        //loop
  181.         }
  182.         SDA=1;
  183.         //Delay_us(1);
  184.         SCL=1;
  185.         //Delay_us(1);
  186.         SCL=0;
  187.         //Delay_us(1);
  188. }
  189. /**********************************************
  190. // IIC Write Command
  191. **********************************************/
  192. void Write_IIC_Command(unsigned char IIC_Command)
  193. {
  194.    IIC_Start();
  195.    Write_IIC_Byte(0x78);            //Slave address,SA0=0
  196.    Write_IIC_Byte(0x00);                        //write command
  197.    Write_IIC_Byte(IIC_Command);
  198.    IIC_Stop();
  199. }
  200. /**********************************************
  201. // IIC Write Data
  202. **********************************************/
  203. void Write_IIC_Data(unsigned char IIC_Data)
  204. {
  205.    IIC_Start();
  206.    Write_IIC_Byte(0x78);                       
  207.    Write_IIC_Byte(0x40);                        //write data
  208.    Write_IIC_Byte(IIC_Data);
  209.    IIC_Stop();
  210. }
  211. /********************************************
  212. // fill_Picture
  213. ********************************************/
  214. void fill_picture(unsigned char fill_Data)
  215. {
  216.         unsigned char m,n;
  217.         for(m=0;m<8;m++)
  218.         {
  219.                 Write_IIC_Command(0xb0+m);                //page0-page1
  220.                 Write_IIC_Command(0x00);                //low column start address
  221.                 Write_IIC_Command(0x10);                //high column start address
  222.                 for(n=0;n<128;n++)
  223.                         {
  224.                                 Write_IIC_Data(fill_Data);
  225.                         }
  226.         }
  227. }
  228. /******************************************
  229. // picture
  230. ******************************************/
  231. void picture_1()
  232. {
  233.   unsigned char x,y;
  234.   unsigned int i=0;
  235.   for(y=0;y<8;y++)
  236.     {
  237.       Write_IIC_Command(0xb0+y);
  238.       Write_IIC_Command(0x00);
  239.       Write_IIC_Command(0x10);
  240.       for(x=0;x<128;x++)
  241.         {
  242.           Write_IIC_Data(show1[i++]);
  243.         }
  244.     }
  245. }

  246. /***********************Delay****************************************/
  247. void Delay_50ms(unsigned int Del_50ms)                //
  248. {
  249.         unsigned int m;
  250.         for(;Del_50ms>0;Del_50ms--)
  251.                 for(m=6245;m>0;m--);
  252. }

  253. void Delay_1ms(unsigned int Del_1ms)                //
  254. {
  255.         unsigned char j;
  256.         while(Del_1ms--)
  257.         {       
  258.                 for(j=0;j<123;j++);
  259.         }
  260. }
  261. /*******************************Main*******************************/
  262. void main(void)
  263. {
  264.                         //
  265.         Initial_LY096BG30();
  266.         Delay_1ms(5);
  267.         while(1)
  268.         {
  269.                 fill_picture(0xff);        Delay_50ms(25);
  270.                 fill_picture(0xf0);        Delay_50ms(25);
  271.                 Picture_1();                Delay_50ms(25);
  272.         }
  273. }
复制代码

所有资料51hei提供下载:
中景园电子0.96OLED显示屏_C51系列_IIC无应答_例程.rar (41.82 KB, 下载次数: 179)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:621862 发表于 2020-3-29 19:54 | 只看该作者
void Initial_LY096BG30() 这是什么
回复

使用道具 举报

板凳
ID:149389 发表于 2020-4-9 17:00 | 只看该作者
仿真通过,留帖备用。


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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