找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4828|回复: 4
收起左侧

单片机计数器 0.96SPI OLED显示 Keil c51程序 带AD画的原理图

[复制链接]
ID:171359 发表于 2017-3-21 12:27 | 显示全部楼层 |阅读模式
上次比赛做的计数器,采用0.96SPI OLED显示屏幕 2个程序是不同按键情况。

原理图(用ad软件画的)
51hei.png

接线说明:

   GND          地
   VCC          3.3V或者5V
   D0(SCL)      P1^0
   D1(SDA)      P1^1
   RST(RES)     P1^2
   DC(DC)       P1^3
   CS           若无需用到CS脚,可以不接,电路已经默认选中
                若用到CS脚,低电平有效

单片机源程序:

  1. #include "reg52.h"
  2. #include<intrins.h>
  3. #define high 1
  4. #define low 0
  5. /*************Pin Define***************/
  6. sbit RES=P1^2;
  7. sbit DC=P1^3;
  8. sbit SCL=P1^0;
  9. sbit SDA=P1^1;
  10. /****************************************************/
  11. void Initial_LY096BG30();
  12. void Delay_50ms(unsigned int Del_50ms);
  13. void Delay_1ms(unsigned int Del_1ms);
  14. void fill_picture(unsigned char fill_Data);
  15. void Picture_1();
  16. void Write_SPI_Command(unsigned char ucCmd);
  17. void Write_SPI_Data(unsigned char ucData);
  18. /***********************Initial code*********************/
  19. void Initial_LY096BG30()
  20. {
  21.         Write_SPI_Command(0xAE);   //display off
  22.         Write_SPI_Command(0x20);        //Set Memory Addressing Mode        
  23.         Write_SPI_Command(0x10);        //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
  24.         Write_SPI_Command(0xb0);        //Set Page Start Address for Page Addressing Mode,0-7
  25.         Write_SPI_Command(0xc8);        //Set COM Output Scan Direction
  26.         Write_SPI_Command(0x00);//---set low column address
  27.         Write_SPI_Command(0x10);//---set high column address
  28.         Write_SPI_Command(0x40);//--set start line address
  29.         Write_SPI_Command(0x81);//--set contrast control register
  30.         Write_SPI_Command(0x7f);
  31.         Write_SPI_Command(0xa1);//--set segment re-map 0 to 127
  32.         Write_SPI_Command(0xa6);//--set normal display
  33.         Write_SPI_Command(0xa8);//--set multiplex ratio(1 to 64)
  34.         Write_SPI_Command(0x3F);//
  35.         Write_SPI_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
  36.         Write_SPI_Command(0xd3);//-set display offset
  37.         Write_SPI_Command(0x00);//-not offset
  38.         Write_SPI_Command(0xd5);//--set display clock divide ratio/oscillator frequency
  39.         Write_SPI_Command(0xf0);//--set divide ratio
  40.         Write_SPI_Command(0xd9);//--set pre-charge period
  41.         Write_SPI_Command(0x22); //
  42.         Write_SPI_Command(0xda);//--set com pins hardware configuration
  43.         Write_SPI_Command(0x12);
  44.         Write_SPI_Command(0xdb);//--set vcomh
  45.         Write_SPI_Command(0x20);//0x20,0.77xVcc
  46.         Write_SPI_Command(0x8d);//--set DC-DC enable
  47.         Write_SPI_Command(0x14);//
  48.         Write_SPI_Command(0xaf);//--turn on oled panel
  49. }
  50. /***********************Picture Code**************************/
  51. unsigned char code show1[]=
  52. {
  53. 0x00,0x06,0x0A,0xFE,0x0A,0xC6,0x00,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x00,0x00,0x00,
  54. 0x00,0x00,0xFE,0x7D,0xBB,0xC7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC7,0xBB,0x7D,
  55. 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  56. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  57. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  58. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
  59. 0x0C,0xFE,0xFE,0x0C,0x08,0x20,0x60,0xFE,0xFE,0x60,0x20,0x00,0x00,0x00,0x78,0x48,
  60. 0xFE,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xBA,0xBA,0x82,0xFE,0x00,
  61. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  62. 0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  63. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  64. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  68. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,
  71. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,0x00,0x00,0xFE,0xFF,0x03,
  72. 0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0xC0,0xC0,
  73. 0xC0,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  74. 0xFF,0xFE,0x00,0x00,0xFE,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,
  75. 0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  76. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  77. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  78. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  79. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,
  80. 0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE1,0xE1,
  81. 0xE1,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  82. 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFF,
  83. 0xFF,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,0x0F,0x1F,
  87. 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,
  88. 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
  90. 0x1F,0x0F,0x00,0x00,0x0F,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,
  91. 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  92. 0x00,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,0xE2,0x92,0x8A,0x86,0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,
  96. 0x00,0xFE,0x00,0x82,0x92,0xAA,0xC6,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
  97. 0x7C,0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0xC0,0xC0,0x00,0x7C,0x82,0x82,0x82,
  98. 0x7C,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  99. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  100. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  101. 0x00,0x24,0xA4,0x2E,0x24,0xE4,0x24,0x2E,0xA4,0x24,0x00,0x00,0x00,0xF8,0x4A,0x4C,
  102. 0x48,0xF8,0x48,0x4C,0x4A,0xF8,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,0x00,0x00,
  104. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  105. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  106. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  107. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,
  108. 0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0xC0,0x00,0x00,
  109. 0x00,0x12,0x0A,0x07,0x02,0x7F,0x02,0x07,0x0A,0x12,0x00,0x00,0x00,0x0B,0x0A,0x0A,
  110. 0x0A,0x7F,0x0A,0x0A,0x0A,0x0B,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  114. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  115. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x40,
  116. 0x40,0x50,0x20,0x5F,0x80,0x00,0x1F,0x20,0x40,0x40,0x40,0x50,0x20,0x5F,0x80,0x00,
  117. };
  118. /*****************************************************************************
  119. 函 数 名  : LED_WrDat
  120. 功能描述  : 向OLED写数据
  121. 输入参数  : UCHAR8 ucData  
  122. 输出参数  : NONE
  123. 返 回 值  : NONE
  124. *****************************************************************************/
  125. void Write_SPI_Data(unsigned char ucData)
  126. {
  127.     unsigned char i = 8;
  128.     DC   = 1;
  129.     SCL  = 0;
  130.    
  131.     while (i--)
  132.     {
  133.         if (ucData & 0x80)
  134.         {
  135.             SDA = 1;
  136.         }
  137.         else
  138.         {
  139.             SDA = 0;
  140.         }
  141.         
  142.         SCL = 1;
  143.         _nop_();
  144.         SCL = 0;   
  145.         ucData <<= 1;   
  146.     }

  147.     return;
  148. }

  149. /*****************************************************************************
  150. 函 数 名  : LED_WrCmd
  151. 功能描述  : 向OLED写命令
  152. 输入参数  : UCHAR8 ucCmd  
  153. 输出参数  : NONE
  154. 返 回 值  : NONE
  155. *****************************************************************************/
  156. void Write_SPI_Command(unsigned char ucCmd)
  157. {
  158.     unsigned char i = 8;
  159.     DC   = 0;
  160.     SCL  = 0;
  161.     while (i--)
  162.     {
  163.         if (ucCmd & 0x80)
  164.         {
  165.             SDA = 1;
  166.         }
  167.         else
  168.         {
  169.             SDA = 0;
  170.         }
  171.         SCL = 1;
  172.         _nop_();           
  173.         SCL = 0;   
  174.         ucCmd <<= 1;   
  175.     }  

  176.     return;
  177. }

  178. /********************************************
  179. // fill_Picture
  180. ********************************************/
  181. void fill_picture(unsigned char fill_Data)
  182. {
  183.         unsigned char m,n;
  184.         for(m=0;m<8;m++)
  185.         {
  186.                 Write_SPI_Command(0xb0+m);                //page0-page1
  187.                 Write_SPI_Command(0x00);                //low column start address
  188.                 Write_SPI_Command(0x10);                //high column start address
  189.                 for(n=0;n<128;n++)
  190.                         {
  191.                                 Write_SPI_Data(fill_Data);
  192.                         }
  193.         }
  194. }
  195. /******************************************
  196. // picture
  197. ******************************************/
  198. void picture_1()
  199. {
  200.   unsigned char x,y;
  201.   unsigned int i=0;
  202.   for(y=0;y<8;y++)
  203.     {
  204.       Write_SPI_Command(0xb0+y);
  205.       Write_SPI_Command(0x00);
  206.       Write_SPI_Command(0x10);
  207.       for(x=0;x<128;x++)
  208.         {
  209.           Write_SPI_Data(show1[i++]);
  210.         }
  211.     }
  212. }


  213. /***********************Delay****************************************/
  214. void Delay_50ms(unsigned int Del_50ms)                //
  215. {
  216.         unsigned int m;
  217.         for(;Del_50ms>0;Del_50ms--)
  218.                 for(m=6245;m>0;m--);
  219. }

  220. void Delay_1ms(unsigned int Del_1ms)                //
  221. {
  222.         unsigned char j;
  223.         while(Del_1ms--)
  224.         {        
  225.                 for(j=0;j<123;j++);
  226.         }
  227. }
  228. /*******************************Main*******************************/
  229. void main(void)
  230. {
  231.         RES=0;
  232.         Delay_1ms(10);
  233.         
  234. …………余下代码请下载附件…………
复制代码
下载:
程序.7z (85.62 KB, 下载次数: 95)
回复

使用道具 举报

ID:202952 发表于 2017-5-20 19:41 | 显示全部楼层
好东西值得分享
回复

使用道具 举报

ID:120085 发表于 2017-8-6 21:50 | 显示全部楼层
OLED_Display_On(void);OLED_Display_On(void);
回复

使用道具 举报

ID:543424 发表于 2021-1-2 12:20 | 显示全部楼层
请问为什么我下载程序,只显示主画面菜单,按键只显示英文代码?
回复

使用道具 举报

ID:995178 发表于 2021-12-21 16:10 | 显示全部楼层
楼主这个计数器的触发是什么?看不出来
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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