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

IIC OLED驱动

时间:11-11 来源:互联网 点击:
  1. artLine(0x00);// Set Mapping RAM Display Start Line (0x00~0x3F)
  2. SetChargePump(0x04);// Enable Embedded DC/DC Converter (0x00/0x04)
  3. SetAddressingMode(0x02);// Set Page Addressing Mode (0x00/0x01/0x02)
  4. SetSegmentRemap(0x01);// Set SEG/Column Mapping 0x00左右反置 0x01正常
  5. SetCommonRemap(0x08);// Set COM/Row Scan Direction 0x00上下反置 0x08正常
  6. SetCommonConfig(0x10);// Set Sequential Configuration (0x00/0x10)
  7. SetContrastControl(0xCF);// Set SEG Output Current
  8. SetPrechargePeriod(0xF1);// Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
  9. SetVCOMH(0x40);// Set VCOM Deselect Level
  10. SetEntireDisplay(0x00);// Disable Entire Display On (0x00/0x01)
  11. SetInverseDisplay(0x00);// Disable Inverse Display On (0x00/0x01)
  12. SetDisplayOnOff(0x01);// Display On (0x00/0x01)
  13. LED_Fill(0x00);// 初始清屏
  14. LED_SetPos(0,0);
  15. return;
  16. }
  17. /*****************************************************************************
  18. 函 数 名 : LED_P6x8Char
  19. 功能描述 : 显示一个6x8标准ASCII字符
  20. 输入参数 : UCHAR8 ucIdxX 显示的横坐标0~122
  21. UCHAR8 ucIdxY 页范围0~7
  22. UCHAR8 ucData 显示的字符
  23. 输出参数 : NONE
  24. 返 回 值 : NONE
  25. *****************************************************************************/
  26. VOIDLED_P6x8Char(UCHAR8 ucIdxX,UCHAR8 ucIdxY,UCHAR8 ucData)
  27. {
  28. UCHAR8 i,ucDataTmp;
  29. ucDataTmp=ucData-32;
  30. if(ucIdxX>122)
  31. {
  32. ucIdxX=0;
  33. ucIdxY++;
  34. }
  35. LED_SetPos(ucIdxX,ucIdxY);
  36. for(i=0;i<6;i++)
  37. {
  38. LED_WrDat(F6x8[ucDataTmp][i]);
  39. }
  40. }
  41. /*****************************************************************************
  42. 函 数 名 : LED_P6x8Str
  43. 功能描述 : 写入一组6x8标准ASCII字符串
  44. 输入参数 : UCHAR8 ucIdxX 显示的横坐标0~122
  45. UCHAR8 ucIdxY 页范围0~7
  46. UCHAR8 ucDataStr[] 显示的字符串
  47. 输出参数 : NONE
  48. 返 回 值 : NONE
  49. *****************************************************************************/
  50. VOIDLED_P6x8Str(UCHAR8 ucIdxX,UCHAR8 ucIdxY,UCHAR8 ucDataStr[])
  51. {
  52. UCHAR8 i,j,ucDataTmp;
  53. for(j=0;ucDataStr[j]!=\0;j++)
  54. {
  55. ucDataTmp=ucDataStr[j]-32;
  56. if(ucIdxX>122)
  57. {
  58. ucIdxX=0;
  59. ucIdxY++;
  60. }
  61. LED_SetPos(ucIdxX,ucIdxY);
  62. for(i=0;i<6;i++)
  63. {
  64. LED_WrDat(F6x8[ucDataTmp][i]);
  65. }
  66. ucIdxX+=6;
  67. }
  68. return;
  69. }
  70. /*****************************************************************************
  71. 函 数 名 : LED_P8x16Str
  72. 功能描述 : 写入一组8x16标准ASCII字符串
  73. 输入参数 : UCHAR8 ucIdxX 为显示的横坐标0~120
  74. UCHAR8 ucIdxY 为页范围0~3
  75. UCHAR8 ucDataStr[] 要显示的字符串
  76. 输出参数 : NONE
  77. 返 回 值 : NONE
  78. *****************************************************************************/
  79. VOIDLED_P8x16Str(UCHAR8 ucIdxX,UCHAR8 ucIdxY,UCHAR8 ucDataStr[])
  80. {
  81. UCHAR8 i,j,ucDataTmp;
  82. ucIdxY<=1;
  83. for(j=0;ucDataStr[j]!=\0;j++)
  84. {
  85. ucDataTmp=ucDataStr[j]-32;
  86. if(ucIdxX>120)
  87. {
  88. ucIdxX=0;
  89. ucIdxY+=2;
  90. }
  91. LED_SetPos(ucIdxX,ucIdxY);
  92. for(i=0;i<8;i++)
  93. {
  94. LED_WrDat(F8X16[(ucDataTmp<4)+i]);
  95. }
  96. LED_SetPos(ucIdxX,ucIdxY+1);
  97. for(i=0;i<8;i++)
  98. {
  99. LED_WrDat(F8X16[(ucDataTmp<4)+i+8]);
  100. }
  101. ucIdxX+=8;
  102. }
  103. return;
  104. }
  105. /*****************************************************************************
  106. 函 数 名 : LED_P14x16Str
  107. 功能描述 : 写入一组14x16的中文字符串(字符串表格中需含有此字)
  108. 输入参数 : UCHAR8 ucIdxX 为显示的横坐标0~114
  109. UCHAR8 ucIdxY 为页范围0~3
  110. UCHAR8 ucDataStr[] 要显示的中文字符串
  111. 输出参数 : NONE
  112. 返 回 值 : NONE
  113. *****************************************************************************/
  114. VOIDLED_P14x16Str(UCHAR8 ucIdxX,UCHAR8 ucIdxY,UCHAR8 ucDataStr[])
  115. {
  116. UCHAR8 i,j;
  117. USHORT16 usAddress;
  118. ucIdxY<=1;
  119. j=0;
  120. while(ucDataStr[j]!=\0)
  121. {
  122. i=0;
  123. usAddress=1;
  124. while(F14x16_Idx[i]>127)
  125. {
  126. if(F14x16_Idx[i]==ucDataStr[j])
  127. {
  128. if(F14x16_Idx[i+1]==ucDataStr[j+1])
  129. {
  130. usAddress=i*14;
  131. break;
  132. }
  133. }
  134. i+=2;
  135. }
  136. if(ucIdxX>114)
  137. {
  138. ucIdxX=0;
  139. ucIdxY+=2;
  140. }
  141. if(usAddress!=1)// 显示汉字
  142. {
  143. LED_SetPos(ucIdxX,ucIdxY);
  144. for(i=0;i<14;i++)
  145. {
  146. LED_WrDat(F14x16[usAddress]);
  147. usAddress++;
  148. }
  149. LED_SetPos(ucIdxX,ucIdxY+1);
  150. for(i=0;i<14;i++)
  151. {
  152. LED_WrDat(F14x16[usAddress]);
  153. usAddress++;
  154. }
  155. j+=2;
  156. }
  157. else//显示空白字符
  158. {
  159. LED_SetPos(ucIdxX,ucIdxY);
  160. for(i=0;i<14;i++)
  161. {
  162. LED_WrDat(0);
  163. }
  164. LED_SetPos(ucIdxX,ucIdxY+1);
  165. for(i=0;i<14;i++)
  166. {
  167. LED

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

网站地图

Top