找回密码
 立即注册
查看: 1395|回复: 2

stc8H驱动ssd1315OLED屏怎么做啊,大佬们帮我看看

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2024-07-17 19:39:42

9

主题

22

回帖

203

积分

中级会员

积分
203
发表于 2023-5-25 10:30:36 | 显示全部楼层 |阅读模式
  1. #include "STC8Hxxx.h"
  2. #include <stdio.h>
  3. #include <INTRINS.H>
  4. #define Uchar unsigned char
  5. #define Uint  unsigned int
  6. #define Ulong unsigned long
  7. #define uchar unsigned char
  8. #define uint  unsigned int
  9. #define LOG 1
  10. sbit ENC_A = P1^5;
  11. sbit ENC_B = P1^7;
  12. sbit ENC_SW = P1^6;
  13. sbit led = P3^4;
  14. void GPIO_Init (void);
  15. void Uart_Init(void);
  16. void IIC_Init(void);
  17. void ADC_Init(void);
  18. code color13[]={
  19. /*------------------------------------------------------------------------------
  20. ;  ???? / ???? : C:\Documents and Settings\Administrator\????\???????? (2)\logo.bmp???
  21. ;  ????????????: 128??64
  22. ------------------------------------------------------------------------------*/
  23. //0x80,0x40,0x10,//??????????,????????????????????????????????
  24. 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  25. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  26. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  27. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  28. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  29. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  30. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  31. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  32. 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33. 0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x18,0x48,0x28,0xC8,0x08,0x28,0x48,0x18,0x00,
  34. 0x40,0x40,0xFC,0x40,0x40,0xFC,0x00,0x00,0xF8,0x00,0x00,0xFC,0x00,0x40,0x40,0xA0,
  35. 0x90,0x88,0x84,0x88,0x90,0x20,0x40,0x40,0x00,0x00,0x40,0x44,0xD8,0x20,0xF0,0xAC,
  36. 0xA8,0xE8,0xB8,0xA8,0xE0,0x00,0x00,0x00,0xC0,0x7C,0x54,0x54,0x54,0x54,0x54,0x54,
  37. 0x7C,0x40,0x40,0x00,0x00,0xF0,0x90,0x90,0x90,0xFC,0x90,0x90,0x90,0xF0,0x00,0x00,
  38. 0x00,0x80,0x88,0x88,0x88,0x88,0x88,0xE8,0xA8,0x98,0x8C,0x88,0x80,0x00,0x00,0x00,
  39. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  40. 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  41. 0x00,0x00,0x00,0x04,0x3E,0x01,0x10,0x11,0x09,0x05,0x3F,0x05,0x09,0x11,0x11,0x00,
  42. 0x08,0x18,0x0F,0x24,0x14,0x0F,0x00,0x00,0x0F,0x00,0x00,0x3F,0x00,0x20,0x22,0x2A,
  43. 0x32,0x22,0x3F,0x22,0x32,0x2A,0x22,0x20,0x00,0x00,0x20,0x10,0x0F,0x10,0x28,0x24,
  44. 0x23,0x20,0x2F,0x28,0x2A,0x2C,0x00,0x30,0x0F,0x04,0x3D,0x25,0x15,0x15,0x0D,0x15,
  45. 0x2D,0x24,0x24,0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x24,0x24,0x24,0x27,0x20,0x38,
  46. 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  47. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  48. 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  49. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  50. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  51. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  52. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  53. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  54. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  55. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
  56. 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  57. 0x01,0x01,0x01,0x81,0x41,0x21,0x21,0x61,0x01,0x01,0x21,0xE1,0xE1,0x01,0xE1,0xE1,
  58. 0x21,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x21,0xE1,0x21,0x21,0x21,0x61,0x01,0x01,
  59. 0x21,0x21,0xE1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  60. 0x01,0x01,0x01,0x01,0x01,0x01,0xC1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  61. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  62. 0x01,0x01,0x01,0x21,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
  63. 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  64. 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65. 0x00,0x00,0x00,0x0F,0x10,0x20,0x24,0x1C,0x04,0x00,0x20,0x3F,0x01,0x3E,0x01,0x3F,
  66. 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x22,0x22,0x27,0x30,0x00,0x00,
  67. 0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x1E,0x25,0x25,0x25,0x16,0x00,0x00,0x1E,0x21,
  68. 0x21,0x21,0x13,0x00,0x01,0x01,0x1F,0x21,0x21,0x00,0x00,0x00,0x21,0x3F,0x22,0x21,
  69. 0x01,0x00,0x00,0x1E,0x21,0x21,0x21,0x1E,0x00,0x21,0x3F,0x22,0x01,0x01,0x3E,0x20,
  70. 0x00,0x21,0x21,0x3F,0x20,0x20,0x00,0x00,0x1E,0x21,0x21,0x21,0x13,0x00,0x00,0x00,
  71. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  72. 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  73. 0x00,0x00,0x00,0xF0,0x08,0x04,0x04,0x04,0x0C,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,
  74. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0x04,0x00,
  76. 0x00,0x00,0x00,0x00,0x0C,0x04,0xFC,0x04,0x0C,0x00,0x04,0xFC,0x04,0x04,0x08,0xF0,
  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,0x00,0x00,
  79. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  80. 0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  81. 0x80,0x80,0x80,0x81,0x82,0x84,0x84,0x84,0x82,0x80,0x81,0x82,0x84,0x84,0x82,0x81,
  82. 0x80,0x80,0x86,0x86,0x80,0x80,0x80,0x80,0x80,0x85,0x83,0x80,0x80,0x80,0x80,0x80,
  83. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x87,0x84,0x84,
  84. 0x84,0x86,0x80,0x80,0x80,0x84,0x87,0x84,0x80,0x80,0x84,0x87,0x84,0x84,0x82,0x81,
  85. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  86. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  87. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
  88. };
  89. code color14[]={
  90. /*--  ????????????F:\????\8051\OLED1\abcd.bmp  --*/
  91. /*--  ????x???=128x64  --*/
  92. 0x00,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x04,0xFC,0x04,0x00,0x00,0x00,
  93. 0x00,0x04,0xFC,0x44,0x44,0xE4,0x0C,0x00,0x04,0xFC,0x04,0x04,0x08,0xF0,0x00,0xA8,
  94. 0xAE,0x98,0xFF,0xAC,0x8A,0x10,0xFC,0x0B,0x88,0x78,0x08,0x00,0x88,0x86,0x92,0x92,
  95. 0x92,0x92,0xD3,0xB2,0x92,0x82,0x8A,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  96. 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x82,0xF2,0x92,0x97,0x92,0xFA,0x92,0x97,0xF2,
  97. 0x82,0x82,0x00,0x04,0x04,0x04,0x1C,0x64,0x85,0x06,0xC4,0x3C,0x04,0x04,0x04,0x00,
  98. 0x00,0x80,0x3E,0x2A,0xEA,0x2A,0x2A,0xEA,0x2A,0x3F,0x82,0x00,0x00,0x00,0x10,0x12,
  99. 0xD2,0x12,0x12,0xF2,0x12,0x52,0x93,0x1A,0x10,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
  100. 0x00,0x00,0x00,0x01,0xC2,0x04,0xC4,0x02,0x81,0x40,0x44,0x47,0x84,0x04,0x04,0x06,
  101. 0x00,0x04,0x07,0x04,0x04,0x84,0xC6,0x00,0x04,0x07,0x84,0x44,0x42,0x41,0x80,0x08,
  102. 0x88,0x45,0x42,0x42,0x85,0x08,0x04,0x03,0x82,0xC4,0x08,0x00,0xC0,0x40,0x40,0x40,
  103. 0x40,0x08,0x8F,0x40,0x40,0xC0,0x00,0x00,0xC0,0x40,0x41,0xC2,0x46,0x00,0x80,0x40,
  104. 0x40,0x40,0x80,0x00,0x80,0x40,0x48,0x48,0x88,0x04,0x82,0x41,0x40,0x41,0x82,0x04,
  105. 0x08,0x08,0x00,0x08,0x08,0x08,0x44,0xC4,0x02,0x01,0x02,0x04,0x04,0x08,0x08,0x00,
  106. 0x08,0x08,0x09,0x0A,0x0F,0x48,0xC8,0x0F,0x0A,0x09,0xCC,0x08,0x00,0x04,0x42,0xC1,
  107. 0x40,0x40,0x88,0x0F,0x80,0x40,0x40,0x41,0xC6,0x00,0x40,0xC6,0x46,0x40,0x80,0x00,
  108. 0x00,0x00,0x09,0x3D,0x0B,0x3D,0x0B,0x09,0x03,0x34,0x24,0x24,0x1F,0x00,0x00,0x00,
  109. 0x21,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x31,0x28,0x24,0x22,0x21,0x00,
  110. 0x10,0x20,0x22,0x22,0x1D,0x00,0x04,0x0B,0x08,0x3F,0x28,0x00,0x13,0x22,0x22,0x22,
  111. 0x1C,0x00,0x1F,0x22,0x22,0x22,0x1C,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x1D,0x22,
  112. 0x22,0x22,0x1D,0x00,0x03,0x34,0x24,0x24,0x1F,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00,
  113. 0x00,0x14,0x2A,0x2A,0x3C,0x20,0x00,0x3F,0x22,0x22,0x1C,0x00,0x00,0x1C,0x22,0x22,
  114. 0x26,0x00,0x00,0x1C,0x22,0x22,0x3F,0x20,0x20,0x3E,0x09,0x0F,0x38,0x20,0x20,0x3F,
  115. 0x22,0x22,0x1D,0x00,0x1F,0x20,0x20,0x20,0x10,0x00,0x20,0x3F,0x20,0x20,0x1F,0x00,
  116. 0x00,0x00,0x88,0xE8,0x9E,0xC8,0xBE,0x88,0x00,0x00,0x00,0x04,0xFE,0x00,0x00,0x00,
  117. 0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
  118. 0x04,0xFE,0x00,0x00,0x00,0x00,0x0C,0x82,0x42,0x22,0x1C,0x00,0x00,0x04,0x02,0x12,
  119. 0x12,0xEC,0x00,0x40,0xB0,0x88,0x84,0xFE,0x00,0x00,0x00,0xBE,0x12,0x12,0x12,0xE2,
  120. 0x00,0x00,0xF8,0x24,0x12,0x12,0xE6,0x00,0x00,0x20,0x90,0x50,0x50,0xE0,0x00,0x02,
  121. 0xFE,0x10,0x10,0x10,0xE0,0x00,0x00,0xE0,0x10,0x10,0x10,0x30,0x00,0x00,0xE0,0x10,
  122. 0x10,0x12,0xFE,0x00,0x00,0x80,0x78,0x46,0x78,0x80,0x00,0x02,0xFE,0x12,0x12,0x12,
  123. 0xEC,0x00,0xF8,0x04,0x02,0x02,0x02,0x06,0x00,0x02,0xFE,0x02,0x02,0x04,0xF8,0x00,
  124. 0x40,0xC0,0x78,0x43,0xC0,0x7B,0x40,0x00,0x00,0x10,0x10,0xFA,0x03,0x02,0x00,0x00,
  125. 0x00,0x71,0x0A,0x0A,0x0A,0x89,0x70,0x00,0x00,0x03,0x03,0xC0,0xC0,0x00,0x00,0x00,
  126. 0x02,0x13,0x12,0xF8,0x00,0x00,0x03,0x02,0x02,0x72,0x0A,0x08,0x08,0x89,0x72,0x02,
  127. 0x02,0x31,0x08,0x88,0x88,0x48,0x32,0x03,0x02,0x00,0xC0,0x21,0x12,0xFA,0x02,0x01,
  128. 0x00,0xF8,0x09,0x8A,0x8A,0x0A,0x09,0x00,0x00,0xE1,0x12,0x8A,0x8A,0x1B,0x02,0x00,
  129. 0x03,0x02,0x82,0x82,0x81,0x80,0x00,0x01,0x0A,0xFA,0x02,0x81,0x80,0x00,0x01,0x02,
  130. 0x02,0x02,0x03,0x82,0x82,0x83,0x02,0x00,0x02,0x03,0xC2,0x3A,0xE3,0x02,0x02,0x02,
  131. 0x09,0xF8,0x88,0x89,0x8A,0x72,0x02,0x01,0xC0,0x32,0x0B,0x0A,0x0A,0x09,0x38,0x00,
  132. 0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
  133. 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
  134. 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
  135. 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
  136. 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
  137. 0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,
  138. 0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
  139. 0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
  140. 0x10,0x90,0xFE,0x10,0x10,0x90,0xFE,0x10,0x00,0x00,0x00,0x04,0x04,0xFE,0x00,0x00,
  141. 0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x04,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
  142. 0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFE,0x00,0x00,0x00,0x00,
  143. 0x00,0x00,0x1C,0x02,0x02,0x02,0x02,0xC2,0x3C,0x00,0x00,0x00,0x1C,0x02,0x42,0x42,
  144. 0x62,0x9C,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x40,0x40,0x80,0x00,0x00,0x00,
  145. 0x02,0xFE,0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x80,
  146. 0x00,0x00,0x00,0x00,0x00,0x80,0x78,0x06,0x78,0x80,0x00,0x00,0x00,0x00,0x02,0xFE,
  147. 0x42,0x42,0x42,0x62,0x9C,0x00,0x00,0x00,0xF0,0x08,0x04,0x02,0x02,0x02,0x04,0x0E,
  148. 0x04,0x3F,0x04,0x04,0x04,0x3F,0x04,0x04,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,
  149. 0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x22,0x22,0x3F,0x22,0x22,0x00,0x00,0x00,0x00,
  150. 0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
  151. 0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x38,0x00,0x00,0x00,0x1C,0x20,0x20,0x20,
  152. 0x20,0x10,0x0F,0x00,0x00,0x00,0x19,0x24,0x24,0x22,0x22,0x22,0x3F,0x20,0x30,0x00,
  153. 0x00,0x3F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x11,
  154. 0x08,0x00,0x00,0x20,0x38,0x27,0x02,0x02,0x02,0x27,0x38,0x20,0x00,0x00,0x20,0x3F,
  155. 0x20,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x07,0x18,0x20,0x20,0x20,0x20,0x10,0x0C,
  156. };
  157. void Delay1000ms()                //@12.000MHz
  158. {
  159.         unsigned char data i, j, k;
  160.         _nop_();
  161.         _nop_();
  162.         i = 61;
  163.         j = 225;
  164.         k = 62;
  165.         do
  166.         {
  167.                 do
  168.                 {
  169.                         while (--k);
  170.                 } while (--j);
  171.         } while (--i);
  172. }
  173. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  174. //  Pin Definition
  175. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  176. //sbit SCL3        = P3^2;                                // Serial Clock Input
  177. //sbit SDA3        = P3^3;                                // Serial Data Input
  178. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  179. void delay_ms(Uint t)
  180. {
  181.         Uchar i,j;
  182.         while(--t)
  183.         {
  184.         i=50;       
  185.         j=100;
  186.                 while(--j)
  187.                         while(--i);
  188.         }
  189. }
  190. void uDelay(Uchar l)
  191. {
  192.         while(l--);
  193. }
  194. //void Delay(Uchar n)
  195. //{
  196. //Uchar i,j,k;
  197. //
  198. //        for(k=0;k<n;k++)
  199. //        {
  200. //                for(i=0;i<131;i++)
  201. //                {
  202. //                        for(j=0;j<15;j++)
  203. //                        {
  204. //                                uDelay(203);       
  205. //                        }
  206. //                }
  207. //        }
  208. //}
  209. //这是例程里的代码是可以用的
  210. //****************************************************************************
  211. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  212. //  Read/Write Sequence
  213. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  214. //void I2C_3(Uchar mcmd)
  215. //{
  216. //Uchar length = 8;                        // Send Command
  217. //
  218. //        while(length--)
  219. //        {
  220. //                if(mcmd & 0x80)
  221. //                {
  222. //                        SDA3=1;
  223. //                }
  224. //                else
  225. //                {
  226. //                        SDA3=0;
  227. //                }
  228. ////                uDelay(3);
  229. //                SCL3=1;
  230. ////                uDelay(3);
  231. //                SCL3=0;
  232. ////                uDelay(3);
  233. //                mcmd = mcmd << 1;
  234. //        }
  235. //}
  236. //
  237. //
  238. //void I2C_Ack3()
  239. //{
  240. //        SDA3=1;
  241. ////        uDelay(3);
  242. //        SCL3=1;
  243. ////        uDelay(3);
  244. //        SCL3=0;
  245. ////        uDelay(3);
  246. //}
  247. //
  248. //
  249. //void I2C_NAck3()
  250. //{
  251. //        SDA3=0;
  252. ////        uDelay(3);
  253. //        SCL3=1;
  254. ////        uDelay(3);
  255. //        SCL3=0;
  256. ////        uDelay(3);
  257. //}
  258. //
  259. //
  260. //void I2C_Start3()
  261. //{
  262. //        SDA3=0;
  263. ////        uDelay(3);
  264. //        SCL3=1;
  265. ////        uDelay(3);
  266. //        SCL3=0;
  267. ////        uDelay(3);
  268. //        I2C_3(0x78);
  269. //        I2C_Ack3();
  270. //}
  271. //
  272. //
  273. //void I2C_Stop3()
  274. //{
  275. //        SCL3=1;
  276. ////        uDelay(5);
  277. //        SDA3=0;
  278. ////        uDelay(5);
  279. //        SDA3=1;
  280. ////        uDelay(5);
  281. //}
  282. //
  283. //
  284. //void Write_Command3(Uchar Data)
  285. //{
  286. //        I2C_Start3();
  287. //        I2C_3(0x00);
  288. //        I2C_Ack3();
  289. //        I2C_3(Data);
  290. //        I2C_Ack3();
  291. //        I2C_Stop3();
  292. //}
  293. //
  294. //
  295. //void Write_Data3(Uchar Data)
  296. //{
  297. //        I2C_Start3();
  298. //        I2C_3(0x40);
  299. //        I2C_Ack3();
  300. //        I2C_3(Data);
  301. //        I2C_Ack3();
  302. //        I2C_Stop3();
  303. //}
  304. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  305. bit busy;
  306. void Start()
  307. {
  308.     busy = 1;
  309.     I2CMSCR = 0x81;                             //����START����
  310.     while (busy);
  311. }
  312. void SendData(char dat)
  313. {
  314.     I2CTXD = dat;                               //д���ݵ����ݻ�����
  315.     busy = 1;
  316.     I2CMSCR = 0x82;                             //����SEND����
  317.     while (busy);
  318. }
  319. void RecvACK()
  320. {
  321.     busy = 1;
  322.     I2CMSCR = 0x83;                             //����ACK����
  323.     while (busy);
  324. }
  325. char RecvData()
  326. {
  327.     busy = 1;
  328.     I2CMSCR = 0x84;                             //����RECV����
  329.     while (busy);
  330.     return I2CRXD;
  331. }
  332. void SendACK()
  333. {
  334.     I2CMSST = 0x00;                             //����ACK�ź�
  335.     busy = 1;
  336.     I2CMSCR = 0x85;                             //����ACK����
  337.     while (busy);
  338. }
  339. void SendNAK()
  340. {
  341.     I2CMSST = 0x01;                             //����NAK�ź�
  342.     busy = 1;
  343.     I2CMSCR = 0x85;                             //����ACK����
  344.     while (busy);
  345. }
  346. void Stop()
  347. {
  348.     busy = 1;
  349.     I2CMSCR = 0x86;                             //����STOP����
  350.     while (busy);
  351. }
  352. void Delay()
  353. {
  354.     int i;
  355.     for (i=0; i<3000; i++)
  356.     {
  357.         _nop_();
  358.         _nop_();
  359.         _nop_();
  360.         _nop_();
  361.     }
  362. }
  363. void Write_Command3(Uchar Data)     //дָ��
  364. {
  365.         Start();
  366.         SendData(0x00);
  367.         RecvACK();
  368.         SendData(Data);
  369.         RecvACK();
  370.         Stop();
  371. }
  372. void Write_Data3(u8 addr, u8 *p, u8 number)  /*  WordAddress,First Data Address,Byte lenth   */
  373. {
  374.         EAXSFR();                /* MOVX A,@DPTR/MOVX @DPTR,A???????????????SFR(XSFR) */
  375.         Start();                                //???????????
  376.         SendData(0x00);                         //?????��???+��????
  377.         RecvACK();
  378.         SendData(addr);                         //????��???
  379.         RecvACK();
  380.         do
  381.         {
  382.                 SendData(*p++);
  383.                 RecvACK();
  384.         }
  385.         while(--number);
  386.         Stop();                                 //??????????
  387.         EAXRAM();                /* MOVX A,@DPTR/MOVX @DPTR,A???????????????RAM(XRAM) */
  388. }
  389. void LCD_Init3(void)
  390. {
  391.     Write_Command3(0xae);        //--turn off oled panel
  392.     Write_Command3(0x00);        //--set low column address
  393.     Write_Command3(0x10);        //--set high column address
  394.     Write_Command3(0x40);        //--set start line address
  395.     Write_Command3(0xb0);        //--set page address
  396.     Write_Command3(0x81);        //--set contrast control register
  397.     Write_Command3(0xff);
  398.     Write_Command3(0xa1);        //--set segment re-map 127 to 0   a0:0 to seg127
  399.     Write_Command3(0xa6);        //--set normal display
  400.     Write_Command3(0xc9);        //--set com(N-1)to com0  c0:com0 to com(N-1)
  401.     Write_Command3(0xa8);        //--set multiples ratio(1to64)
  402.     Write_Command3(0x3f);        //--1/64 duty
  403.     Write_Command3(0xd3);        //--set display offset
  404.     Write_Command3(0x00);        //--not offset
  405.     Write_Command3(0xd5);        //--set display clock divide ratio/oscillator frequency
  406.     Write_Command3(0x80);        //--set divide ratio
  407.     Write_Command3(0xd9);        //--set pre-charge period
  408.     Write_Command3(0xf1);
  409.     Write_Command3(0xda);        //--set com pins hardware configuration
  410.     Write_Command3(0x12);
  411.     Write_Command3(0xdb);        //--set vcomh
  412.     Write_Command3(0x40);
  413.     Write_Command3(0x8d);        //--set chare pump enable/disable
  414.     Write_Command3(0x14);        //--set(0x10) disable
  415.     //Write_Command3(0x10);        //--set(0x10) disable
  416.     Write_Command3(0xaf);        //--turn on oled panel
  417. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=void         LCD_Init(void)
  418. }
  419. //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  420. void pic13(void)
  421. {
  422.         Uchar i,j;
  423.         Uint k;
  424.         k=0;
  425.         for(j=0;j<8;j++)
  426.         {
  427.                 Write_Command3(0x22);//--set page1
  428.                 Write_Command3(j);//--set start page
  429.                 Write_Command3(0x07);//--set end page
  430.                 for(i=0;i<128;i++)                                                  //???????????LCD
  431.                 {
  432.                         Write_Data3(0,&color13[k],8);
  433.                         k=k+1;
  434.                
  435.                 }
  436.         }
  437. }
  438. //
  439. //
  440. //void pic14(void)
  441. //{
  442. //        Uchar i,j;
  443. //        Uint k;
  444. //        k=0;
  445. //        for(j=0;j<8;j++)
  446. //        {
  447. //                Write_Command3(0x22);//--set page1
  448. //                Write_Command3(j);//--set start page
  449. //                Write_Command3(0x07);//--set end page
  450. //
  451. //                 for(i=0;i<128;i++)                                                  //???????????LCD
  452. //                {
  453. //                        Write_Data3(color14[k]);
  454. //                        k=k+1;
  455. //               
  456. //                }
  457. //        }
  458. //}
  459.                
  460. void main (void)
  461. {   
  462.     GPIO_Init();
  463.     Uart_Init();
  464.     IIC_Init();
  465. //    ADC_Init();
  466.     LCD_Init3();
  467.     led = 0;
  468.     Delay1000ms();
  469.     led = 1;
  470.     Delay1000ms();
  471.     led = 0;
  472.     EA = 1;
  473. //        TI = 1;
  474. //        printf("��ʼ�����\n");
  475. //        TI = 0;
  476.     pic13();  
  477.         
  478.     while (1)  
  479.     {
  480.         /* code */
  481.     }
  482.    
  483.        
  484. }
  485.        
  486. void GPIO_Init (void)
  487. {
  488.     //����IO����ģʽ
  489.     P0M0 = 0x00; P0M1 = 0x00;
  490.     P1M0 = 0x14; P1M1 = 0x08;
  491.     P2M0 = 0x00; P2M1 = 0x00;
  492.     P3M0 = 0x10; P3M1 = 0x80;
  493.     P4M0 = 0x00; P4M1 = 0x00;
  494.     P5M0 = 0x00; P5M1 = 0x00;
  495.     P6M0 = 0x00; P6M1 = 0x00;
  496.     P7M0 = 0x00; P7M1 = 0x00;
  497.     P1PU = 0xe0;
  498.     P1NCS = 0x00;
  499.     P1IE = 0xff;
  500.     P_SW2 |= 0x80;                              //ʹ�ܷ���XFR
  501.     P_SW2 |= 0x30;                               //�л�����SCL_4/P3.2, SDA_4/P3.3
  502. }
  503. void Uart_Init(void)                //115200bps@22.1184MHz
  504. {
  505.         SCON = 0x50;                //8λ����,�ɱ䲨����
  506.         AUXR |= 0x40;                //��ʱ��ʱ��1Tģʽ
  507.         AUXR &= 0xFE;                //����1ѡ��ʱ��1Ϊ�����ʷ�����
  508.         TMOD &= 0x0F;                //���ö�ʱ��ģʽ
  509.         TL1 = 0xD0;                        //���ö�ʱ��ʼֵ
  510.         TH1 = 0xFF;                        //���ö�ʱ��ʼֵ
  511.         ET1 = 0;                        //��ֹ��ʱ���ж�
  512.     ES = 1;             //ʹ�ܴ����ж�
  513.         TR1 = 1;                        //��ʱ��1��ʼ��ʱ
  514. }
  515. void IIC_Init(void)
  516. {
  517.     P_SW2 |= 0x80;                              //ʹ�ܷ���XFR
  518.     I2CCFG |= 0x80;                             //����I2C����  
  519.     I2CCFG |= 0x40;                             //ʹ��I2C����ģʽ
  520.     I2CCFG |= 0x3f;                             //���������ٶ�
  521.     I2CMSCR = 0x80;                             //ʹ��I2C�ж�;
  522.     I2CMSAUX = 0x00;                            //�����Զ�����
  523. }
  524. void ADC_Init(void)
  525. {
  526.     ADCTIM = 0x3f;                              //����ADC�ڲ�ʱ��
  527.     P_SW2 &= 0x7f;
  528.     ADCCFG = 0x00;
  529.     ADC_CONTR = 0xc0;                           //ʹ�ܲ�����ADCģ��
  530.     EADC = 1;                                   //ʹ��ADC�ж�
  531. //    EA = 1;
  532. }
  533. //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  534. void UART1_Isr() interrupt 4
  535. {
  536. //   if (TI)
  537. //  {
  538. //      TI = 0;                                 //���жϱ�־
  539. //                                   //���ӷ��ʹ���
  540. //
  541. //  }
  542.     if (RI)
  543.     {
  544.         RI = 0;                                 //���жϱ�־
  545.       
  546.     }
  547. }
  548. void I2C_Isr() interrupt 24
  549. {
  550.     _push_(P_SW2);
  551.     P_SW2 |= 0x80;
  552.     if (I2CMSST & 0x40)
  553.     {
  554.         I2CMSST &= ~0x40;                       //���жϱ�־
  555.         led = !led;                             //���Զ˿�
  556.         busy = 0;
  557.     }
  558.     _pop_(P_SW2);
  559. }
  560. void ADC_Isr() interrupt 5
  561. {
  562.     ADC_CONTR &= ~0x20;                         //���жϱ�־
  563.     P0 = ADC_RES;                               //���Զ˿�
  564.     P2 = ADC_RESL;                              //���Զ˿�
  565. }
  566. MCU:STC8H1K08
复制代码

0.96寸新款白光2022年5月6日更新.rar

4.05 MB, 下载次数: 79

屏幕资料

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2024-07-17 19:39:42

9

主题

22

回帖

203

积分

中级会员

积分
203
发表于 2023-5-25 10:36:26 | 显示全部楼层
本帖最后由 liuyuhe 于 2023-5-25 10:38 编辑

MCU:STC8H1K08
屏幕:ssd1315
屏幕例程给的是软件模拟I2C,我想改成用硬件中断做的,好久没搞了不知道这个有啥问题,逻辑分析仪抓到的只有一个起始信号,仿真的时候  recvack() 被跳过了没有执行

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16651
发表于 2023-5-25 10:36:34 | 显示全部楼层
老刘爱捣鼓示波器,OLED12864的程序看过吗 ?
在开天斧程序包中下载

1.png

2.png

3.png

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 07:50 , Processed in 0.124554 second(s), 62 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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