微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2440 LCD字符显示

S3C2440 LCD字符显示

时间:11-21 来源:互联网 点击:

  1. }
  2. /**************************************************************
  3. 在LCD屏幕上指定坐标点写汉字
  4. **************************************************************/
  5. voidLcd_PutHZ(unsignedintx,unsignedinty,unsignedshortintQW,unsignedintc,unsignedintbk_c,unsignedintst)
  6. {
  7. unsignedshortinti,j;
  8. unsignedchar*pZK,mask,buf;
  9. pZK=&__CHS[(((QW>>8)-1)*94+(QW&0x00FF)-1)*32];
  10. for(i=0;i<16;i++)
  11. {
  12. //左
  13. mask=0x80;
  14. buf=pZK[i*2];
  15. for(j=0;j<8;j++)
  16. {
  17. if(buf&mask)
  18. {
  19. PutPixel(x+j,y+i,c);
  20. }
  21. else
  22. {
  23. if(!st)
  24. {
  25. PutPixel(x+j,y+i,bk_c);
  26. }
  27. }
  28. mask=mask>>1;
  29. }
  30. //右
  31. mask=0x80;
  32. buf=pZK[i*2+1];
  33. for(j=0;j<8;j++)
  34. {
  35. if(buf&mask)
  36. {
  37. PutPixel(x+j+8,y+i,c);
  38. }
  39. else
  40. {
  41. if(!st)
  42. {
  43. PutPixel(x+j+8,y+i,bk_c);
  44. }
  45. }
  46. mask=mask>>1;
  47. }
  48. }
  49. }
  50. //----------------------
  51. voidLcd_printf(unsignedintx,unsignedinty,unsignedintc,unsignedintbk_c,unsignedintst,char*fmt,...)
  52. {
  53. char__LCD_Printf_Buf[256];//可以显示128个汉字或字符
  54. va_listap;
  55. unsignedchar*pStr=(unsignedchar*)__LCD_Printf_Buf;
  56. unsignedinti=0;
  57. va_start(ap,fmt);
  58. vsprintf(__LCD_Printf_Buf,fmt,ap);
  59. va_end(ap);
  60. while(*pStr!=0)
  61. {
  62. switch(*pStr)
  63. {
  64. case\n:
  65. {
  66. break;
  67. }
  68. default:
  69. {
  70. if(*pStr>0xA0&*(pStr+1)>0xA0)//中文输出
  71. {
  72. Lcd_PutHZ(x,y,(*pStr-0xA0)*0x0100+*(pStr+1)-0xA0,c,bk_c,st);
  73. pStr++;
  74. i++;
  75. x+=16;
  76. }
  77. else//英文输出
  78. {
  79. Lcd_PutASCII(x,y,*pStr,c,bk_c,st);
  80. x+=8;
  81. }
  82. break;
  83. }
  84. }
  85. pStr++;
  86. i++;
  87. if(i>256)break;
  88. }
  89. }


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

网站地图

Top