微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > IIC OLED驱动

IIC OLED驱动

时间:11-11 来源:互联网 点击:
  1. age(UCHAR8 d);
  2. VOIDSetCommonRemap(UCHAR8 d);
  3. VOIDSetDisplayOffset(UCHAR8 d);
  4. VOIDSetDisplayClock(UCHAR8 d);
  5. VOIDSetPrechargePeriod(UCHAR8 d);
  6. VOIDSetCommonConfig(UCHAR8 d);
  7. VOIDSetVCOMH(UCHAR8 d);
  8. VOIDSetNop(VOID);
  9. /*----------------------------------------------------------------------------*
  10. * 外部函数原型 *
  11. *----------------------------------------------------------------------------*/
  12. /**********************************************
  13. //IIC Start
  14. **********************************************/
  15. voidIIC_Start()
  16. {
  17. LED_SCL=1;
  18. //Delay_us(1);
  19. LED_SDA=1;
  20. //Delay_us(1);
  21. LED_SDA=0;
  22. // Delay_us(1);
  23. LED_SCL=0;
  24. // Delay_us(1);
  25. }
  26. /**********************************************
  27. //IIC Stop
  28. **********************************************/
  29. voidIIC_Stop()
  30. {
  31. LED_SCL=0;
  32. //Delay_us(1);
  33. LED_SDA=0;
  34. //Delay_us(1);
  35. LED_SCL=1;
  36. //Delay_us(1);
  37. LED_SDA=1;
  38. //Delay_us(1);
  39. }
  40. /**********************************************
  41. // IIC Write byte
  42. **********************************************/
  43. voidWrite_IIC_Byte(unsignedcharIIC_Byte)
  44. {
  45. unsignedchari;
  46. for(i=0;i<8;i++)
  47. {
  48. if(IIC_Byte&0x80)//1?0?
  49. LED_SDA=1;
  50. else
  51. LED_SDA=0;
  52. //Delay_us(1);
  53. LED_SCL=1;
  54. //Delay_us(1);
  55. LED_SCL=0;
  56. //Delay_us(1);
  57. IIC_Byte<=1;//loop
  58. }
  59. LED_SDA=1;
  60. //Delay_us(1);
  61. LED_SCL=1;
  62. //Delay_us(1);
  63. LED_SCL=0;
  64. //Delay_us(1);
  65. }
  66. /*****************************************************************************
  67. 函 数 名 : LED_WrDat
  68. 功能描述 : 向OLED写数据
  69. 输入参数 : UCHAR8 ucData
  70. 输出参数 : NONE
  71. 返 回 值 : NONE
  72. *****************************************************************************/
  73. VOIDLED_WrDat(UCHAR8 ucData)
  74. {
  75. IIC_Start();
  76. Write_IIC_Byte(0x78);
  77. Write_IIC_Byte(0x40);//write data
  78. Write_IIC_Byte(ucData);
  79. IIC_Stop();
  80. }
  81. /*****************************************************************************
  82. 函 数 名 : LED_WrCmd
  83. 功能描述 : 向OLED写命令
  84. 输入参数 : UCHAR8 ucCmd
  85. 输出参数 : NONE
  86. 返 回 值 : NONE
  87. *****************************************************************************/
  88. VOIDLED_WrCmd(UCHAR8 ucCmd)
  89. {
  90. IIC_Start();
  91. Write_IIC_Byte(0x78);//Slave address,SA0=0
  92. Write_IIC_Byte(0x00);//write command
  93. Write_IIC_Byte(ucCmd);
  94. IIC_Stop();
  95. }
  96. /*****************************************************************************
  97. 函 数 名 : LED_SetPos
  98. 功能描述 : 设置坐标
  99. 输入参数 : UCHAR8 ucIdxX
  100. UCHAR8 ucIdxY
  101. 输出参数 : NONE
  102. 返 回 值 : NONE
  103. *****************************************************************************/
  104. VOIDLED_SetPos(UCHAR8 ucIdxX,UCHAR8 ucIdxY)
  105. {
  106. LED_WrCmd(0xb0+ucIdxY);
  107. LED_WrCmd(((ucIdxX&0xf0)>>4)|0x10);
  108. LED_WrCmd((ucIdxX&0x0f)|0x00);
  109. }
  110. /*****************************************************************************
  111. 函 数 名 : LED_Fill
  112. 功能描述 : 对全屏写入同一个字符函数
  113. 如 LED_Fill(0x01); 对于某一位0为不亮 1为亮
  114. ------------------------------------------------------
  115. 共128列
  116. 1 1 1
  117. 共 0 0 0
  118. 8 0 0 0
  119. 组 0 ……0 ………… 0
  120. 字 0 0 0
  121. 符 0 0 0
  122. 即 0 0 0
  123. 8 0 0 0
  124. 页 1 1 1
  125. 64 0 0 0
  126. 行 . . .
  127. . . ………… .
  128. . . .
  129. . . .
  130. 0 0 0
  131. ------------------------------------------------------
  132. 输入参数 : UCHAR8 ucData
  133. 输出参数 : NONE
  134. 返 回 值 : NONE
  135. *****************************************************************************/
  136. VOIDLED_Fill(UCHAR8 ucData)
  137. {
  138. UCHAR8 ucPage,ucColumn;
  139. for(ucPage=0;ucPage<8;ucPage++)
  140. {
  141. LED_WrCmd(0xb0+ucPage);//0xb0+0~7表示页0~7
  142. LED_WrCmd(0x00);//0x00+0~16表示将128列分成16组其地址在某组中的第几列
  143. LED_WrCmd(0x10);//0x10+0~16表示将128列分成16组其地址所在第几组
  144. for(ucColumn=0;ucColumn<128;ucColumn++)
  145. {
  146. LED_WrDat(ucData);
  147. }
  148. }
  149. }
  150. VOIDSetStartColumn(UCHAR8 ucData)
  151. {
  152. LED_WrCmd(0x00+ucData%16);// Set Lower Column Start Address for Page Addressing Mode
  153. // Default => 0x00
  154. LED_WrCmd(0x10+ucData/16);// Set Higher Column Start Address for Page Addressing Mode
  155. // Default => 0x10
  156. }
  157. VOIDSetAddressingMode(UCHAR8 ucData)
  158. {
  159. LED_WrCmd(0x20);// Set Memory Addressing Mode
  160. LED_WrCmd(ucData);// Default =>LED_WrCmd(ucData

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top