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

IIC OLED驱动

时间:11-11 来源:互联网 点击:
  1. _WrDat(0);
  2. }
  3. j++;
  4. }
  5. ucIdxX+=14;
  6. }
  7. return;
  8. }
  9. /*****************************************************************************
  10. 函 数 名 : LED_PXx16MixStr
  11. 功能描述 : 输出14x16汉字和字符混合字符串 (字符串表格中需含有此字)
  12. 输入参数 : UCHAR8 ucIdxX 为显示的横坐标0~114
  13. UCHAR8 ucIdxY 为页范围0~3
  14. UCHAR8 ucDataStr[] 要显示的中文字符串
  15. 输出参数 : NONE
  16. 返 回 值 : NONE
  17. *****************************************************************************/
  18. VOIDLED_PXx16MixStr(UCHAR8 ucIdxX,UCHAR8 ucIdxY,UCHAR8 ucDataStr[])
  19. {
  20. UCHAR8 ucTmpStr[3];
  21. UCHAR8 i=0;
  22. while(ucDataStr[i]!=\0)
  23. {
  24. if(ucDataStr[i]>127)
  25. {
  26. ucTmpStr[0]=ucDataStr[i];
  27. ucTmpStr[1]=ucDataStr[i+1];
  28. ucTmpStr[2]=\0;//汉字为两个字节
  29. LED_P14x16Str(ucIdxX,ucIdxY,ucTmpStr);//显示汉字
  30. ucIdxX+=14;
  31. i+=2;
  32. }
  33. else
  34. {
  35. ucTmpStr[0]=ucDataStr[i];
  36. ucTmpStr[1]=\0;//字母占一个字节
  37. LED_P8x16Str(ucIdxX,ucIdxY,ucTmpStr);//显示字母
  38. ucIdxX+=8;
  39. i+=1;
  40. }
  41. }
  42. return;
  43. }
  44. /*****************************************************************************
  45. 函 数 名 : LED_PrintChar
  46. 功能描述 : 将一个Char型数转换成3位数进行显示
  47. 输入参数 : UCHAR8 ucIdxX ucIdxX的范围为0~122
  48. UCHAR8 ucIdxY ucIdxY的范围为0~7
  49. CHAR8 cData cData为需要转化显示的数值 -128~127
  50. 输出参数 : none
  51. 返 回 值 : none
  52. *****************************************************************************/
  53. VOIDLED_PrintChar(UCHAR8 ucIdxX,UCHAR8 ucIdxY,CHAR8 cData)
  54. {
  55. USHORT16 i,j,k,usData;
  56. if(cData<0)
  57. {
  58. LED_P6x8Char(ucIdxX,ucIdxY,-);
  59. usData=(USHORT16)(-cData);
  60. }
  61. else
  62. {
  63. LED_P6x8Char(ucIdxX,ucIdxY,+);
  64. usData=(USHORT16)cData;
  65. }
  66. i=usData/100;
  67. j=(usData%100)/10;
  68. k=usData%10;
  69. LED_P6x8Char(ucIdxX+6,ucIdxY,i+48);
  70. LED_P6x8Char(ucIdxX+12,ucIdxY,j+48);
  71. LED_P6x8Char(ucIdxX+18,ucIdxY,k+48);
  72. return;
  73. }
  74. /*****************************************************************************
  75. 函 数 名 : LED_PrintShort
  76. 功能描述 : 将一个Short型数转换成5位数进行显示
  77. 输入参数 : UCHAR8 ucIdxX ucIdxX的范围为0~120
  78. UCHAR8 ucIdxY ucIdxY为页的范围0~7
  79. SHORT16 sData sData为需要转化显示的数值
  80. 输出参数 : none
  81. 返 回 值 : none
  82. *****************************************************************************/
  83. VOIDLED_PrintShort(UCHAR8 ucIdxX,UCHAR8 ucIdxY,SHORT16 sData)
  84. {
  85. USHORT16 i,j,k,l,m,usData;
  86. if(sData<0)
  87. {
  88. LED_P6x8Char(ucIdxX,ucIdxY,-);
  89. usData=(USHORT16)(-sData);
  90. }
  91. else
  92. {
  93. LED_P6x8Char(ucIdxX,ucIdxY,+);
  94. usData=(USHORT16)sData;
  95. }
  96. l=usData/10000;
  97. m=(usData%10000)/1000;
  98. i=(usData%1000)/100;
  99. j=(usData%100)/10;
  100. k=usData%10;
  101. LED_P6x8Char(ucIdxX+6,ucIdxY,l+48);
  102. LED_P6x8Char(ucIdxX+12,ucIdxY,m+48);
  103. LED_P6x8Char(ucIdxX+18,ucIdxY,i+48);
  104. LED_P6x8Char(ucIdxX+24,ucIdxY,j+48);
  105. LED_P6x8Char(ucIdxX+30,ucIdxY,k+48);
  106. return;
  107. }
  108. /*****************************************************************************
  109. 函 数 名 : LED_PrintImage
  110. 功能描述 : 将图像显示出来
  111. 输入参数 : UCHAR8 *pucTable 二维图像数组的地址
  112. USHORT16 usRowNum 二维图像的行数1~64
  113. USHORT16 usColumnNum 二维图像的列数1~128
  114. 输出参数 : none
  115. 返 回 值 : none
  116. *****************************************************************************/
  117. VOIDLED_PrintImage(UCHAR8*pucTable,USHORT16 usRowNum,USHORT16 usColumnNum)
  118. {
  119. UCHAR8 ucData;
  120. USHORT16 i,j,k,m,n;
  121. USHORT16 usRowTmp;
  122. m=usRowNum>>3;//计算图片行数以8位为一组完整的组数
  123. n=usRowNum%8;//计算分完组后剩下的行数
  124. for(i=0;i
  125. {
  126. LED_SetPos(0,(UCHAR8)i);
  127. usRowTmp=i<3;//计算当前所在行的下标
  128. for(j=0;j
  129. {
  130. ucData=0;
  131. for(k=0;k<8;k++)//在i组中对这8行扫描
  132. {
  133. ucData=ucData>>1;
  134. if((pucTable+(usRowTmp+k)*usColumnNum)[j]==LED_IMAGE_WHITE)
  135. {
  136. ucData=ucData|0x80;
  137. }
  138. }
  139. LED_WrDat(ucData);
  140. }
  141. }
  142. LED_SetPos(0,(UCHAR8)i);//设置剩下的行显示的起始坐标
  143. usRowTmp=i<3;//计算当前所在行的下标
  144. for(j=0;j
  145. {
  146. ucData=0;
  147. for(k=0;k
  148. {
  149. ucData=ucData>>1;
  150. if((pucTable+(usRowTmp+k)*usColumnNum)[j]==LED_IMAGE_WHITE)
  151. {
  152. ucData=ucData|0x80;
  153. }
  154. }
  155. ucData=ucData>>(8-n);
  156. LED_WrDat(ucData);
  157. }
  158. return;
  159. }

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

网站地图

Top