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

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

[复制链接]
  • TA的每日心情
    郁闷
    2024-4-25 09:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    6

    主题

    16

    回帖

    116

    积分

    注册会员

    积分
    116
    发表于 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, 下载次数: 22

    屏幕资料

    回复 送花

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-4-25 09:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    6

    主题

    16

    回帖

    116

    积分

    注册会员

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

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

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9492

    回帖

    1万

    积分

    管理员

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

    1.png

    2.png

    3.png

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 20:06 , Processed in 0.077065 second(s), 40 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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